DNSサーバの監視
/etc/nagios-plugins/config/dns.cfgにDNSサーバを監視するコマンドが定義されています。
# 'check_dns' command definition define command{ command_name check_dns command_line /usr/lib/nagios/plugins/check_dns -H www.google.com -s $HOSTADDRESS$ } # 'check_dig' command definition define command{ command_name check_dig command_line /usr/lib/nagios/plugins/check_dig -H $HOSTNAME$ -l $ARG1$ }
command_lineを参考に手動で確認します。
$ /usr/lib/nagios/plugins/check_dig -H dnsserver -l example.com DNS OK - 0.072 seconds response time (example.com. 147169 IN A 208.77.188.166)|time=0.072039s;;;0.000000 $
下記のように/etc/nagios2/conf.d/services_nagios2.cfgにサービスを定義します。
define service { hostgroup_name dns-servers service_description DNS example.com check_command check_dig!example.com use generic-service notification_interval 0 ; set > 0 if you want to be renotified }
続いて監視するサーバをhostgroupに追加します。
define hostgroup { hostgroup_name dns-servers alias DNS servers members dns }
最後に設定を再読み込みすれば、監視が始まります。
$ sudo /etc/init.d/nagios2 force-reload Reloading nagios2 monitoring daemon configuration files: nagios2. $
IMAPサーバの監視
/etc/nagios-plugins/config/mail.cfgに各種メールサーバを監視するコマンドが定義されています。
pop/imap/smtpの監視だけでなくメールがキューにどれだけ滞留しているかも監視できるようです。
IMAPは、手動で下記のように確認できます。
$ /usr/lib/nagios/plugins/check_imap -H 192.168.0.10 IMAP OK - 0.018 second response time on port 143 [* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution information.]|time=0.017523s;0.000000;0.000000;0.000000;10.000000 $ /usr/lib/nagios/plugins/check_imap -p 993 -H 192.168.0.10 -S IMAP OK - 0.325 second response time on port 993 [* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=PLAIN ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution information.]|time=0.325370s;0.000000;0.000000;0.000000;10.000000 $
メールキューの監視は、下記のように確認できます。
パーミッションの関係でnagiosをDebian-eximグループに追加する必要があります。
100件以上キューにたまっていたら警告、300件以上たまっていたらクリティカルを報告します。
$ sudo -u nagios /usr/lib/nagios/plugins/check_mailq -w 100 -c 300 -M exim exim: permission denied CRITICAL: Error code 1 returned from /usr/bin/mailq $ sudo adduser nagios Debian-exim Adding user `nagios' to group `Debian-exim' ... 終了。 $ sudo -u nagios /usr/lib/nagios/plugins/check_mailq -w 100 -c 300 -M exim OK: mailq (0) is below threshold (100/300)|unsent=0;100;300;0 $
どちらも監視対象に組み込みます。
/etc/nagios2/conf.d/services_nagios2.cfgに下記を設定します。
define service { hostgroup_name imap-servers service_description IMAP check_command check_imap use generic-service notification_interval 0 ; set > 0 if you want to be renotified } define service { hostgroup_name simap-servers service_description SIMAP check_command check_simap use generic-service notification_interval 0 ; set > 0 if you want to be renotified } define service { hostgroup_name exim-servers service_description exim mail queue check_command check_mailq_exim!100!300 use generic-service notification_interval 0 ; set > 0 if you want to be renotified }
/etc/nagios2/conf.d/hostgroups_nagios2.cfgサーバを設定します。
# A list of your imap servers define hostgroup { hostgroup_name imap-servers alias IMAP servers members localhost } # A list of your simap servers define hostgroup { hostgroup_name simap-servers alias SIMAP servers members localhost } # A list of your exim servers define hostgroup { hostgroup_name exim-servers alias EXIM servers members localhost }
DNSのときと同様、設定を再読み込みすれば監視を始めます。
mysqlサーバの監視
mysqlサーバの監視は、mysqlサーバへの接続と個別のデータベースを監視することができます。
ネットワークからの接続や監視のために接続するユーザのパスワードをファイルに書く必要があるので注意が必要です。
準備
監視に必要なユーザを登録します。
mysqlサーバへの接続を監視するだけであれば、mysqlに下記のパスワードなし&権限なしユーザを登録するとパスワードをファイルに書かなくて済みます。
このユーザで接続してもデータベースには接続できません。
$ mysql -u root -p mysql Enter password: mysql> grant usage on *.* to nagios@localhost; Query OK, 0 rows affected (0.03 sec) mysql> quit Bye $
手動確認
手動で確認します
$ sudo -u nagios /usr/lib/nagios/plugins/check_mysql -H localhost -u nagios Uptime: 4462 Threads: 1 Questions: 216 Slow queries: 0 Opens: 135 Flush tables: 1 Open tables: 17 Queries per second avg: 0.048 $
nagiosへの組み込み
/etc/nagios2/conf.d/services_nagios2.cfgに下記を設定します。
define service { hostgroup_name mysql-servers service_description mysql check_command check_mysql use generic-service notification_interval 0 ; set > 0 if you want to be renotified }
/etc/nagios2/conf.d/hostgroups_nagios2.cfgサーバを設定します。
define hostgroup { hostgroup_name mysql-servers alias mysql servers members localhost }
DNSのときと同様、設定を再読み込みすれば監視を始めます。
実際の運用では、check_mysql_queryを使っての監視が必要になるでしょう。
手動で実行すると下記のようになります。
$ /usr/lib/nagios/plugins/check_mysql_query -u root -p pass -d mysql -q "select count(*) from user" QUERY OK: 'select count(*) from user' returned 5.000000 $
check_mysql_queryは、デフォルトでコマンドが定義されていないので/etc/nagios-plugins/config/mysql.cfgを参考にコマンドを定義して、サービス、ホストグループを定義します。
パスワードをファイルに書き込む必要があるので確認するデータベースユーザの権限を最小限に絞ったうえでパスワードを書き込むファイルのパーミッションもファイルオーナ以外の権限をすべて外す必要があります。