CentOS6 Nagios基本設定

スポンサーリンク

フリーのネットワーク監視ソフト、Nagiosをインストールします。

世の中には有償のネットワーク監視ソフトが多数存在しており、それらの価格は軽く100万を越えるものもたくさん ありますが私個人の一番のオススメ監視ソフトはNagiosです。これに慣れてしまえば他の何百万とするソフトを購入するのはもったいなく思えてきます。オープンソースであり無保証というのが欠点ではありますが、下手の有償ソフトよりもよくできておりNagiosの他にcactiをインストールしておけばほぼ事足りるかと思います。

■Nagios インストール

# yum install nagios nagios-plugins-all
# rpm -qa | grep nagios
nagios-common-3.4.1-2.el6.i686
nagios-3.4.1-2.el6.i686
その他nagiosプラグイン多数


多数のパッケージが一気にインストールされます。Nagiosは設定自体はCLIから行いますが閲覧はブラウザからとなりますので HTTPDの設定を変更することになります。Nagiosのインストールとともに/etc/httpd/conf.d/nagios.confがインス トールされます。内容は以下の通り。

# cat /etc/httpd/conf.d/nagios.conf

#ScritpAlias /nagios/cgi-bin/ "/usr/lib/nagios/cgi-bin/"
Alias /nagios/cgi-bin/ "/usr/lib/nagios/cgi-bin/"

<Directory "/usr/lib/nagios/cgi-bin/">
#  SSLRequireSSL
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /etc/nagios/passwd
   Require valid-user
</Directory>

Alias /nagios "/usr/share/nagios/html"

<Directory "/usr/share/nagios/html">
#  SSLRequireSSL
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1


上記のように管理画面にはApacheのBasic認証がかかりますので、これの登録を行います。

# htpasswd -c /etc/nagios/passwd nagiosadmin
New password: **********
Re-type new password: **********
Adding password for user nagiosadmin

■Nagiosの設定

nagiosには複数の設定ファイルがインストールされ、それぞれのコンフィグファイルが連携して動く仕様となっており少々ややこしいです。設定ファイル一覧を下記にまとめてみました。

/etc/nagios/nagios.cfg nagiosのメイン設定ファイル。
/etc/nagios/objects/commands.cfg チェックコマンド一覧。実際に実行されるのはnagios plugin。
/etc/nagios/objects/contancts.cfg 異常が発生した際の通知先を指定。
/etc/nagios/objects/timeperiods.cfg 通知の時間帯を指定。
/etc/nagios/objects/templates.cfg 監視対象ホストや監視サービスに関する監視間隔や通知時間などのテンプレート一覧。
/etc/nagios/objects/任意ファイル名 /etc/nagios/nagios.cfg にてファイル名を指定。登録するホスト、サービス一覧

上記にも書いたようにNagiosのメイン設定ファイルは/etc/nagios/nagios.cfgです。まず、このファイルを編集して監視対象を登録するファイルを指定します。

# vi /etc/nagios/nagios.cfg

# Definitions for monitoring the local (Linux) host
#cfg_file=/etc/nagios/objects/localhost.cfg

# Definitions for monitoring a Windows machine
#cfg_file=/etc/nagios/objects/windows.cfg

# Definitions for monitoring a router/switch
cfg_file=/etc/nagios/objects/network.cfg

# Definitions for monitoring a server
cfg_file=/etc/nagios/objects/server.cfg

私の場合、ネットワーク機器とサーバ機器でファイルを分割しました。ファイル別々が面倒な場合は一つのファイルにまとめることも可能です。それぞれのファイルに監視対象を登録していきますが登録方法はどちらも同じなのでnetwork.cfgのみ下記に示します。

# vi /etc/nagios/objects/network.cfg
define host{
        use             generic-switch
        host_name       switch1
        alias           フロアスイッチ
        address         192.168.0.1
}

define host{
        use             generic-switch
        host_name       firewall1
        alias           ファイアウォール
        address         192.168.0.2
        parents         switch1
}

define service{
        use                     generic-service
        host_name               switch1
        service_description     PING
        check_command           check_ping!100.0,20%!500.0,60%
}

define service{
        use                     generic-service
        host_name               firewall1
        service_description     PING
        check_command           check_ping!100.0,20%!500.0,60%
}

この中で設定している項目を下記にまとめます。

