サーバーモニタリング · 7 min read · Oct 18, 2025

Debian SqueezeでのIcingaによるサーバーモニタリング - ページ2

3 Icingaの設定

server1.example.com:

主要なIcingaの設定ファイルは/etc/icinga/icinga.cfgで、追加の設定は/etc/icinga/commands.cfgおよび/etc/icinga/resource.cfgに保存されています。通常、デフォルトの設定で問題ありませんので、これらのファイルを変更する必要はありません。

最初に変更すべきは、通知が正しいメールアドレスに送信されるようにするために、/etc/icinga/objects/contacts_icinga.cfgの連絡先情報です:

vi /etc/icinga/objects/contacts_icinga.cfg

| [...] define contact{ contact_name root alias Falko Timme service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-service-by-email host_notification_commands notify-host-by-email email [email protected] } [...] |

localhost(= server1.example.com)のサービスチェックは/etc/icinga/objects/localhost_icinga.cfgに定義されていますので、そのファイルを見てみましょう:

cat /etc/icinga/objects/localhost_icinga.cfg

| # ローカルホストを監視するためのシンプルな設定ファイル # これは他のサーバーの設定の例として使用できます; # このホストに特有のカスタムサービスがここに追加されますが、 # icinga-common_services.cfgで定義されたサービスも適用される場合があります。 # define host{ use generic-host ; 使用するホストテンプレートの名前 host_name localhost alias localhost address 127.0.0.1 } # ローカルマシンのルートパーティションのディスクスペースをチェックするサービスを定義します。 # 空きが< 20%の場合は警告、空きが< 10%の場合は重大です。 define service{ use generic-service ; 使用するサービステンプレートの名前 host_name localhost service_description Disk Space check_command check_all_disks!20%!10% } # ローカルマシンに現在ログインしているユーザーの数をチェックするサービスを定義します。 # 20人を超える場合は警告、50人を超える場合は重大です。 define service{ use generic-service ; 使用するサービステンプレートの名前 host_name localhost service_description Current Users check_command check_users!20!50 } # ローカルマシンで現在実行中のプロセスの数をチェックするサービスを定義します。 # 250プロセスを超える場合は警告、400プロセスを超える場合は重大です。 define service{ use generic-service ; 使用するサービステンプレートの名前 host_name localhost service_description Total Processes check_command check_procs!250!400 } # ローカルマシンの負荷をチェックするサービスを定義します。 define service{ use generic-service ; 使用するサービステンプレートの名前 host_name localhost service_description Current Load check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0 } |

check_commandコマンド(check_all_disksのような)は、/etc/nagios-plugins/configディレクトリ内のNagiosプラグイン設定ファイルで定義されています:

ls -l /etc/nagios-plugins/config
root@server1:~# ls -l /etc/nagios-plugins/config  
total 144  
-rw-r--r-- 1 root root  277 May 23 04:55 apt.cfg  
-rw-r--r-- 1 root root  182 May 23 04:55 breeze.cfg  
-rw-r--r-- 1 root root  458 May 23 04:55 dhcp.cfg  
-rw-r--r-- 1 root root  909 May 23 04:55 disk.cfg  
-rw-r--r-- 1 root root 1722 May 23 04:55 disk-smb.cfg  
-rw-r--r-- 1 root root  321 May 23 04:55 dns.cfg  
-rw-r--r-- 1 root root  673 May 23 04:55 dummy.cfg  
-rw-r--r-- 1 root root  146 May 23 04:55 flexlm.cfg  
-rw-r--r-- 1 root root  159 May 23 04:55 fping.cfg  
-rw-r--r-- 1 root root  414 May 23 04:55 ftp.cfg  
-rw-r--r-- 1 root root  320 May 23 04:55 games.cfg  
-rw-r--r-- 1 root root  157 May 23 04:55 hppjd.cfg  
-rw-r--r-- 1 root root 3579 May 23 04:55 http.cfg  
-rw-r--r-- 1 root root  818 May 23 04:55 ifstatus.cfg  
-rw-r--r-- 1 root root  748 May 23 04:55 ldap.cfg  
-rw-r--r-- 1 root root  195 May 23 04:55 load.cfg  
-rw-r--r-- 1 root root 2062 May 23 04:55 mail.cfg  
-rw-r--r-- 1 root root  708 May 23 04:55 mailq.cfg  
-rw-r--r-- 1 root root  385 May 23 04:55 mrtg.cfg  
-rw-r--r-- 1 root root  567 May 23 04:55 mysql.cfg  
-rw-r--r-- 1 root root 2355 May 23 04:55 netware.cfg  
-rw-r--r-- 1 root root  420 May 23 04:55 news.cfg  
-rw-r--r-- 1 root root  491 May 23 04:55 nt.cfg  
-rw-r--r-- 1 root root  466 May 23 04:55 ntp.cfg  
-rw-r--r-- 1 root root  426 May 23 04:55 pgsql.cfg  
-rw-r--r-- 1 root root 2026 May 23 04:55 ping.cfg  
-rw-r--r-- 1 root root  511 May 23 04:55 procs.cfg  
-rw-r--r-- 1 root root  240 May 23 04:55 radius.cfg  
-rw-r--r-- 1 root root  397 May 23 04:55 real.cfg  
-rw-r--r-- 1 root root  315 May 23 04:55 rpc-nfs.cfg  
-rw-r--r-- 1 root root 5550 May 23 04:55 snmp.cfg  
-rw-r--r-- 1 root root  753 May 23 04:55 ssh.cfg  
-rw-r--r-- 1 root root  784 May 23 04:55 tcp_udp.cfg  
-rw-r--r-- 1 root root  438 May 23 04:55 telnet.cfg  
-rw-r--r-- 1 root root  155 May 23 04:55 users.cfg  
root@server1:~#

