Nagiosのインストール

概要:サーバーの状態を統合監視システムNagios(ナギオス)によりブラウザで監視する。Nagiosは、オープンソースのコンピュータシステムおよびネットワークの監視のためのアプリケーションソフトウェアである。
前提:

1. Nagiosインストール

# yum -y install gd-devel ← Nagiosに必要なgd-develをインストール
Transaction Summary
==========================================================================================
Install     12 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 2.2 M
Downloading Packages:
(1/12): libXdmcp-devel-1.0.1-2.1.i386.rpm                          | 7.5 kB     00:00
(2/12): libXau-devel-1.0.1-3.1.i386.rpm                            |  11 kB     00:00
(3/12): libXpm-devel-3.5.5-3.i386.rpm                              |  31 kB     00:00
(4/12): gd-devel-2.0.33-9.4.el5_4.2.i386.rpm                       |  97 kB     00:00
(5/12): libjpeg-devel-6b-37.i386.rpm                               | 105 kB     00:00
(6/12): freetype-devel-2.2.1-21.el5_3.i386.rpm                     | 146 kB     00:00
(7/12): gd-2.0.33-9.4.el5_4.2.i386.rpm                             | 154 kB     00:00
(8/12): fontconfig-devel-2.4.1-7.el5.i386.rpm                      | 168 kB     00:00
(9/12): libpng-devel-1.2.10-7.1.el5_3.2.i386.rpm                   | 181 kB     00:00
(10/12): xorg-x11-proto-devel-7.1-13.el5.i386.rpm                  | 247 kB     00:00
(11/12): mesa-libGL-devel-6.5.1-7.7.el5.i386.rpm                   | 466 kB     00:00
(12/12): libX11-devel-1.0.3-11.el5.i386.rpm                        | 661 kB     00:00
------------------------------------------------------------------------------------------
Total                                                     201 kB/s | 2.2 MB     00:11

# useradd -d /usr/local/nagios/ -M nagios ← nagiosユーザー作成
# chmod  750 /usr/local/nagios ← グループの権限がないとhttpdでPermission Denyが発生する。
# cd /tmp/work
# wget http://jaist.dl.sourceforge.net/sourceforge/nagios/nagios-3.1.0.tar.gz
  ← Nagiosダウンロード
