CentOS 5 に ZABBIX をインストールした

ZABBIX の特徴

  • Cacti ほどではないが)Nagios より見映えが洗練されている
  • Nagios と異なり Web UI から管理項目を追加したりできる
  • Cacti よりリモートエージェントが軽い,と思われる
  • 警告通知にメールだけでなく Jabber プロトコルが使える*1

ざっくりまとめると,NagiosCacti を足して 2 で割った感覚です。テキスト設定ファイル指向な方には Nagios のほうが向いているかも*2rrdtool の思想と見た目が好きな人は Cacti が向いているかも。

ZABBIX のコンポーネント

おおまかにいって以下の3つにわかれています。

  • zabbix-agent - 監視エージェント
    • written in C
    • 監視対象にインストールする
    • つまり nagios-nrpe の ZABBIX 版です
    • 別にインストールしなくても ICMP pingSNMP による管理監視が行える。が,agent の移植されているサーバだと agent を利用した方が取得できる項目も多く,設定も楽になるのでインストールすることをおすすめします
  • zabbix-server - 監視サーバ本体
    • written in C
    • requires MySQL interface
    • optionally requires SNMP library
    • 実際の監視(監査)をおこなうコンポーネントです
    • エージェントの報告を収集したり、SNMP など他のインタフェースでの監視をおこなったりします
  • zabbix-web - Web インタフェースによる管理 GUI
    • written in PHP
    • requires MySQL interface, GD
    • 上記 zabbix-server と同一ホスト*3にインストールする必要あり; 誤解を招きうるので削除しました

詳しくは ThinkIT の「統合監視ツールZABBIX事始め」にわかりやすい図があります。

2010-01-22 追記

zabbix-webzabbix-server と同じホストにインストールする必要があると書きましたが、必ずしもそのような必要はないので削除しました。

たとえば、zabbix-serverzabbix-web を別ホストに立てて、同じ DB サーバを参照先として運用する、という手法もありえます。

まぁ実際には zabbix-serverzabbix-web を同じホストに立てる(さらに DB サーバも同じホストに立てる)のが一番運用は楽なんですが。

2010-01-22 追記おわり

また,インストール手順についてもこの記事が詳しいです。が,RHEL の epel レポジトリには zabbix が登録されているのでこれを使った手順を以下に示します。

各パッケージのインストール

パッケージ名は zabbix が管理サーバ本体,zabbix-web が Web による管理 GUIzabbix-agent が監視対象にインストールする管理エージェントです。

せっかくですので全部インストールします。

$ sudo yum install zabbix zabbix-web zabbix-agent

もちろん,監視対象のサーバには zabbix-agent だけをインストールすれば OK です。

zabbix (管理サーバ)の設定

MySQL に必要なテーブルを登録します。下記の例だと zabbix というスキーマに zabbix というユーザがアクセスできる,という前提です。つまりあらかじめその辺は設定しておいて,ということで。

$ cd /usr/share/doc/zabbix-<バージョン>/dbinit

$ cat schema/mysql.sql      | mysql -uzabbix -p<パスワード> zabbix
$ cat data/data.sql         | mysql -uzabbix -p<パスワード> zabbix
$ cat data/images_mysql.sql | mysql -uzabbix -p<パスワード> zabbix

もちろん,全部一括して mysql に放り込んでもいいです。

/etc/zabbix/zabbix_server.conf が管理サーバ用の設定ファイルです。ここにもデータベースのユーザ名,パスワード,スキーマを設定しなくてはいけませんので設定します。

$ sudo vi /etc/zabbix/zabbix_server.conf

最後に zabbix を起動します。

$ sudo /sbin/service zabbix start

$ sudo /sbin/chkconfig zabbix on

ローカルで動かす zabbix-agent の設定

/etc/zabbix/zabbix_agentd.conf が agent の設定ファイルです。が,とくに編集する必要はありません。普通に起動します。

$ sudo /sbin/service zabbix-agent start

$ sudo /sbin/chkconfig zabbix-agent on

zabbix-web (管理 GUI)の設定

http://ホスト名/zabbix/index.php にアクセスするとインストール画面に移行します。色々必要な情報を入力すると,設定ファイルを書いてね,と怒られます。ダウンロードボタンを押すと,インストール画面で設定した内容の設定ファイルをダウンロードすることができますので,これをインストラクションとは違い,/etc/zabbix/zabbix.conf.php にコピーします。

Template_Standalone に ICMP ping による host alive check trigger を追加する

以上の手順で自動的にローカルで走っている zabbix-agent から情報収集・監視を行ってくれます。

せっかくですので ICMP ping を使った外部サーバの監視を行ってみます。


Template_Standalone にはもともと ICMP ping という Item が登録されています。ですからその Item を利用した Trigger を追加することにします。

  1. Configuration ⇒ Hosts をナビゲーション
  2. 「CONFIGURATION OF HOSTS, GROUPS AND TEMPLATES」で「Templates」を選択
  3. リストの Template_Standalone の Actions に Select という項目があるのでクリックするとサブメニューが開く
  4. サブメニューから Triggers を選択
  5. 「Create Triggers」ボタンを押す
  6. Expression の「Insert」ボタンを押す
  7. Condition というサブウィンドウが開くので「Select」ボタンを押す
  8. ITEMS 項目が多すぎるんで Host から Template_Standalone を選択してフィルタリングする
  9. ITEMS リストの「ICMP ping」をクリックする
  10. Condition サブウィンドウの Item に Template_Standalone:ICMP ping が入る
  11. Function は「Last value = N」のままで OK,N は「0」のままで OK,「Insert」ボタンを押す
  12. これで Trigger ウィンドウの Expression 項目に「{Template_Standalone:icmpping.last(0)}=0」という式が入ります
  13. Name に「Server {HOSTNAME} is unreachable*4」と記入,Severity は High あたりを選択し,「Save」ボタンを押す

Template_Standalone を利用した監視対象ホストを追加する

  1. Configuration ⇒ Hosts をナビゲーション
  2. 「CONFIGURATION OF HOSTS, GROUPS AND TEMPLATES」で「Hosts」を選択
  3. 「Create Host」ボタンを押す
    • Name は任意(仮に foobar とします)
    • Groups は任意のものを選択してもいいし,New groups で新しいグループを作ってもよいし,選択しなくても構わない(なんらかの group に属させたほうが管理は楽です)
    • DNS name, IP address, Connect to は任意で
    • Status は Monitored に
    • 「Link with Template」の Add ボタンを押す
      • 先ほど編集した Template_Standalone を選択し,Select を押す
    • Save を押す
  4. HOSTS リストの foobar の Actions のサブメニューで Items を選択
    • 使わない監視項目にチェックをいれ,「Disable selected」ボタンを押す
  5. 再び Configuration ⇒ Hosts で HOST リストを開き,foobar の Actions のサブメニューから Triggers を選択
    • 使わない監視項目にチェックをいれ,「Disable selected」ボタンを押す

以上の手順で Monitoring ⇒ Overview に foobar の監視項目が追加されているはずです。

2007/12/10 追記

んーなんか server 動かしてるホストの mysqld が CPU 40% くらいずっと食ってる気がするんですが。

*1:つまり,Google Talk とかに通知することも可能,なはずです。試していませんが

*2:しかもそのほうが設定ファイル自体をバージョニングしやすいですよね

*3:というより同一 DB サーバを指定する必要がある,といったほうが正しいかも

*4:他のテンプレートと記述を合わせました;そうすることで Monitoring Overview で表示が統合されます