use 使用するtemplateを指定する。template一覧は/etc/nagios/objects
/template.cfgを参照。generic- switchの他にwindows-server / linux-
serverなどがある。明示的に指定しなければtemplateで設定されている値が
適用される。
host_name ホスト名を指定。
alias ホスト名の別名を指定。
address 監視対象のIPアドレスを指定。
parents 監視対象の親ホストを指定。例えばWebサーバを監視するとき、Webサーバ
を接続しているスイッチがダウンした場合は当然Webサーバにもアクセスで
きなくなる。このときスイッチはWebサーバの親ホストとなり、親ホストが
ダウンした際には監視をunknown状態にすることができる。
check_command 実 際に実行するpluginを指定する。plugin一覧はcommand.cfgを参照。
check_ping!100.0,20%!500.0,60%は!で引数を区切っており一つ目の引数
は応答が100ms以上が20%だと警告2つ目の引数は応答が500ms以上が60%
でクリティカルという意味です。

上記で指定しているgeneric-switchのtemplate.cfgの中身は以下のようになっています。generic-serviceについてもほぼ同様な意味となり明示的に指定しない場合はここの設定されている値が適用されます。

# cat templates.cfg

###############################################################################
###############################################################################
#
# HOST TEMPLATES
#
###############################################################################
###############################################################################

# Define a template for switches that we can reuse
define host{
        name                    generic-switch  
        use                     generic-host    
        check_period            24x7            
        check_interval          5              
        retry_interval          1               
        max_check_attempts      10             
        check_command           check-host-alive   
        notification_period     24x7            
        notification_interval   30              
        notification_options    d,r            
        contact_groups          admins          
        statusmap_image         switch.png
        register                0              
        }


各項目の意味は次のようになります。

check_period
24時間365日監視をする。
check_interval
5分間隔で監視を実行する。
retry_interval
pingに応答しなかった際に1分後にリトライする。
max_check_attempts
リトライを最大10回繰り返す
check_command
実際に実行するプラグインを指定する。
notification_period 通知を行う時間帯を指定する。24×7は常に通知する。
notification_interval
30分毎に再通知を行う。0を指定すると再通知は行わない。
notification_options
どの状態の際に通知を行うか指定する。ステータスは以下の通り。
d → down
r → recovery
u → unreachable
w → warning
c → critical
contact_groups 通知する先を指定する。これは/etc/nagios/objects/contacts.cfgで設定する。


generic-serviceについてもほぼ同様な意味なのでここでは割愛します。


■通知先の設定

実際に異常を検知した際の通知先を変更しておきます。

# vi /etc/nagios/objects/contacts.cfg

define contact{
        contact_name                    nagiosadmin
        use                             generic-contact
        alias                           Nagios Admin
        email                           xx@yy.com
        }


とりあえずここまでの設定でnagiosは動きますが、起動前にコンフィグファイルにエラーがないかチェックを行うことがで きます。

# nagios -v /etc/nagios/nagios.cfg

Nagios Core 3.4.1
Copyright (c) 2009-2011 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 05-11-2012
License: GPL

Website: http://www.nagios.org
Reading configuration data...
   Read main config file okay...
Processing object config file '/etc/nagios/objects/commands.cfg'...
Processing object config file '/etc/nagios/objects/contacts.cfg'...
Processing object config file '/etc/nagios/objects/timeperiods.cfg'...
Processing object config file '/etc/nagios/objects/templates.cfg'...
Processing object config file '/etc/nagios/objects/network.cfg'...
Processing object config file '/etc/nagios/objects/server.cfg'...
   Read object config files okay...

Running pre-flight check on configuration data...

Checking services...
        Checked 6 services.
Checking hosts...
        Checked 4 hosts.
Checking host groups...
        Checked 0 host groups.
Checking service groups...
        Checked 0 service groups.
Checking contacts...
        Checked 1 contacts.
Checking contact groups...
        Checked 1 contact groups.
Checking service escalations...
        Checked 0 service escalations.
Checking service dependencies...
        Checked 0 service dependencies.
Checking host escalations...
        Checked 0 host escalations.
Checking host dependencies...
        Checked 0 host dependencies.
Checking commands...
        Checked 25 commands.
Checking time periods...
        Checked 5 time periods.
Checking for circular paths between hosts...
Checking for circular host and service dependencies...
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

上記のようにエラーが何もでなければ以下のコマンドで起動します。

