CentOS 5 に ZABBIX をインストールした
ZABBIX の特徴
- (Cacti ほどではないが)Nagios より見映えが洗練されている
- Nagios と異なり Web UI から管理項目を追加したりできる
- Cacti よりリモートエージェントが軽い,と思われる
- 警告通知にメールだけでなく Jabber プロトコルが使える*1
ざっくりまとめると,Nagios と Cacti を足して 2 で割った感覚です。テキスト設定ファイル指向な方には Nagios のほうが向いているかも*2。rrdtool の思想と見た目が好きな人は Cacti が向いているかも。
ZABBIX のコンポーネント
おおまかにいって以下の3つにわかれています。
zabbix-agent
- 監視エージェントzabbix-server
- 監視サーバ本体zabbix-web
- Web インタフェースによる管理 GUI
詳しくは ThinkIT の「統合監視ツールZABBIX事始め」にわかりやすい図があります。
2010-01-22 追記
zabbix-web
は zabbix-server
と同じホストにインストールする必要があると書きましたが、必ずしもそのような必要はないので削除しました。
たとえば、zabbix-server
と zabbix-web
を別ホストに立てて、同じ DB サーバを参照先として運用する、という手法もありえます。
まぁ実際には zabbix-server
と zabbix-web
を同じホストに立てる(さらに DB サーバも同じホストに立てる)のが一番運用は楽なんですが。
2010-01-22 追記おわり
また,インストール手順についてもこの記事が詳しいです。が,RHEL の epel レポジトリには zabbix が登録されているのでこれを使った手順を以下に示します。
各パッケージのインストール
パッケージ名は zabbix
が管理サーバ本体,zabbix-web
が Web による管理 GUI,zabbix-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 を追加することにします。
- Configuration ⇒ Hosts をナビゲーション
- 「CONFIGURATION OF HOSTS, GROUPS AND TEMPLATES」で「Templates」を選択
- リストの Template_Standalone の Actions に Select という項目があるのでクリックするとサブメニューが開く
- サブメニューから Triggers を選択
- 「Create Triggers」ボタンを押す
- Expression の「Insert」ボタンを押す
- Condition というサブウィンドウが開くので「Select」ボタンを押す
- ITEMS 項目が多すぎるんで Host から Template_Standalone を選択してフィルタリングする
- ITEMS リストの「ICMP ping」をクリックする
- Condition サブウィンドウの Item に Template_Standalone:ICMP ping が入る
- Function は「Last value = N」のままで OK,N は「0」のままで OK,「Insert」ボタンを押す
- これで Trigger ウィンドウの Expression 項目に「
{Template_Standalone:icmpping.last(0)}=0
」という式が入ります - Name に「Server {HOSTNAME} is unreachable*4」と記入,Severity は High あたりを選択し,「Save」ボタンを押す
Template_Standalone を利用した監視対象ホストを追加する
- Configuration ⇒ Hosts をナビゲーション
- 「CONFIGURATION OF HOSTS, GROUPS AND TEMPLATES」で「Hosts」を選択
- 「Create Host」ボタンを押す
- Name は任意(仮に foobar とします)
- Groups は任意のものを選択してもいいし,New groups で新しいグループを作ってもよいし,選択しなくても構わない(なんらかの group に属させたほうが管理は楽です)
- DNS name, IP address, Connect to は任意で
- Status は Monitored に
- 「Link with Template」の Add ボタンを押す
- 先ほど編集した Template_Standalone を選択し,Select を押す
- Save を押す
- HOSTS リストの foobar の Actions のサブメニューで Items を選択
- 使わない監視項目にチェックをいれ,「Disable selected」ボタンを押す
- 再び 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 で表示が統合されます