ブログ検索

メタ情報
RSS

サーバが正常に稼働しているか監視をするためのツールはいろいろありますが、多数のサーバの監視を一括管理できて、さらに設定のインターフェースがウェブで用意されているようなツール(フリーウェアで)はないもんかねと探してみたら、これがありました。

見つけたのは ZABBIX というラトビアの会社が開発しているソフトです。

公式サイト Homepage of ZABBIX
非公式日本語サイト ZABBIX-JP
Gigazine フリーのサーバ、ネットワークなどの総合監視ソフト「ZABBIX」日本語版
ThinkIT 統合監視ツールZABBIX事始め

概要。ZABBIX-JP-ダウンロードのパッケージ名に基づくと、監視用サーバに ZABBIX の Server を導入して、監視対象には Agent を導入します。Agent は各種情報(かなり充実している内容)を集めて Server に伝えてきます。Server の各種設定をウェブで行うためのパッケージは web。Windows/Linux/Unix といった環境で動きます。異なる環境の組み合わせでもいいようです。

上記のダウンロードページでは最新版ではないものの CentOS4.4 用のrpmを配布していたので、これは好都合!と思ったけど、rpmを使った場合の詳細なドキュメントを見つけることができずに最初はダウンロードだけして途方に暮れました。DBの準備などは手動でやる必要があります。そこで、ThinkIT の記事を参考に穴埋めしていってrpm版で動かすことができました。

※2008/05/12現在はCentOS5用として1.4.5系のRPMが提供されています。

監視についてもとりあえずはお手軽に、監視対象に Agent を仕込まない方法もあるということなので、動作を確認してみました。Agent を使わない場合の監視タイプは Simple Check といいます。この場合もドキュメントが少ないようで試行錯誤にむしろ時間を使ったような・・・。まあフリーウェアはいつもこうですがな。

で、顛末は長くなりそうなので、後半へ続く。


■ ZABBIX1.1.7 を rpm で CentOS4.4 にインストール
■ ※ZABBIX1.4.5 & CentOS5系の場合を追記(2008/05/12)
■ コンパイル等はせずパッケージ管理を利用する
■ Agent は使わないで Simple Check の設定をしてみる

基本的にこの記事の進行に沿って進めた。
ThinkIT 統合監視ツールZABBIX事始め
実は連載の最後の記事にrpm版の場合の手順も載ってはいるものの、もうちょっと情報を足しておきたい状態なので、自分の備忘録的にこれを書いた。

また、間違った情報を垂れ流している可能性は非常に高いので、なにとぞご了承ください。

以下、参照ページへのリンクと、見出しごとに手順の違いを記述。

ThinkIT記事 : ZABBIXサーバのインストール 2/3

■ZABBIXのソースファイルを入手

ソースは不要なのでZABBIX-JP-ダウンロードよりこれらのパッケージを入手。Agent もとりあえず入れておく。

それぞれi386とx86_64版があります。

— for CentOS 4.4
zabbix-1.1.7-1.el4.i386.rpm
zabbix-agent-1.1.7-1.el4.i386.rpm
zabbix-web-1.1.7-1.el4.i386.rpm

— for CentOS 5.0
zabbix-1.4.5-1.el5.i386.rpm
zabbix-agent-1.4.5-1.el5.i386.rpm
zabbix-web-1.4.5-1.el5.i386.rpm

■ZABBIXサーバのコンパイルとインストール

DB には mySQL を使う方針。
コンパイルはしないので、とりあえず
# rpm -ivh zabbix-*
とやってみると依存関係にあるパッケージの不足が判明。
yum を使って導入。
環境によって導入パッケージの状況は異なると思います。
(mySQLだけは特に検出されなくても入れる必要があるとのこと。)
下記は私が試みた際の不足の例。

— for CentOS 4.4 & ZABBIX 1.1.7
・gnutls
・net-snmp-libs
・fping (rpmforgeより入手)
・php-gd
・php-mysql

— for CentOS 5.2 & ZABBIX 1.4.5
・fping is needed by zabbix-1.4.5-1.el5.i386 (rpmforgeより入手)
・libiksemel.so.3 is needed by zabbix-1.4.5-1.el5.i386 (rpmforgeより入手)
 →パッケージ名は iksemel