# /etc/rc.d/init.d/nagios start

Webからアクセスして冒頭で登録したID/PASSを入力すると以下の画面が見れます。


■監視コマンドの設定

実際に監視をする際にはpingのみなんてことはなく、各サーバで動いているサービス各々に対して行うことになり ます。普通に考えてHTTP / HTTPS / SMTP / POP3 / DNSなどはざらに存在しているでしょう。これらを監視するには少しだけ設定ファイルを修正する必要がありますのでそれらを紹介します。

■DNSサービス


DNSサービスのチェックには以下のファイルにそれぞれ内容を追記します。

# vi /etc/nagios/objects/commands.cfg

# 'check_dig' command definition
define command{
        command_name    check_dig
        command_line    $USER1$/check_dig -H $HOSTADDRESS$ -l $ARG1$
        }

# vi /etc/nagios/objects/server.cfg

define service{
        use                     generic-service
        host_name               dns.xxyy.jp
        service_description     DNS
        check_command           check_dig!www.yahoo.co.jp
}


上記ではwww.yahoo.co.jpをdigコマンドで定期的にチェックを行うという意味になります。どのURLをチェック対象にするのかは任意に決めることができます。


■HTTPSサービス

HTTPは標準でcommands.cfgに記載されていますが、HTTPSは記載がないので手動で追記する必要 があります。

# vi /etc/nagios/objects/commands.cfg

# 'check_https' command definition
define command{
        command_name    check_https
        command_line    $USER1$/check_http --ssl -I $HOSTADDRESS$ -u $ARG1$
        }

# vi /etc/nagios/objects/server.cfg

define service{
        use                     generic-service
        host_name               ssl.xxyy.jp
        service_description     DNS
        check_command           check_https!/ssl/
}


check_https!の後ろの部分にURLを記載します。トップURLからhttpsが表示される場合はこれは不要です。

■NTPサービス

# vi /etc/nagios/objects/commands.cfg

# 'check_ntp' command definition
define command{
        command_name    check_ntp
        command_line    $USER1$/check_ntp -H $ARG1$ -w $ARG2$ -c $ARG3$
        }

# vi /etc/nagios/objects/server.cfg

define service{
        use                     generic-service
        host_name               ntp.xxyy.jp
        service_description     NTP
        check_command           check_ntp!xx.yy.xx.yy!5!10
}


xx.yy.xx.yyに実際に同期するNTPサーバのIPアドレスを記載します。!の後の5と10に関して、NTPサーバと5秒ずれればwarning、10秒ずれれば異常とみなす、という意味です。その他メール関連のSMTP / POP3 / IMAPなどはcommands.cfgを触らなくてもそのまま使用できます。他にもnagios pluginは多数用意されており、私自身、ここで上げたプラグインぐらいしか使ったことがありません。

プラグイン一覧は下記の通りです。

