ZabbixでLXC Containerを監視する

目次1 問題2 Zabbix-LXC2.1 機能2.2 インストール この記事は 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-5b04584781524294146063/]   テンプレートのインポート [crayon-5b04584781535284137548/]   コンテナが登録されるまで待つ(600秒)   あとは好きなようにできるので grafana … 続きを読む ZabbixでLXC Containerを監視する