・php-bcmath is needed by zabbix-web-1.4.5-1.el5.i386
・php-gd is needed by zabbix-web-1.4.5-1.el5.i386

yum に標準のCentOSのリポジトリ以外にも rpmforge 等の非公式リポジトリを追加しておくと何かと助かる場面も多い。
追加の方法は私の場合は DAG: Frequently Asked Questions を参考にした。
上記が実行できない場合はcentossrv.com(RPMforgeリポジトリ導入)が参考になった。
※公式以外のリポジトリの利用は自己責任でお願いします。
これで必要パッケージの全てを yum で入手できる。
その後あらためて rpm で ZABBIX をインストール。

■ZABBIXサーバ用ユーザの作成

rpm 導入時に自動で作成されているので作業は不要。

■データベースの作成と初期データのインポート

これは記事のように進める。mySQLを稼働させてから作業する。
rpm で導入した場合の mySQL 用のスキーマと初期データはファイルは下記のパスにある。

— for CentOS 4.4 & ZABBIX 1.1.7
/usr/share/doc/zabbix-1.1.7/mysql/
/usr/share/doc/zabbix-1.1.7/data/

— for CentOS 5.0 & ZABBIX 1.4.5
スキーマ
/usr/share/doc/zabbix-1.4.5/dbinit/schema/mysql.sql
初期データ
/usr/share/doc/zabbix-1.4.5/dbinit/data/data.sql
/usr/share/doc/zabbix-1.4.5/dbinit/data/images_mysql.sql

※私の環境ではmySQLのroot用パスワードはデフォルトで設定されていなかったので、最初のログインは mysql -uroot だけでした。
こんなかんじです。もちろんきちんとパスワードを設定するべきでしょう。

# mysql -uroot
mysql> create database zabbix;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by ‘password’;
mysql> flush privileges;
mysql> quit
# cd /usr/share/doc/zabbix-1.4.5/dbinit/
# cat ./schema/mysql.sql | mysql -uroot zabbix
# cat ./data/data.sql | mysql -uroot zabbix
# cat ./data/images_mysql.sql | mysql -uroot zabbix

ThinkIT記事 : ZABBIXサーバのインストール 3/3

■設定ファイルと起動スクリプト

/etc/zabbix/zabbix_server.conf の書き換えのみ行う。
その他の各種ファイルは rpm 導入時に作成されている。

pidファイルとログファイル用のディレクトリ も既に作成済みのため作らない。

起動スクリプトの作成と編集も不要。

ZABBIXサーバの起動

# /etc/init.d/zabbix start
Starting zabbix server: [ OK ]

■Webフロントエンドのインストール

インストールは最初にまとめて行っているので不要。ここでは設定を行う。

※ZABBIX 1.1.7 と 1.4.5 では設定の方法が大きく異なるので注意。

— for CentOS 4.4 & ZABBIX 1.1.7
Webフロントエンドのデータベース接続設定 は
/usr/share/zabbix/include/db.inc.php を編集する。

— for CentOS 5.0 & ZABBIX 1.4.5
db.inc.php は編集せずに、ウェブでのウィザードにより設定を行う。
そのために、まず後述するようにzabbixの設定を有効にするためhttpdの再起動を行い、http://ホスト名/zabbix/ というURLでウェブから接続することでウィザードが表示される。

3. Check of pre-requisites
ウィザードではphp自体の設定についてもチェックされる。
ZABBIX 3. Check of pre-requisites

このエラーに対応する。

# vi /etc/php.ini
;date.timezone = → date.timezone = Asia/Tokyo
max_execution_time = 30 → max_execution_time = 300
# /etc/init.d/httpd reload
httpd を再読み込み中: [ OK ]

これらの操作の後に retry ボタンを押すとチェックが通る。
ZABBIX 3. Check of pre-requisites PASSED

4. Configure DB connection
DBの設定は必要な情報を入力して Test connection ボタンを押し Ok となればパス。
ZABBIX 4. Configure DB connection PASSED

6. Install
ZABBIX 6. Install fail
ちょっと面倒ですが、このような手順で。
・Save configuration file ボタンを押して zabbix.conf.php をダウンロードする。
・zabbix.conf.php をサーバの/usr/share/zabbix/conf/zabbix.conf.php としてアップロードする。
・ファイルのオーナー等も整えておくとよいかもしれません。
・Retry ボタンを押す