では、/etc/nagios-plugins/config/disk.cfgファイルを見てみましょう:

cat /etc/nagios-plugins/config/disk.cfg

| # 'check_disk'コマンド定義 define command{ command_name check_disk command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$' } # 'check_all_disks'コマンド定義 define command{ command_name check_all_disks command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e } # 'ssh_disk'コマンド定義 define command{ command_name ssh_disk command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$'" } #### # IPv6対応システムでIPv4接続をテストしたい場合は、これらのチェックを使用してください #### # 'ssh_disk_4'コマンド定義 define command{ command_name ssh_disk_4 command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$'" -4 } |

ご覧の通り、check_all_disksコマンドは/usr/lib/nagios/plugins/check_disk -w ‘$ARG1$’ -c ‘$ARG2$’ -eとして定義されています。/etc/icinga/objects/localhost_icinga.cfgファイルを再度見ると、check_command check_all_disks!20%!10%という行があります。Icingaは、コマンドライン引数をサービスチェックに渡すことを許可しており、感嘆符(!)で区切ります。したがって、check_command check_all_disks!20%!10%は、最初のコマンドライン引数として20%を、2番目のコマンドライン引数として10%を/usr/lib/nagios/plugins/check_disk -w ‘$ARG1$’ -c ‘$ARG2$’ -eコマンドに渡すことを意味します。最終的には/usr/lib/nagios/plugins/check_disk -w ‘20%’ -c ‘10%’ -eに変換されます。

感嘆符を含むコマンドライン引数を渡したい場合は、感嘆符をバックスラッシュでエスケープする必要があります: !

Nagiosプラグイン(つまり、Icingaがチェックを実行するために使用するツール)は、/usr/lib/nagios/pluginsディレクトリにあります:

