開発
統合監視ソフトウェア ZABBIX
beko
少し前に、仕事でネットワーク機器やサーバの監視のために、オープンソースの統合監視ソフトウェア “ZABBIX” について調べたり、実際に導入したりする機会がありました。
このZABBIXでは具体的にどんな事が出来るのかを挙げてみると、
- CPU・メモリ・ハードディスクなどのリソース監視
- ネットワーク使用状況の監視
- プロセスの監視
- ポートの監視
- ログの監視
- ファイルの監視
- SNMPによるネットワーク機器の監視
- 監視情報のマップ・グラフ化
- 監視情報のデータベース化
- 障害検知・通知
などがあります。
これらの監視設定は基本的にWebインターフェースを通して行うことが出来ます。
また、動作要件は、以下の通りです。
- Apache (1.3.2以上)
- PHP (4.0以上) および PHP GD Module (2.0以上)
- MySQL (3.22以上) または PostgreSQL (7.0.2以上)
仕事では FreeBSD 上にインストールし、データベースには PostgreSQL を使用しました。
今回はZABBIXのFreeBSDへのインストール方法を紹介します。
# cd /usr/ports/net-mgmt/zabbix/
# make install clean
次にPostgreSQLにデータベース名zabbix、ユーザー名zabbixでデータベースを作成し、初期データとスキーマをインポートします。
# cd /usr/local/share/zabbix/create/schema
# cat postgresql.sql | psql -U zabbix zabbix
# cd ../data
# cat data.sql | psql -U zabbix zabbix
# cat images_pgsql.sql | psql -U zabbix zabbix
# psql -U zabbix zabbix
psql> alter user zabbix with password ‘xxxxxxxx’;
psql> \q
続いてPHPの設定の編集です。
# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
# chmod 644 /usr/local/etc/php.ini
# vi /usr/local/etc/php.ini
max_execution_time =300
date.timezone = Asia/Tokyo
ZABBIX Serverをシステム起動時に自動的に起動するように設定します。
# vi /etc/rc.conf
zabbix_server_enable=”YES”
そして次はZABBIX Serverの設定です。各種設定は適宜自分の環境に置き換えてください。
# cp /usr/local/etc/zabbix/zabbix_server.conf.sample
/usr/local/etc/zabbix/zabbix_server.conf
# chmod 644 /usr/local/etc/zabbix/zabbix_server.conf
# vi /usr/local/etc/zabbix/zabbix_server.conf
ListenIP=127.0.0.1
Timeout=30
PidFile=/var/run/zabbix/zabbix_server.pid
LogFile=/var/log/zabbix/zabbix_server.log
FpingLocation=/usr/local/sbin/fping
DBName=zabbix
DBUser=zabbix
DBPassword=xxxxxxxx
PIDファイルの保存先とログの保存先のディレクトリを作成します。
# mkdir /var/run/zabbix
# mkdir /var/log/zabbix
# chown zabbix:zabbix /var/run/zabbix
# chown zabbix:zabbix /var/log/zabbix
Apacheを使ったWebベースの設定インターフェースを使用するため、Apacheのドキュメントルート以下にZABBIXのPHPファイルをコピーします。path_to_document_rootという部分を各自ドキュメントルートのパスに置き換えてください。
# mkdir /path_to_document_root/zabbix/
# cp -R /usr/local/share/zabbix/php/* /path_to_document_root/zabbix/
# chown -R www:www /path_to_document_root/zabbix
必要に応じてAapacheの設定を編集します。
# vi /usr/local/etc/apache22/httpd.conf
DirectoryIndex index.html index.shtml index.cgi index.php
各種デーモンを起動します。
# /usr/local/etc/rc.d/postgresql start
# /usr/local/etc/rc.d/apache22 start
# /usr/local/etc/rc.d/zabbix_server start
コマンドラインでの操作はここまでです。ウェブブラウザでhttp://(hostname)/zabbix/にアクセスしてセットアップウィザードに従って進めばインストールは完了です。ZABBIXの初期アカウントは、
USER : Admin
PASS : zabbix
になっています。セキュリティのために初回ログイン後には変更してください。
FreeBSDのPortsからインストールした場合、システム起動時にZABBIXが起動しないという問題に直面したので解決策をTipsとして紹介したいと思います。Portsからインストールすると自動的に/usr/local/etc/rc.d以下に起動スクリプトがインストールされるのですが、システム起動時にPostgreSQLよりも先にZABBIX
Serverが起動してしまい、PostgreSQLが起動していない状態でZABBIX Serverが起動するとZABBIX
Serverが終了してしまうので、結果として自動的に起動しませんでした。多少強引な解決策ではありますが、/usr/local/etc/rc.d以下に、例えば「a_start_zabbix.sh」と言ったような名前のスクリプトを作り、そのスクリプトの中でZABBIX
Serverを起動するようにすればPostgreSQLよりも後にZABBIX
Serverが起動することが分かりました。rcorderコマンドを使って起動スクリプトの起動する順番を調べたら、スクリプトファイル名のアルファベット逆順に起動していくということが分かり、この方法を試しました。
ZABBIXを使うとサーバやネットワーク機器の状態をそれぞれ監視出来、それらを一元的に管理することが出来ます。
システムやネットワークの状態を可視化し、状態を常に把握しておくことは管理をする上で非常に重要です。なのでこういった統合監視ソフトウェアなどを用いて管理をしてみてはいかかでしょうか?
担当:金子(間違いや不十分なところがあればご指摘頂けると幸いです)
「可視化そこセキュリティ強化」という考え方が世の中にはあります。製品が吐き出すログを見なければ役には立たないものですので・・・目から鱗、そんなInterop2009でした。