# ls -al /usr/lib/nagios/plugins/
合計 2228
drwxrwxr-x 3 root root     4096 11月 23 03:49 2012 .
drwxr-xr-x 4 root root     4096 11月 22 15:20 2012 ..
-rwxr-xr-x 1 root root     2251  8月 17 22:42 2012 check_breeze
-rwxr-xr-x 1 root root    53164  8月 17 22:42 2012 check_by_ssh
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_clamd -> check_tcp
-rwxr-xr-x 1 root root    37632  8月 17 22:42 2012 check_cluster
-rwsr-x--- 1 root nagios  52148  8月 17 22:42 2012 check_dhcp
-rwxr-xr-x 1 root root    47820  8月 17 22:42 2012 check_dig
-rwxr-xr-x 1 root root    60172  8月 17 22:42 2012 check_disk
-rwxr-xr-x 1 root root     9145  8月 17 22:42 2012 check_disk_smb
-rwxr-xr-x 1 root root    52272  8月 17 22:42 2012 check_dns
-rwxr-xr-x 1 root root    30256  8月 17 22:42 2012 check_dummy
-rwxr-xr-x 1 root root     3053  8月 17 22:42 2012 check_file_age
-rwxr-xr-x 1 root root     6315  8月 17 22:42 2012 check_flexlm
-rwsr-x--- 1 root nagios  51012  8月 17 22:42 2012 check_fping
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_ftp -> check_tcp
-rwxr-xr-x 1 root root    41752  8月 17 22:42 2012 check_game
-rwxr-xr-x 1 root root    47556  8月 17 22:42 2012 check_hpjd
-rwxr-xr-x 1 root root   115412  8月 17 22:42 2012 check_http
-rwsr-x--- 1 root nagios  59060  8月 17 22:42 2012 check_icmp
-rwsr-x--- 1 root nagios  40220  8月 17 22:42 2012 check_ide_smart
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_imap -> check_tcp
-rwxr-xr-x 1 root root     6887  8月 17 22:42 2012 check_ircd
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_jabber -> check_tcp
-rwxr-xr-x 1 root root    48536  8月 17 22:42 2012 check_ldap
lrwxrwxrwx 1 root root       10 11月 22 16:33 2012 check_ldaps -> check_ldap
-rwxr-xr-x 1 root root    41584  8月 17 22:42 2012 check_load
-rwxr-xr-x 1 root root     6020  8月 17 22:42 2012 check_log
-rwxr-xr-x 1 root root    20284  8月 17 22:42 2012 check_mailq
-rwxr-xr-x 1 root root    41400  8月 17 22:42 2012 check_mrtg
-rwxr-xr-x 1 root root    40016  8月 17 22:42 2012 check_mrtgtraf
-rwxr-xr-x 1 root root    55644  8月 17 22:42 2012 check_mysql
-rwxr-xr-x 1 root root    53616  8月 17 22:42 2012 check_mysql_query
-rwxr-xr-x 1 root root    41908  8月 17 22:42 2012 check_nagios
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_nntp -> check_tcp
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_nntps -> check_tcp
-rwxr-xr-x 1 root root    58736  8月 17 22:42 2012 check_nt
-rwxr-xr-x 1 root root    53584  8月 17 22:42 2012 check_ntp
-rwxr-xr-x 1 root root    14281  8月 17 22:42 2012 check_ntp.pl
-rwxr-xr-x 1 root root    52520  8月 17 22:42 2012 check_ntp_peer
-rwxr-xr-x 1 root root    48816  8月 17 22:42 2012 check_ntp_time
-rwxr-xr-x 1 root root    68220  8月 17 22:42 2012 check_nwstat
-rwxr-xr-x 1 root root     8324  8月 17 22:42 2012 check_oracle
-rwxr-xr-x 1 root root    49108  8月 17 22:42 2012 check_overcr
-rwxr-xr-x 1 root root    50680  8月 17 22:42 2012 check_pgsql
-rwxr-xr-x 1 root root    55164  8月 17 22:42 2012 check_ping
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_pop -> check_tcp
-rwxr-xr-x 1 root root    57332  8月 17 22:42 2012 check_procs
-rwxr-xr-x 1 root root    45864  8月 17 22:42 2012 check_real
-rwxr-xr-x 1 root root     9581  8月 17 22:42 2012 check_rpc
-rwxr-xr-x 1 root root     1412  8月 17 22:42 2012 check_sensors
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_simap -> check_tcp
-rwxr-xr-x 1 root root    75380  8月 17 22:42 2012 check_smtp
-rwxr-xr-x 1 root root    92428  8月 17 22:42 2012 check_snmp
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_spop -> check_tcp
-rwxr-xr-x 1 root root    43004  8月 17 22:42 2012 check_ssh
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_ssmtp -> check_tcp
-rwxr-xr-x 1 root root    43304  8月 17 22:42 2012 check_swap
-rwxr-xr-x 1 root root    59752  8月 17 22:42 2012 check_tcp
-rwxr-xr-x 1 root root    44664  8月 17 22:42 2012 check_time
lrwxrwxrwx 1 root root        9 11月 22 16:33 2012 check_udp -> check_tcp
-rwxr-xr-x 1 root root    51464  8月 17 22:42 2012 check_ups
-rwxr-xr-x 1 root root    35960  8月 17 22:42 2012 check_users
-rwxr-xr-x 1 root root     2936  8月 17 22:42 2012 check_wave
drwxr-xr-x 2 root root     4096  7月  2 06:40 2012 eventhandlers
-rwxr-xr-x 1 root root    39172  8月 17 22:42 2012 negate
-rwxr-xr-x 1 root root    35776  8月 17 22:42 2012 urlize
-rw-r--r-- 1 root root     2091  8月 17 22:42 2012 utils.pm
-rwxr-xr-x 1 root root     2728  8月 17 22:42 2012 utils.sh

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする