統合監視システムNagios構築

はじめに

Nagios(ナギオス)は、オープンソースのコンピュータシステムおよびネットワークの監視のためのアプリケーションソフトウェアである。

設定

# id;pwd
rootユーザであり/rootディレクトリであること

# yum -y install gd-devel
nagiosに必要なgd-develをインストール
# useradd -d /usr/local/nagios/ -M nagios
nagiosユーザー作成
# wget http://jaist.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.1.tar.gz
nagiosをダウンロード
# tar zxvf nagios-3.0.1.tar.gz
ファイル展開
# cd nagios-3.0.1
展開先へ移動

# pwd
/root/nagios-3.0.1であること
# wget http://jaist.dl.sourceforge.jp/nagios-jp/30391/nagios-3.0.1-ja-utf8.patch.gz
nagios日本語化パッチダウンロード
# gzip -dc nagios-3.0.1-ja-utf8.patch.gz |patch -p0
nagios日本語化パッチ施行
# ./configure && make all && make fullinstall && make install-config
nagiosインストール
# cd
/rootディレクトリへ移動

# pwd
/rootディレクトリであること
# rm -rf nagios-3.0.1
ディレクトリ削除
# rm -f nagios-3.0.1.tar.gz
ファイル削除
# ls -l
削除できていること

さざなみフォントインストール

# wget http://osdn.dl.sourceforge.jp/efont/10087/sazanami-20040629.tar.bz2
さざなみフォントダウンロード
# tar jxvf sazanami-20040629.tar.bz2
ファイル展開
# mkdir /usr/local/nagios/etc/font
フォント格納先ディレクトリ作成
# cp sazanami-20040629/sazanami-gothic.ttf /usr/local/nagios/etc/font/font.ttf
さざなみフォントをフォント格納先へコピー
# rm -rf sazanami-20040629
ディレクトリ削除
# rm -f sazanami-20040629.tar.bz2
ファイル削除
# ls -l
削除できていること

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

# wget http://jaist.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz
Nagiosプラグインダウンロード
# tar zxvf nagios-plugins-1.4.11.tar.gz
ファイル展開
# cd nagios-plugins-1.4.11
展開先ディレクトリへ移動
# ./configure && make && make install
Nagiosプラグインインストール
# cp contrib/check_mem.pl /usr/local/nagios/libexec/
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}'`;

check_mem.plを修正
:qwで保存
# chmod +x /usr/local/nagios/libexec/check_mem.pl
check_mem.plへ実行権限付加
# cd
/rootディレクトリへ移動

# pwd
/rootディレクトリであること
# rm -rf nagios-plugins-1.4.11
ディレクトリ削除
# rm -f nagios-plugins-1.4.11.tar.gz
tar.gzファイル削除
# ls -l
削除できていること

Nagios設定

# vi /usr/local/nagios/etc/nagios.cfg
cfg_dir=/usr/local/nagios/etc/servers
date_format=iso8601
nagios.cfg編集
日付書式をYYYY-MM-DD HH:MM:SSにする
:wq!で保存
# vi /usr/local/nagios/etc/cgi.cfg
ttf_file=/usr/local/nagios/etc/font/font.ttf
cgi.cfg編集
#コメント解除
:wq!で保存
# mkdir /usr/local/nagios/etc/servers
サーバー監視設定ディレクトリ作成

# vi /usr/local/nagios/etc/objects/contacts.cfg
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          ***@**.**
        }
contacts.cfg編集
管理者メールアドレスを指定
:wq!で保存
# vi /usr/local/nagios/etc/objects/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
        }
localhost.cfg編集
1を指定

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を指定
:wq!で保存

commands.cfgの編集 ※sshのポート番号を変更している場合のみ

vi /usr/local/nagios/etc/objects/commands.cfg
# 'check_ssh' command definition
define command{
        command_name    check_ssh
        command_line    $USER1$/check_ssh $ARG1$ -p ポート番号 $HOSTADDRESS$
        }
commands.cfg編集
-p ポート番号を追記
wq!で保存

Apache設定

# usermod -G nagios apache
apacheユーザーをnagiosグループに所属させる
# vi /etc/httpd/conf.d/nagios.conf
Nagios用Apache設定ファイル編集



#  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.0.0/24
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user


コメントアウト #Allow from all
コメント解除 Allow from 127.0.0.1
内部ネットワークのみ許可 Allow from 192.168.0.0/24


#  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.0.0/24
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user


