LXC

コンテナ上で何もできなくなる「Too many open files.」

Dockerに限った話ではなくOpenVZとかLXCでも同じ方法で解決できる”はず”   fs.inotifyを弄る [crayon-5b2888f5df5d4366518346/] [crayon-5b2888f5df5e1339351247/]   what is ‘fs.inotify’ /proc インターフェース 以下のインターフェースは、inotify で消費されるカーネルメモリの総量を制限するのに使用できる: /proc/sys/fs/inotify/max_queued_events このファイルの値は、アプリケーションが inotify_init(2) を呼び出すときに使用され、対応する inotify インスタンスについてキューに入れられるイベントの数の上限を設定する。この制限を超えたイベントは破棄されるが、 IN_Q_OVERFLOW イベントが常に生成される。 /proc/sys/fs/inotify/max_user_instances 1 つの実ユーザ ID に対して生成できる inotify インスタンスの数の上限を指定する。 /proc/sys/fs/inotify/max_user_watches 作成可能な監視対象の数の実 UID 単位の上限を指定する。

コンテナ環境でcronの@rebootが動かない問題をsystemdで解決する

再再履修の微積IIのテストが今日終わりました。 今日から春休みですが研究も本格的に始まりそうであんまり嬉しくない。 やりたいことではあるけど週1、月1で大学行く必要性とは! 覚書です。     やりたいこと LXC上で動いているコンテナに起動時に任意のコマンドを実行したい     問題点 cron に @reboot をつけて @reboot date > /home/node/date.txt は動かない。 物理マシンや KVM と違って起動の仕方(ACPI関連)が違うため cronから見たときに @reboot が適応できない(憶測) 時間があるときに調べようと思います…。 参考:https://github.com/phusion/baseimage-docker/issues/280     解決方法 systemd を使ってサービス化してしまう。

ZabbixでLXC Containerを監視する

この記事は Zabbix Advent Calendar 2016 の13日目の記事です。 前回の12日目の記事は KAZ0225さんの「Zabbix APIの検証はAdvanced REST Clientが便利です!」です! 今回は LXC Container を Zabbix で監視してみようという内容です。 なんで Docker じゃなくて LXC なのかはあまり突っ込まないでください。 ちなみに11月29日に同じような記事を書いていますがリライトといった形になります。 [blogcard url=”https://luispc.com/server/2016/11/29/8746″][/blogcard]     問題 LXC のコンテナを監視するとき zabbix-agent 入れればいいんじゃね?と私は思っていました。 LXC は KVM とは違ってハイパーバイザでBIOS含めハードウェアをエミュレートせず、OSが利用するリソースを隔離することで仮想化しています。 そして LXC Container に zabbix-agent を入れてグラフを見てみるとこんなことが起こります。   引用: ZabbixにおけるDocker監視の方法 http://www.zabbix.com/img/zabconf2015_jp/presentations/04_zabconf2015_watanabe.pdf こちらのスライドは Docker に関することが書かれていますが LXC でも同じことが言えます。 では、どうするのかというと LXC には lxc コマンドが実装されています。 例に lxc-info を出すと cgroupsでリソース管理されているのを lxc-info で整形してくれていています。 lxc コマンドをパースしていって Zabbix に登録します。     Zabbix-LXC 既にいい感じのが GitHub にありました。 [blogcard url=”https://github.com/Lelik13a/Zabbix-LXC”][/blogcard]   がこれだと複数のNICを割り当てているとトラフィック量が取得できなかったり、 LLDが機能しなかったりしたのでフォークしてみた。 [blogcard url=”https://github.com/rluisr/Zabbix-LXC”][/blogcard] Zabbix3.2で動作確認済み。     機能 修正→ LLDを使ってコンテナを自動追加 修正→ lxc-infoで確認できるリソースの監視 修正→ コンテナに1つ以上のNICがある場合でもIN/OUTの転送量が取得できる(合算するように) 追加→ ディスクの使用量をパーセンテージで 追加→ Proxmoxを使用している場合にZabbixに登録される表示名にホスト名を指定(そのまんまだとid (ex 100, 101とか)で登録される) 正直デメリットもあって、LLD側のスクリプトはPHPで書いた。 いつかは Perl で書き直したい所存…。 アイテムとしてはこんな感じです。   インストール sudoコマンド、PHPの環境が必要です。   LXCホストOS上にて sudo ./install.sh を実行 [crayon-5b2888f5df886816647139/]   テンプレートのインポート [crayon-5b2888f5df891848076612/]   コンテナが登録されるまで待つ(600秒)   あとは好きなようにできるので grafana と連携すれば Zabbix をデータソースとして使用できるのでめちゃくちゃ便利   次回は nakayama_yasuhiro…