※最新版はダウンロードページ[ http://sourceforge.net/projects/nagios/files/nagios-3.x/ ]
で確認すること。
# tar zxvf nagios-3.1.0.tar.gz ← Nagios展開
# cd nagios-3.0.1 ← Nagios展開先ディレクトリへ移動
# wget http://jaist.dl.sourceforge.jp/nagios-jp/38828/nagios-3.1.0-ja-utf8.patch.gz
  ← Nagios日本語化パッチダウンロード
※最新版はダウンロードページ[ http://sourceforge.jp/projects/nagios-jp/ ]
で確認すること。
# gzip -dc nagios-3.1.0-ja-utf8.patch.gz |patch -p0 ← Nagios日本語化パッチ施行
# ./configure && make all && make fullinstall && make install-config ← Nagiosインストール

2. さざなみフォントインストール
「傾向」、「警報ヒストグラム」で表示される画像の日本語化に必要なさざなみフォントをインストールする。

# cd /tmp/work
# wget http://osdn.dl.sourceforge.jp/efont/10087/sazanami-20040629.tar.bz2
  ← さざなみフォントダウンロード
※最新版のURLはダウンロードページ[ http://sourceforge.jp/projects/efont/releases/#10087 ]
で確認すること
# tar jxvf sazanami-20040629.tar.bz2 ← さざなみフォント展開
# mkdir /usr/local/nagios/etc/font ← フォント格納先ディレクトリ作成
# cp -p sazanami-20040629/sazanami-gothic.ttf /usr/local/nagios/etc/font/font.ttf
 ← さざなみフォントをフォント格納先ディレクトリへコピー
# chown nagios.nagios /usr/local/nagios/etc/font/font.ttf
# rm -rf sazanami-20040629 ← さざなみフォント展開先ディレクトリを削除
# rm -f sazanami-20040629.tar.bz2 ← ダウンロードしたファイルを削除

3. Nagiosプラグインインストール

# cd /tmp/work
# yum -y install mysql-devel ← mysql-develインストール※MySQLの監視を行なう場合のみ
# wget http://jaist.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz
  ← Nagiosプラグインダウンロード
※最新版はダウンロードページ[ http://sourceforge.net/projects/nagiosplug/files/nagiosplug/ ]
で確認すること。
# tar zxvf nagios-plugins-1.4.14.tar.gz ← Nagiosプラグイン展開
# cd nagios-plugins-1.4.14 ← Nagiosプラグイン展開先ディレクトリへ移動
# ./configure && make && make install ← Nagiosプラグインインストール
# cp -p contrib/check_mem.pl /usr/local/nagios/libexec/ ← メモリチェックプラグインインストール
# vi /usr/local/nagios/libexec/check_mem.pl ← メモリチェックプラグイン修正
$command_line = `vmstat | tail -1 | awk '{print \$4,\$5}'`;
  
$command_line = `free | head -3 | tail -1 | awk '{print \$3,\$4}'`; ← 変更
# chmod +x /usr/local/nagios/libexec/check_mem.pl ← メモリチェックプラグインへ実行権限付加
# cd ← Nagiosプラグイン展開先ディレクトリを抜ける

4. Nagios設定

# vi /usr/local/nagios/etc/nagios.cfg ← nagios.cfg編集
cfg_dir=/usr/local/nagios/etc/servers ← 行頭の#を削除してコメント解除(サーバー監視設定有効化)

date_format=iso8601 ← 日付書式をYYYY-MM-DD HH:MM:SSにする
# vi /usr/local/nagios/etc/cgi.cfg ← cgi.cfg編集
ttf_file=/usr/local/nagios/etc/font/font.ttf
  ← 行頭の#を削除してコメント解除(さざなみフォント有効化)
# mkdir /usr/local/nagios/etc/servers ← サーバー監視設定ファイル格納ディレクトリ作成
# vi /usr/local/nagios/etc/objects/contacts.cfg ← contacts.cfg編集
define contact{
    contact_name            nagios            ; Short name of user ← 作成したユーザーに設定
    use                     generic-contact   ; Inherit default values from generic-contact template
 (defined above)
    alias                   Nagios Admin      ; Full name of user

    email                   管理者メールアドレス ← 管理者メールアドレスを指定
    }

define contactgroup{
    contactgroup_name   admins
    alias               Nagios Administrators
    members             nagios ← 作成したユーザーを設定
    }
# vi /usr/local/nagios/etc/objects/localhost.cfg ← localhost.cfg編集
define service{
    use                     local-service   ; Name of service template to use
    host_name               localhost
    service_description     SSH
    check_command           check_ssh
    notifications_enabled   1 ← 1を指定(SSH状態変化時に通知する)
    }

define service{
    use                     local-service   ; Name of service template to use
    host_name               localhost
    service_description     HTTP
    check_command           check_http
    notifications_enabled   1 ← 1を指定(HTTP状態変化時に通知する)
    }
# vi /usr/local/nagios/etc/objects/commands.cfg ← commands.cfg編集
# 'notify-host-by-email' command definition
define command{
    command_name    notify-host-by-email
    command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFI
CATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTP
UT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/nkf -j | /bin/mail -s "** $NOTIFICATIONTYPE
$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
  ← nkfコマンド追加(メール本文文字化け対処)
    }

# 'notify-service-by-email' command definition
define command{
    command_name    notify-service-by-email
    command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFI
CATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $
SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/
bin/nkf -j | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ 
is $SERVICESTATE$ **" $CONTACTEMAIL$
  ← nkfコマンド追加(メール本文文字化け対処)
    }

5. コンフィグファイルの整合性確認
監視に必要なすべての設定をコンフィグファイルへ指定した後、コンフィグファイルの整合性を確認する。

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nagios 3.1.0
Copyright (c) 1999-2009 Ethan Galstad (http://www.nagios.org)
Last Modified: 01-25-2009
License: GPL

Reading configuration data...
   Read main config file okay...
      :
      :
Checking misc settings...

Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check
  ← 最後にこれが表示されればOK。

6. Apache設定

# usermod -G nagios apache ← apacheユーザーをnagiosグループに所属させる
# vi /etc/httpd/conf.d/nagios.conf ← Nagios用Apache設定ファイル編集
<Directory "/usr/local/nagios/sbin">
#  SSLRequireSSL
   Options ExecCGI
   AllowOverride None
   Order allow,deny
#  Allow from all ← 行頭に#を追加してコメントアウト(すべてのアクセスを禁止)
#  Order deny,allow
#  Deny from all
   Allow from 127.0.0.1 ← 行頭の#を削除してコメント解除(自ホストからのアクセスを許可)
   Allow from 192.168.1.0/24 ← 追加(内部ネットワーク(例:192.168.1.0/24)からのアクセスを許可)
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user
</Directory>

<Directory "/usr/local/nagios/share">
#  SSLRequireSSL
   Options None
   AllowOverride None
   Order allow,deny
#  Allow from all ← 行頭に#を追加してコメントアウト(すべてのアクセスを禁止)
#  Order deny,allow
#  Deny from all
   Allow from 127.0.0.1 ← 行頭の#を削除してコメント解除(自ホストからのアクセスを許可)
   Allow from 192.168.1.0/24 ← 追加(内部ネットワーク(例:192.168.1.0/24)からのアクセスを許可)
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user
</Directory>
# /etc/rc.d/init.d/httpd reload ←  設定再読込み
httpd を再読み込み中:                                      [  OK  ]
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagios ← Nagios管理ユーザー(nagiosadmin)作成
New password: ← 任意のパスワード応答※表示はされない
Re-type new password: ← 任意のパスワード応答(確認)※表示はされない
Adding password for user nagios

7. Nagios起動

# /etc/rc.d/init.d/nagios start ← Nagios起動
Starting nagios: done.

# chkconfig --add nagios ← Nagios起動スクリプトをchkconfigへ追加
# chkconfig nagios on ← Nagios自動起動設定
# chkconfig --list nagios
nagios          0:off   1:off   2:on    3:on    4:on    5:on    6:off

8. Nagios確認
http://サーバー名/nagios/へアクセスし、NgiosのWebインタフェース画面が表示されることを確認。
ユーザー名/パスワードは htpasswdコマンドで作成したNagios管理ユーザーのユーザー名/パスワードを指定する。
デフォルトの監視項目は自ホストの「CPU負荷」、「ログインユーザー数」、 「Webサーバー稼動状況」、「ネットワーク障害」、「ディスク空き状況」、 「SSHサーバー稼動状況」、「SWAP空き状況」、「プロセス数」。

9. 監視ホスト追加
例としてホスト名fedora、IPアドレス192.168.1.20を監視ホストとして追加する。

# vi /usr/local/nagios/etc/servers/fedora.cfg ← ホスト名.cfg作成
define host{
    use             linux-server
    host_name       fedora
    alias           fedora
    address         192.168.1.20
    }

define service{
    use                     generic-service
    host_name               fedora
    service_description     PING
    check_command           check_ping!100.0,20%!500.0,60%
    }
# /etc/rc.d/init.d/nagios restart ← Nagios再起動
Running configuration check...done
Stopping nagios: done.
Starting nagios: done.

10. 監視サービス追加(自ホスト編)

  1. ) メモリ空き状況
    # vi /usr/local/nagios/etc/objects/commands.cfg ← commands.cfg編集
    
    以下を最終行へ追加
    # 'check_mem' command definition
    define command{
        command_name    check_mem
        command_line    $USER1$/check_mem.pl -f -w $ARG1$ -c $ARG2$
        }
    
    # vi /usr/local/nagios/etc/objects/localhost.cfg ← localhost.cfg編集
    
    以下を最終行へ追加
    define service{
        use                     generic-service
        host_name               localhost
        service_description     Memory Free
        check_command           check_mem!20!10 ← 空きメモリ量が20%で警告、10%で異常とする
        }
    
    # /etc/rc.d/init.d/nagios restart ← Nagios再起動
    Running configuration check...done
    Stopping nagios: done.
    Starting nagios: done.
    
  2. ) ログインユーザー数
    # vi /usr/local/nagios/etc/objects/localhost.cfg ← localhost.cfg編集
    define service{
        use                     generic-service
        host_name               localhost
        service_description     Current Users
        check_command           check_local_users!3!5
      ← ログインユーザー数が3以上で警告、5以上で異常とする
        }
    # /etc/rc.d/init.d/nagios restart ← Nagios再起動
    Running configuration check...done
    Stopping nagios: done.
    Starting nagios: done.
    
  3. ) clamd (Clam AntiVirus導入済の場合のみ)
    # vi /usr/local/nagios/etc/objects/commands.cfg ← commands.cfg編集
    
    以下を最終行へ追加
    # 'check_clamd' command definition
    define command{
        command_name    check_clamd
        command_line    $USER1$/check_clamd -H $ARG1$
        }
    
    # vi /usr/local/nagios/etc/objects/localhost.cfg ← localhost.cfg編集
    
    以下を最終行へ追加
    define service{
        use                     generic-service
        host_name               localhost
        service_description     clamd
        check_command           check_clamd!/var/run/clamav/clamd.sock
         ← /var/run/clamav/clamd.sockはclamd.confのLocalSocketオプションで指定した値
        }
    
    # /etc/rc.d/init.d/nagios restart ← Nagios再起動
    Running configuration check...done
    Stopping nagios: done.
    Starting nagios: done.
    
  4. ) SMTP (メールサーバー(Postfix、qmail)導入済の場合のみ)
    # vi /usr/local/nagios/etc/objects/localhost.cfg ← localhost.cfg編集
    
    以下を最終行へ追加
    define service{
        use                     generic-service
        host_name               localhost
        service_description     SMTP
        check_command           check_smtp
        }
    
    # /etc/rc.d/init.d/nagios restart ← Nagios再起動
    Running configuration check...done
    Stopping nagios: done.
    Starting nagios: done.
    
  5. ) POP (メールサーバー(Postfix、qmail)導入済の場合のみ)
    # vi /usr/local/nagios/etc/objects/commands.cfg ← commands.cfg編集
    
    # 'check_pop' command definition
    define command{
        command_name    check_pop
        command_line    $USER1$/check_pop -H $HOSTADDRESS$ -s quit ← 「-s quit」追加
        }
    
    注:「-s quit」はDovecotがpop3-login: Aborted login: rip=::ffff:127.0.0.1, lip=::ffff:127.0.0.1, securedというエラーメッセージをログに出力しないようにする対処
    # vi /usr/local/nagios/etc/objects/localhost.cfg ← localhost.cfg編集
    
    以下を最終行へ追加
    define service{
        use                     generic-service
        host_name               localhost
        service_description     POP
        check_command           check_pop
        }
    
    # /etc/rc.d/init.d/nagios restart ← Nagios再起動
    Running configuration check...done
    Stopping nagios: done.
    Starting nagios: done.
    
  6. ) IMAP (メールサーバー(Postfix、qmail)導入済の場合のみ)
    # vi /usr/local/nagios/etc/objects/commands.cfg ← commands.cfg編集
    
    # 'check_imap' command definition
    define command{
        command_name    check_imap
        command_line    $USER1$/check_imap -H $HOSTADDRESS$ -s "A2 logout"
      ← 「-s "A2 logout"」追加
        }
    
    ※「-s "A2 logout"」はDovecotがimap-login: Aborted login: rip=::ffff:127.0.0.1, lip=::ffff:127.0.0.1, securedというエラーメッセージをログに出力しないようにする対処。
    # vi /usr/local/nagios/etc/objects/localhost.cfg ← localhost.cfg編集
    
    以下を最終行へ追加
    define service{
        use                     generic-service
        host_name               localhost
        service_description     IMAP
        check_command           check_imap
        }
    # /etc/rc.d/init.d/nagios restart ← Nagios再起動
    Running configuration check...done
    Stopping nagios: done.
    Starting nagios: done.
    
  7. ) Samba (Samba導入済の場合のみ)
    # yum -y install samba-client ← samba-clientインストール
    # vi /usr/local/nagios/libexec/check_disk_smb ← check_disk_smbプラグイン編集
    my $smbclient= "/usr/bin/smbclient" ; ← smbclientコマンドパス設定
    # echo SambaサーバーIPアドレス※ Sambaサーバーホスト名 >> /etc/samba/lmhosts
     ← lmhostsへSambaサーバーのIPアドレス/ホスト名を追加する
    
    注:SambaサーバーIPアドレスにループバックアドレス(127.0.0.1)は指定できない
    # vi /usr/local/nagios/etc/objects/commands.cfg ← commands.cfg編集
    
    以下を最終行へ追加
    # 'check_disk_smb' command definition
    define command{
        command_name    check_disk_smb
        command_line    $USER1$/check_disk_smb -H $ARG1$ -s $ARG2$ -W $ARG3$ -u $ARG4$ -p $ARG5$
        }
    
    # vi /usr/local/nagios/etc/objects/localhost.cfg ← localhost.cfg編集
    
    以下を最終行へ追加
    define service{
        use                     generic-service
        host_name               localhost
        service_description     Samba
        check_command           check_disk_smb!ホスト名!共有名!ワークグループ名!ユーザー名!パスワード
        }
    
    # /etc/rc.d/init.d/nagios restart ← Nagios再起動
    Running configuration check...done
    Stopping nagios: done.
    Starting nagios: done.
    
  8. ) MySQL (MySQL導入済の場合のみ)
    # vi /usr/local/nagios/etc/objects/commands.cfg ← commands.cfg編集
    
    以下を最終行へ追加
    # 'check_mysql' command definition
    define command{
        command_name    check_mysql
        command_line    $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$
        }
    
    # vi /usr/local/nagios/etc/objects/localhost.cfg ← localhost.cfg編集
    
    以下を最終行へ追加
    define service{
        use                     generic-service
        host_name               localhost
        service_description     MySQL
        check_command           check_mysql!root!MySQLのrootユーザーパスワード
        }
    
    # /etc/rc.d/init.d/nagios restart ← Nagios再起動
    Running configuration check...done
    Stopping nagios: done.
    Starting nagios: done.
    