コメントアウト #Allow from all
コメント解除 Allow from 127.0.0.1
内部ネットワークのみ許可 Allow from 192.168.0.0/24
:qw!にて保存
# /etc/rc.d/init.d/httpd reload
Apache設定再読み込み
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
管理ユーザー(nagiosadmin)作成
New password:
パスワード入力
Re-type new password:
パスワード最入力
Adding password for user nagiosadmin

Nagios起動

# /etc/rc.d/init.d/nagios start
Nagios起動

# chkconfig --add nagios
Nagios起動スクリプトをchkconfigへ追加

# chkconfig nagios on
Nagios自動起動設定

監視サービス追加(メモリ空き容量)

# 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$
        }
Shift+gにて最終行へ移動し追加
:wq!で保存
# 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
        }
Shift+gにて最終行へ移動し追加
空きメモリ量が20%で警告、10%で異常とする
:wq!で保存
# /etc/rc.d/init.d/nagios restart
Nagios再起動

監視サービス追加(ログインユーザ数)

# 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!2!3
        }
ログインユーザー数が2以上で警告、3以上で異常とする
:wq!で保存
# /etc/rc.d/init.d/nagios restart
Nagios再起動

監視サービス追加(NTP)

# vi /usr/local/nagios/etc/objects/commands.cfg
commands.cfg編集

# 'check_ntp' command definition
define command{
        command_name    check_ntp
        command_line    $USER1$/check_ntp -H $ARG1$ -w $ARG2$ -c $ARG3$
        }
Shift+gにて最終行へ移動し追加
:wq!で保存
# vi /usr/local/nagios/etc/objects/localhost.cfg
localhost.cfg編集

define service{
        use                             generic-service
        host_name                       localhost
        service_description             NTP
        check_command                   check_ntp!NTPサーバーIPアドレス!1!2
        }
Shift+gにて最終行へ移動し追加
NTPサーバーと時間ずれが1秒で警告、2秒で異常とする
:wq!で保存
# /etc/rc.d/init.d/nagios restart
Nagios再起動

監視サービス追加(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$
        }

Shift+gにて最終行へ移動し追加
:wq!で保存
# 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
        }
Shift+gにて最終行へ移動し追加
:wq!で保存

# /etc/rc.d/init.d/nagios restart
Nagios再起動

監視サービスBIND追加

# vi /usr/local/nagios/etc/objects/commands.cfg
commands.cfg編集

# 'check_dig' command definition
define command{
        command_name    check_dig
        command_line    $USER1$/check_dig -H $HOSTADDRESS$ -l $ARG1$
        }
Shift+gにて最終行へ移動し追加
:wq!で保存
# vi /usr/local/nagios/etc/objects/localhost.cfg
localhost.cfg編集

define service{
        use                             generic-service
        host_name                       localhost
        service_description             DNS
        check_command                   check_dig!maeda-p-runner.homelinux.net
        }
Shift+gにて最終行へ移動し追加
自ドメイン名を指定
:wq!で保存
# /etc/rc.d/init.d/nagios restart
Nagios再起動

監視サービスsmtp追加

# 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
        }
Shift+gにて最終行へ移動し追加
:wq!で保存 
# /etc/rc.d/init.d/nagios restart
Nagios再起動

監視サービスpop追加

# 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追加
:wq!で保存
# 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
        }

Shift+gにて最終行へ移動し追加
:wq!で保存
# /etc/rc.d/init.d/nagios restart
Nagios再起動

監視サービスimap追加

# 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"追加
:wq!で保存
# 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
        }
Shift+gにて最終行へ移動し追加
:wq!で保存
# /etc/rc.d/init.d/nagios restart
Nagios再起動

監視サービス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コマンドパス設定
:wq!で保存
# echo SambaサーバーIPアドレスまたはhost名 >> /etc/samba/lmhosts
/etc/samba/lmhostsへIPアドレス追記
# 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$
        }
Shift+gにて最終行へ移動し追加
:wq!で保存
# 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!サーバ名!共有名!ワークグループ名!user名!パスワード
        }
Shift+gにて最終行へ移動し追加
!サーバ名!共有名!ワークグループ名!user名!パスワードを追加
:wq!で保存
# /etc/rc.d/init.d/nagios restart
Nagios再起動

監視サービス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$
        }
Shift+gにて最終行へ移動し追加
:wq!で保存
# 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パスワード
        }
Shift+gにて最終行へ移動し追加
mysqlのrootパスワード追加
:wq!で保存
# /etc/rc.d/init.d/nagios restart
Nagios再起動

動作確認

ブラウザにてhttp://サーバー名/nagios/へアクセスできること。※user:nagiosadmin pw:設定値

評価

フリーで高機能、プラグインによってはログ監視等も行なえます。とても良いです。

index.html
©2016 p-runner.netspec