問題がなければ通ります。
ZABBIX 6. Install PASSED

その後 7.Finish となりサーバのインストールはこれで終了。気になる点としてウィザード中も表示されているのだが、なぜかページの上部に

# This file is a place-holder. When you run through the zabbix # web setup, a proper configuration file should be generated # for you to drop in this location. # This file is a place-holder. When you run through the zabbix # web setup, a proper configuration file should be generated # for you to drop in this location.

のような文字列がある。これはZABBIXの出力全てに付加されてしまうので、絶対に消しておく。HTMLなら文字列がうぜええ!程度で済むが、グラフなど画像の出力の際には当然異常なデータとなり問題となる。

参考:ZABBIX-JP フォーラム – ZABBIXのインストール / グラフの表示がされない

設定ファイル冒頭のコメント行をざっくりと削除する。

#vi /usr/share/zabbix/conf/zabbix.conf.php
↓コメント行を削除しましょう -----
# This file is a place-holder. When you run through the zabbix
# web setup, a proper configuration file should be generated
# for you to drop in this location.
# This file is a place-holder. When you run through the zabbix
# web setup, a proper configuration file should be generated
# for you to drop in this location.
↑コメント行を削除しましょう -----

rpm で導入した場合、フロントエンドのWEBコンテンツは /usr/share/zabbix に配備されている。このディレクトリに対するエイリアス /zabbix が /etc/httpd/conf.d/zabbix.conf という apache用の個別設定ファイル にて指定されている。そのままであれば ZABBIX へのアクセスは http://ホスト名/zabbix というURLとなる。

httpd を restart なり reload なりして、設定を有効にする。

# /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

設定に問題がなければ http://ホスト名/zabbix にアクセスが可能となる。
記事では監視サーバ自身を操作しているのでホスト名は localhost となっている。

導入完了。


■ ここからは記事によらない試行錯誤ゾーン

■ZABBIX の監視設定について

詳しいことは記事を参照するとして、ZABBIX の監視設定というのはシンプルに書いてみると・・・

ホスト(監視対象ホスト)
 └アイテム(タイプとキーによる実行する監視の定義)
   └トリガー(検知したいアイテムの状態を条件式として定義)
     └アクション(トリガー発生時の処理の定義、メール等)

となっていて、ホストからアクションに至るまでに加え、ユーザー情報やユーザーに対するメディア(メール情報等)といった項目を細やかに定義しないと、異常検知→管理者にメールを送信・・ということにならない。アクションではメール送信だけでなくコマンド実行もできるようなので、運用によってはなんでもできてしまうのかもしれない。

■Simple Check について

ZABBIX の特徴である Agent を使わない、シンプルな活性チェック機能。か?

■Simple Check を定義してみる

監視の各種定義の流れは記事参照、ここではピンポイントにアイテムとトリガーについて。

・アイテムのタイプとキー

アイテムのタイプ において「Simple Check」を選択し、キー を定義する。
キー はフォームにある[検索を表示]からも拾えるのだが、例えばウェブサーバであれば

http<,port>
のような状態で入力される。このままではNGなので、ポート番号を書き換えて

http,80
とするとOKになる。

説明によればhttpサーバがダウンなら0、正常なら1を返す。
Checks if HTTP (WEB) server is running and accepting connections 0 – HTTP server is down 1 – HTTP server is running

ZABBIX アイテム

・トリガーの条件式

ダウンを検知したいので、「直近のアイテムの値が(ダウンを示す)0と等しい」という条件式を定義すると・・・

{ホスト定義名称:http,80.last(0)}=0
となる。

ZABBIX トリガー

※devcosというのはうちのホストの定義名称です・・

■結果

その他の設定も行った状態で、監視対象ホストのhttpサーバを落とすと正常に検知し、メールでお知らせができるようになった。

設定が細分化されているし条件式などを作ることになるので把握するまでが一苦労かもしれない。それだけ柔軟な監視ができるということでもあるので、目的においてはメリットなのだろう。これだけの機能をもったツールがフリーウェアというのは素晴らしい。開発者や情報提供に感謝。

1件のコメント