NagiosをCentOS 5.5にインストール、MySQLのプロセス監視、メール通知設定まで
サーバー監視についていろいろ調査しています。
まずは一番有名どころのNagiosをためしてみました。
Nagiosは、ヤフオクやmixiでも使われてらしく実績は十分です。
設定はテキストですが、テンプレートも用意されているのでそれほど難しくはありません。
Nagios以外では、ZABBIXも気になるので、またの機会に調べてみようと思っています。
では、早速CentOS 5.5にNagiosをインストールしていきます。
公式?のインストールガイドはこちら:
http://nagios.sourceforge.net/docs/3_0/quickstart.html
今回はyumを使用してインストールしました。ほぼ以下のサイトを参考にしています:
http://docs.cslabs.clarkson.edu/wiki/Install_Nagios_on_CentOS_5
前提条件
Fedoraのインストールガイドを見ると前提条件としてソフトウェアがリストされています。
yumでインストール
# yum install httpd php gcc glibc glibc-common gd gd-devel
Apacheは自動起動をセットし、インバウンドの80番ポートを開けます
# chkconfig --levels 345 httpd on # iptables -I INPUT -p tcp --dport 80 -j ACCEPT # /etc/init.d/iptables save # /etc/init.d/iptables restart
リポジトリの追加
公式ガイドでは、make installしていますがyumでインストールしてみました。
Nagiosはデフォルトのリポジトリには含まれてません。rpmforgeをリポジトリ追加
32bit版
# rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
64bit版
# rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
NagiosおよびNagiosプラグインのインストール
yumでインストール
# yum install nagios nagios-plugins nagios-plugins-setuid
Nagios Web管理画面にアクセスするユーザIDとパスワードを作成します。
# htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
Nagiosを起動します。
# /etc/init.d/nagios start nagios is stopped Configuration validation failed [FAILED]
失敗しました。以下のサイトを見るとSELinuxが有効になっていると起動しないそうです。
http://www.harukari.net/index.php/Nagios%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
SELinusを無効にして、もう一度
# /etc/init.d/nagios start nagios is stopped Starting nagios: [ OK ]
無事起動
次に、Apacheを再起動しておきます。
# /etc/init.d/httpd restart
インストールの確認
http://
バージョンは3.2.3がインストールされました。
Nagiosの設定方法
Nagiosの設定の基本は以下のサイトが参考になります。
http://www.marsandares.jp/tools/nagios-config.html
MySQLを監視する
MySQL監視用のプラグイン
インストールされたNagiosプラグインは以下のディレクトリにあります。
ls /usr/lib/nagios/plugins/ check_apt check_ide_smart check_ntp check_ssmtp check_breeze check_ifoperstatus check_ntp_peer check_swap check_by_ssh check_ifstatus check_ntp_time check_tcp check_clamd check_imap check_nwstat check_time check_cluster check_ircd check_oracle check_udp check_dhcp check_jabber check_overcr check_ups check_dig check_ldap check_pgsql check_users check_disk check_ldaps check_ping check_wave check_disk_smb check_load check_pop contrib check_dns check_log check_procs eventhandlers check_dummy check_mailq check_radius negate check_file_age check_mrtg check_real plugins.pm check_flexlm check_mrtgtraf check_rpc urlize check_fping check_mysql check_sensors utils.pm check_ftp check_mysql_query check_simap utils.py check_game check_nagios check_smtp utils.pyc check_hpjd check_nntp check_snmp utils.sh check_http check_nntps check_spop check_icmp check_nt check_ssh
Nagiosプラグインをインストール後にデフォルトで含まれるMySQL用のプラグインはcheck_mysqlとcheck_mysql_queryです。
check_mysql
プロセス監視
http://nagiosplugins.org/man/check_mysql
check_mysql_query
SQLを実行して確認
http://nagiosplugins.org/man/check_mysql_query
check_mysqlを設定してみる
MySQLの設定はこちらのブログを参考にさせていただきました。
http://d.hatena.ne.jp/kaorumori/20080607/1212863599
MySQLに監視用ユーザを追加
mysql>create database nagios; mysql>GRANT SELECT ON nagios.* TO nagios@localhost IDENTIFIED BY 'password';
commands.cfg
# vi /etc/nagios/objects/commands.cfg
commands.cfgの最後にcheck_mysqlコマンドを追加
# 'check_mysql' command definition define command{ command_name check_mysql command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ }
localhost.cfg
# vi /etc/nagios/objects/localhost.cfg
define service{ use local-service ; Name of service template to use host_name localhost service_description MySQL check_command check_mysql!nagios!password }
nagios再起動
設定をチェックして問題無ければNagiosを再起動
# nagios -v /etc/nagios/nagios.cfg # /etc/init.d/nagios restart
メール通知設定
メール通知はcontacts.cfgに設定します。
# vi /etc/nagios/objects/contacts.cfg
emailを実際に通知するメールアドレスに書き換えます。
define contact{ contact_name nagiosadmin ; Short name of user use generic-contact ; Inherit default values from generic-contact template (defined above) alias Nagios Admin ; Full name of user email nagios@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ****** }
設定をチェックして問題無ければNagiosを再起動
# nagios -v /etc/nagios/nagios.cfg # /etc/init.d/nagios restart
チェック間隔と試行回数の設定について
localhost.cfgに追加したMySQLのservice設定はtemplates.cfgのlocal-serviceの設定を参照します。
define service{ name local-service ; The name of this service template use generic-service ; Inherit default values from the generic-service definition max_check_attempts 4 ; Re-check the service up to 4 times in order to determine its final (hard) state normal_check_interval 5 ; Check the service every 5 minutes under normal conditions retry_check_interval 1 ; Re-check the service every minute until a hard state can be determined register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE! }
normal_check_interval
コマンドの実効間隔、デフォルト 5分ごと
retry_check_interval
コマンドが失敗した後の再試行間隔、デフォルト 1分
max_check_attempts
ここに指定した回数コマンドが失敗した場合通知される、デフォルト 4回
メール通知の確認
通知メールが送信されない場合は以下をチェックしてください。
デフォルトの通知時間帯はworkhours
templates.cfgのlinux-serverの設定を見ると
define host{ name linux-server ; The name of this host template ... notification_period workhours ; Linux admins hate to be woken up, so we only notify during the day ... }
とあります。検証では24x7に変更して置いた方が良さそうです。
フラッピング検知が有効だとすぐにメールは送信されない
デフォルトはフラッピングの検知flap_detection_enabledが有効になっています。
define host{ name generic-host ; The name of this host template ... flap_detection_enabled 1 ; Flap detection is enabled ... }
flap_detection_enabledをメールの送信テストの際は0にして置いた方が良さそうです。
フラッピングとは正常と異常が頻繁に入れ替わることで、それを検知して大量の通知が送信されないようにする機能のようです。
詳しくはこちら:
http://nagios.sourceforge.net/docs/3_0/flapping.html
参考にさせていただいたサイト
- http://nagios.sourceforge.net/docs/3_0/quickstart.html
- http://docs.cslabs.clarkson.edu/wiki/Install_Nagios_on_CentOS_5
- http://www.marsandares.jp/tools/nagios-config.html
- http://d.hatena.ne.jp/kaorumori/20080607/1212863599
- http://www.fireproject.jp/feature/nms/nagios/intro.html
- http://network.station.ez-net.jp/server/system/monitoring/nagios/install/index.asp
- http://nagios.sourceforge.net/docs/3_0/flapping.html