2013年1月18日金曜日

Zabbixでマシンの稼働状況監視をしてみる

ネットワーク屋さんやSI屋さんが設置する、導入システムの稼働状況監視(障害検知)には、いくつかのシステムがあるようだけれど、今回、職場の情報処理センターに導入予定のZabbixを手元で動かして試してみることにした。

Zabbixは1.x系と2.x系があるようだけれど、今回ははじめてなのでいま最新の2.0.4を使うことにした。

サーバが情報を集約し、PHPを使ったWebインタフェースでリアルタイムに情報を見るというしくみ。情報収集にはSNMPを使ったりサービスポートを叩いたりといった原始的なものから、システムの稼働状況を詳細に計測してサーバからの問合せに応える「agent」とよばれるプログラムをインストールしておくという方法もある。

今回は、手元のMac miniでサーバを動かし(グローバルアドレスが振られている)、職場のNAT内のWindowsマシンやプリンタ、WiFiルータなどと、個人的に契約しているさくらのVPSを一括でみることを考えた。

さくらのVPSは、ISOイメージさえあれば、それを一時的なアカウントでアップロードして、Java経由の仮想コンソールでインストール作業を完了することができるので、OSはたいていのものが使える。僕はLinuxに慣れていないので、以前からFreeBSDを使ってきた。いまは9.1が動いている。

zabbix2のagentは、もちろんFreeBSD用もあり、portsに入っている。PKGNGではそのまま入るところにまだなっていないので、/usr/ports/net-mgmt/zabbix2-agent以下でmake install distcleanすることになる。/usr/local/etc/zabbix2/zabbix_agentd.confに、サーバを動かすマシンのIPアドレスを設定し、/etc/rc.localからでも起動スクリプトを動かしてやればおしまい。

サーバを動かすMacでは、MacPortsを使っているので、port install zabbix2で入れることになった。

ところが、昨日現在での最新状態では、アカウントzabbix、グループzabbixが作成されないため、インストールスクリプトのなかでchownするところで落ちてしまう。しかたがないので、dsclコマンドでアカウントとグループを作り、再度インストールして切り抜けた。

ただ、インストール後のMySQL5の準備(データベースの作成、テーブルの作成、データの挿入)などはすべて手作業になるので、portコマンド実行後に表示される長い説明を読み飛ばさないように注意する必要がある。あと、PHPのモジュールもいろいろと必要なので、Webインタフェースで最初の設定作業をするときのPHPの診断表示に合わせて足りないモジュールや/opt/local/etc/php5/php.iniの書き換えと、カーネルパラメータの設定(共有メモリを大きくとるように設定変更する)は必要だ。カーネルパラメータの値はどの値が適切なのかよくわからなかったが、とりあえずFreeBSD用の値と同じで動いている。FreeBSDと違うのは、/etc/sysctl.confというファイルではなく、sysctl -wコマンドで直接データベースの値変更を行うところ。

なお、ZabbixのWebインタフェースで最初にZabbix Serverを追加するような説明が多いのでそのようにすると思うけれども、MacPortsの起動スクリプトではzabbix_agentdは起動されないので、障害として報告されてしまう。エージェント監視を無効にするか、エージェントも起動するように手を入れておくことが必要になるので注意。

最後に、Windowsについて。Windowsのエージェントをサービスとして登録し、起動するにはコマンドプロンプトを使うが、管理者権限でなければならないので、コマンドプロンプトを管理者権限で起動することを忘れずに。また、zabbix_agentd.confファイルもC:\に置くことになっているので、これも管理者権限がないとできない。設定ファイルの内容は、たった1行、「Server=サーバのIPアドレス」だけで十分なはず。

あともうひとつ罠は、Windows Firewallの設定で、zabbix_agentd.exeの通信許可を手動で行わなければならないということ。コントロールパネルから、Windowsファイアーウォールを開いて、設定をすれば、Zabbixサーバと通信ができて、通信障害が出ることはなくなる。

とりあえずいまのところはこんな感じ。WiFiルータの状態監視もしたいのだが、SNMPトラップをどうみるかは、まだ検討中というところ。