ls -l /usr/lib/nagios/plugins
root@server1:~# ls -l /usr/lib/nagios/plugins  
total 2476  
-rwxr-xr-x 1 root root 106120 May 23 04:55 check_apt  
-rwxr-xr-x 1 root root   5369 May 23 04:55 check_bgpstate  
-rwxr-xr-x 1 root root   2242 May 23 04:55 check_breeze  
-rwxr-xr-x 1 root root  46192 May 23 04:55 check_by_ssh  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_clamd -> check_tcp  
-rwxr-xr-x 1 root root  32072 May 23 04:55 check_cluster  
-rwxr-xr-x 1 root root  44816 May 23 04:55 check_dhcp  
-rwxr-xr-x 1 root root  41392 May 23 04:55 check_dig  
-rwxr-xr-x 1 root root 119216 May 23 04:55 check_disk  
-rwxr-xr-x 1 root root   8726 May 23 04:55 check_disk_smb  
-rwxr-xr-x 1 root root  45488 May 23 04:55 check_dns  
-rwxr-xr-x 1 root root  28968 May 23 04:55 check_dummy  
-rwxr-xr-x 1 root root   3053 May 23 04:55 check_file_age  
-rwxr-xr-x 1 root root   6315 May 23 04:55 check_flexlm  
-rwxr-xr-x 1 root root  44656 May 23 04:55 check_fping  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_ftp -> check_tcp  
-rwxr-xr-x 1 root root  36584 May 23 04:55 check_game  
lrwxrwxrwx 1 root root     10 Aug 23 12:14 check_host -> check_icmp  
-rwxr-xr-x 1 root root  41136 May 23 04:55 check_hpjd  
-rwxr-xr-x 1 root root 164624 May 23 04:55 check_http  
-rwxr-xr-x 1 root root  49264 May 23 04:55 check_icmp  
-rwxr-xr-x 1 root root  34536 May 23 04:55 check_ide_smart  
-rwxr-xr-x 1 root root  15134 May 23 04:55 check_ifoperstatus  
-rwxr-xr-x 1 root root  12598 May 23 04:55 check_ifstatus  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_imap -> check_tcp  
-rwxr-xr-x 1 root root   6887 May 23 04:55 check_ircd  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_jabber -> check_tcp  
-rwxr-xr-x 1 root root  40816 May 23 04:55 check_ldap  
lrwxrwxrwx 1 root root     10 Aug 23 12:14 check_ldaps -> check_ldap  
-rwxr-xr-x 1 root root   3407 May 23 04:55 check_linux_raid  
-rwxr-xr-x 1 root root  36168 May 23 04:55 check_load  
-rwxr-xr-x 1 root root   6026 May 23 04:55 check_log  
-rwxr-xr-x 1 root root  20284 May 23 04:55 check_mailq  
-rwxr-xr-x 1 root root  36264 May 23 04:55 check_mrtg  
-rwxr-xr-x 1 root root  34440 May 23 04:55 check_mrtgtraf  
-rwxr-xr-x 1 root root  45936 May 23 04:55 check_mysql  
-rwxr-xr-x 1 root root  44688 May 23 04:55 check_mysql_query  
-rwxr-xr-x 1 root root  36616 May 23 04:55 check_nagios  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_nntp -> check_tcp  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_nntps -> check_tcp  
-rwxr-xr-x 1 root root  48720 May 23 04:55 check_nt  
-rwxr-xr-x 1 root root  46288 May 23 04:55 check_ntp  
-rwxr-xr-x 1 root root  44880 May 23 04:55 check_ntp_peer  
-rwxr-xr-x 1 root root  42224 May 23 04:55 check_ntp_time  
-rwxr-xr-x 1 root root  60912 May 23 04:55 check_nwstat  
-rwxr-xr-x 1 root root   8326 May 23 04:55 check_oracle  
-rwxr-xr-x 1 root root  40400 May 23 04:55 check_overcr  
-rwxr-xr-x 1 root root  40656 May 23 04:55 check_pgsql  
-rwxr-xr-x 1 root root  48848 May 23 04:55 check_ping  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_pop -> check_tcp  
-rwxr-xr-x 1 root root 114640 May 23 04:55 check_procs  
-rwxr-xr-x 1 root root  40624 May 23 04:55 check_radius  
-rwxr-xr-x 1 root root  40464 May 23 04:55 check_real  
-rwxr-xr-x 1 root root   9581 May 23 04:55 check_rpc  
lrwxrwxrwx 1 root root     10 Aug 23 12:14 check_rta_multi -> check_icmp  
-rwxr-xr-x 1 root root   1137 May 23 04:55 check_sensors  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_simap -> check_tcp  
-rwxr-xr-x 1 root root 127216 May 23 04:55 check_smtp  
-rwxr-xr-x 1 root root 152008 May 23 04:55 check_snmp  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_spop -> check_tcp  
-rwxr-xr-x 1 root root  36688 May 23 04:55 check_ssh  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_ssmtp -> check_tcp  
-rwxr-xr-x 1 root root  37832 May 23 04:55 check_swap  
-rwxr-xr-x 1 root root  49328 May 23 04:55 check_tcp  
-rwxr-xr-x 1 root root  38128 May 23 04:55 check_time  
lrwxrwxrwx 1 root root      9 Aug 23 12:14 check_udp -> check_tcp  
-rwxr-xr-x 1 root root  44560 May 23 04:55 check_ups  
-rwxr-xr-x 1 root root  36168 May 23 04:55 check_users  
-rwxr-xr-x 1 root root   2936 May 23 04:55 check_wave  
-rwxr-xr-x 1 root root  38152 May 23 04:55 negate  
-rwxr-xr-x 1 root root  36104 May 23 04:55 urlize  
-rw-r--r-- 1 root root   1938 May 23 04:55 utils.pm  
-rwxr-xr-x 1 root root    862 May 23 04:55 utils.sh  
root@server1:~#

プラグインが受け取ることができるコマンドライン引数を確認するには、そのプラグインを–helpスイッチで呼び出します。たとえば、check_diskプラグインの使い方を確認するには、次のように実行します:

/usr/lib/nagios/plugins/check_disk --help

この知識を持って、/etc/icinga/objects/localhost_icinga.cfgのサービスチェックを好みに合わせて変更し、/etc/nagios-plugins/configディレクトリ内のプラグイン設定を追加/変更できます。