10. 監視サービス追加確認(自ホスト編)
http://サーバー名/nagios/へアクセスし、「サービス稼動状態」で追加したサービスが表示されることを確認。

11. Downtime Scheduling Utility導入
日々のサーバー運用では、定時バックアップや定時ウィルススキャン等を実施しており、これらの処理を実施している時間帯はサーバーが一時的に高負荷になるため、Nagiosが警告を発してしまう場合がある。これらの処理が毎日行なわれる場合、Nagiosからの警告もほぼ毎日発生することになるため、サーバー管理者にとっては非常に煩わしい。そこで、Nagios標準の「ダウンタイム」機能を利用して、指定時間帯のサーバー監視を無視するようにする。ただし、Nagios標準の「ダウンタイム」機能では、指定した日時のサーバー監視を無視することしかできないため、Downtime Scheduling Utility[http://www.monitoringexchange.org/inventory/Utilities/AddOn-Projects/Downtimes/Downtime-Scheduling-Utility]を導入して、CRONでダウンタイムの登録作業を自動化する。

Downtime Scheduling Utilityダウンロードページ[http://sweetdeliah.com/nagios/downtime/]よりnagios_downをダウンロードしてサーバーへアップロードする。

# cd /tmp/work
# wget http://sweetdeliah.com/nagios/downtime/nagios_down-0.2.tar.gz
# tar zxvf nagios_down-0.2.tar.gz ← nagios_down展開
# cp -p nagios_down.php /usr/local/nagios/bin/ ← nagios_down.phpを所定のディレクトリへコピー
# chown nagios.nagios /usr/local/nagios/bin/nagios_down.php
# vi /usr/local/nagios/bin/nagios_down.php ← nagios_down.php編集
define(NAGIOSCMD, "/usr/local/groundwork/nagios/var/spool/nagios.cmd");
  
define(NAGIOSCMD, "/usr/local/nagios/var/rw/nagios.cmd"); ← nagios.cmdパス変更
# vi /etc/cron.d/nagios ← nagios_down用cron設定ファイル新規作成
01 00 * * * root /usr/bin/php /usr/local/nagios/bin/nagios_down.php -h localhost -s "Curr
ent Load" -f -b "04:00" -e "06:00" -a "Nagios Admin" -c "Server Maintenance"
 ← 上記の例では毎日4:00~6:00はlocalhostのCPU負荷監視を行なわない。

最終更新のRSS
Last-modified: 2014-03-11 (火) 01:59:57 (3697d)