さて、MySQLのサービスチェックを追加したいと仮定しましょう。まず、適切なプラグイン設定を見てみます:

cat /etc/nagios-plugins/config/mysql.cfg

| # 'check_mysql'コマンド定義 define command{ command_name check_mysql command_line /usr/lib/nagios/plugins/check_mysql -H '$HOSTADDRESS$' } # 'check_mysql_cmdlinecred'コマンド定義 define command{ command_name check_mysql_cmdlinecred command_line /usr/lib/nagios/plugins/check_mysql -H '$HOSTADDRESS$' -u '$ARG1$' -p '$ARG2$' } # 'check_mysql_database'コマンド定義 define command{ command_name check_mysql_database command_line /usr/lib/nagios/plugins/check_mysql -d '$ARG3$' -H '$HOSTADDRESS$' -u '$ARG1$' -p '$ARG2$' } |

使用したいコマンドはcheck_mysql_cmdlinecredです。これはMySQLのユーザー名とパスワードを引数として受け取ります(サービスチェック定義のhost_nameパラメータから取得されるホストアドレスの他に)。MySQLユーザーnagiosを使用し、パスワードはhowtoforgeにしたいので、次のセクションを/etc/icinga/objects/localhost_icinga.cfgに追加します:

vi /etc/icinga/objects/localhost_icinga.cfg

| [...] define service{ use generic-service host_name localhost service_description MySQL check_command check_mysql_cmdlinecred!nagios!howtoforge } |

Icingaを再起動する前に、MySQLユーザーnagiosをパスワードhowtoforgeで作成する必要があります:

mysql -u root -p
GRANT USAGE ON *.* TO nagios@localhost IDENTIFIED BY 'howtoforge';  
GRANT USAGE ON *.* TO [email protected] IDENTIFIED BY 'howtoforge';  
FLUSH PRIVILEGES;
quit;

(USAGE権限は「権限なし」の同義語であり、つまりnagiosユーザーはMySQLに接続できますが、データを変更したり読み取ったりすることはできません。)

変更を反映させるためにIcingaを再起動します:

/etc/init.d/icinga restart

今、IcingaのWebインターフェースでlocalhostのサービスを確認すると、MySQLのチェックが追加されているはずです:

同様に、SMTP、POP3、IMAPのチェックを追加できます。これらは接続チェックだけなので、引数は必要ありません:

vi /etc/icinga/objects/localhost_icinga.cfg

| [...] define service{ use generic-service host_name localhost service_description SMTP check_command check_smtp } define service{ use generic-service host_name localhost service_description POP3 check_command check_pop } define service{ use generic-service host_name localhost service_description IMAP check_command check_imap } |

Icingaを再起動します…

/etc/init.d/icinga restart

… そして数分後、IcingaのWebインターフェースで新しいチェックが表示されるはずです:

localhostのSSHおよびHTTPチェックが/etc/icinga/objects/localhost_icinga.cfgに定義されていないことに気付いたかもしれません。これらは/etc/icinga/objects/hostgroups_icinga.cfgファイルのhostgroupで定義されています。ホストグループを使用すると、複数のサーバーに対してサービスチェックを実行し、1回だけ定義できます。そのファイルを見てみましょう:

cat /etc/icinga/objects/hostgroups_icinga.cfg

| # 一部の一般的なホストグループ定義 # シンプルなワイルドカードホストグループ define hostgroup { hostgroup_name all alias All Servers members * } # Debian GNU/Linuxサーバーのリスト define hostgroup { hostgroup_name debian-servers alias Debian GNU/Linux Servers members localhost } # Webサーバーのリスト define hostgroup { hostgroup_name http-servers alias HTTP servers members localhost } # SSHアクセス可能なサーバーのリスト define hostgroup { hostgroup_name ssh-servers alias SSH servers members localhost } |

ご覧の通り、http-serversというホストグループとssh-serversというホストグループがあり、localhostはこれらのグループのメンバーです。ホストグループのサービスチェックは/etc/icinga/objects/services_icinga.cfgに定義されています。このファイルにはサービスチェックが含まれており、これらのチェックが適用されるホストグループをhostgroup_nameパラメータを使用して参照します:

cat /etc/icinga/objects/services_icinga.cfg

| # Webサービスが実行されていることを確認する define service { hostgroup_name http-servers service_description HTTP check_command check_http use generic-service notification_interval 0 ; > 0に設定すると再通知されます } # SSHサービスが実行されていることを確認する define service { hostgroup_name ssh-servers service_description SSH check_command check_ssh use generic-service notification_interval 0 ; > 0に設定すると再通知されます } |

ご覧の通り、SSHおよびHTTPサービスチェックはここで定義されています。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。