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

Nagios

概要

Nagiosは、ホストや、ホストで稼働しているサービス、ネットワークなどを定期的に監視するプログラムです。
異常を検知した場合には管理者にメールなどで通知を行う統合監視ツールです。
プラグインを使用することで,ホストやサービスをチェックします。
また状態異常を検知した場合はメールで通知を行う設定が可能です。
Apacheなどのウェブサーバと連携することで現状の状態確認はブラウザにて確認可能です。
また、Nagiosはネットワーク内の各サーバーのサービス監視は出来るますが、ディスクの残容量など資源の監視となるとNagiosをインストールしているホストのものだけでリモートのホストについては監視出来ません。
そのためリモートホストのリソース監視などを行うためにはNRPEのインストールが必要です。

Nagiosのインストール

ライブラリのインストール NagiosをインストールするためにはApache、GCC、GDライブラリが必要です。 インストールされていない場合はインストールしておきましょう。

# yum install httpd gcc glibc glibc-common gd gd-devel Nagiosの実行ユーザの追加

1

# useradd -d /usr/local/nagios/ -M nagios Nagiosのダウンロード バージョンはNagiosで確認

1 2 3

!
# cd /usr/local/src # wget “http://downloads.sourceforge.net/project/nagios/nagios-3.x/nagios-3.2.3/nagios-3.2.3.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fnagios%2Ffiles%2Fnagios-3.x%2Fnagios-3.2.3%2F&ts=1300236056&use_mirror=jaist
Nagiosファイルの解凍
1 2
# tar zxvf nagios-3.2.3.tar.gz # cd nagios-3.2.3

Nagios日本語化パッチのダウンロード ftpがつながらないので後日確認 バージョンはNagios日本語化パッチで確認

1

# wget http://ftp.momo-i.org/pub/other/nagios-jp-3.2.3.patch.gz Nagios日本語化パッチを適用

1
  • # gzip -dc nagios-3.0.1-ja-utf8.patch.gz |patch -p0
Nagiosのインストール
1

# ./configure && make all && make fullinstall && make install-config nagios-pluginのインストール nagiosを使用するにはpluginも必要です。 Nagiosプラグイン Nagiosプラグインのダウンロード バージョンについてはhttp://www.nagios.org/download/pluginsを確認してください。 Nagiosプラグインのインストール

1 2 3 4 5 6 7





! # wget “http://downloads.sourceforge.net/project/nagiosplug/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz?r=http%3A%2F%2Fwww.nagios.org%2Fdownload%2Fplugins&ts=1300244091&use_mirror=jaist” # tar zxvf nagios-plugins-1.4.15.tar.gz # cd nagios-plugins-1.4.15 # ./configure –with-nagios-user=nagios –with-nagios-group=nagios –sysconfdir=/etc/nagios # make # make install

メモリチェックのNagiosプラグインをインストール 参考

1

# cp contrib/check_mem.pl /usr/local/nagios/libexec/ メモリチェックプラグインを修正

1
# vi /usr/local/nagios/libexec/check_mem.pl
1 2 3

$command_line = vmstat | tail -1 | awk ‘{print $4,$5}’; ↓上記を以下に変更 $command_line = free | head -3 | tail -1 | awk ‘{print $3,$4}’; メモリチェックプラグインへ実行権限を追加

1

# chmod +x /usr/local/nagios/libexec/check_mem.pl Nagios設定 Nagiosのコンフィグを編集

1
  • # vi /usr/local/nagios/etc/nagios.cfg

    1 2 3 4 5 6 7 8 9

! ①サーバー監視設定有効化 ⇒行頭の#を削除してコメント解除 cfg_dir=/usr/local/nagios/etc/servers

②日付書式をYYYY-MM-DD HH:MM:SSにする date_format=us ↓上記を以下に変更 #date_format=us date_format=iso8601 # vi /usr/local/nagios/etc/cgi.cfg 行頭の#を削除してコメント解除(さざなみフォント有効化) ※日本語化しない場合は行わなくてもいい

1

ttf_file=/usr/local/nagios/etc/font/font.ttf サーバー監視設定ファイル格納ディレクトリ作成

1
  • # mkdir /usr/local/nagios/etc/servers
contacts.cfgの編集
1
  • # vi /usr/local/nagios/etc/objects/contacts.cfg

    1 2 3 4 5 6

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 管理者メールアドレス ← 管理者メールアドレスを指定 }

localhost.cfgの編集 SSHとHTTPの監視設定

1
  • # vi /usr/local/nagios/etc/objects/localhost.cfg

    1 2 3 4 5 6 7 8 9

    10 11 12 13 14 15 16

!

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 #元のコンフィグをコメント
check_command check_http_url!http://localhost #URL指定できるようにコマンドコンフィグも変更している notifications_enabled 1 #1を指定(HTTP状態変化時に通知する) }

commands.cfgの編集 一番下のhttpのコマンドを追加しているのはデフォルトだと(/var/www/html/index.html)を確認しようとして403エラーになるため

1
# vi /usr/local/nagios/etc/objects/commands.cfg
1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17

!

!

!

# ‘notify-host-by-email’ command definition define command{

command_name notify-host-by-email command_line /usr/bin/printf “%b” “* Nagios *nnNotification Type: $NOTIFICATIONTYPE$nHost: $HOSTNAME$nState: $HOSTSTATE$nAddress: $HOSTADDRESS$nInfo: $HOSTOUTPUT$nnDate/Time: $LONGDATETIME$n” | /usr/bin/nkf -j | /bin/mail -s “** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **” $CONTACTEMAIL$ }

# ‘notify-service-by-email’ command definition define command{

command_name notify-service-by-email command_line /usr/bin/printf “%b” “* Nagios *nnNotification Type: $NOTIFICATIONTYPE$nnService: $SERVICEDESC$nHost: $HOSTALIAS$nAddress: $HOSTADDRESS$nState: $SERVICESTATE$nnDate/Time: $LONGDATETIME$nnAdditional Info:nn$SERVICEOUTPUT$” | /usr/bin/nkf -j | /bin/mail -s “** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” $CONTACTEMAIL$

# ‘check_http2’ command definition define command{ command_name check_http_url command_line $USER1$/check_http -H $HOSTADDRESS$ -u $ARG1$ }

Apacheの設定 nagiosグループをapacheグループへ追加する

1

# usermod -G nagios apache ApacheにNagiosの設定を追加

1
# vi /etc/httpd/conf.d/nagios.conf
1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

!



!

!



!

<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.10.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.10.0/24 #内部ネットワーク(例:192.168.10.0/24)からのアクセスを許可) AuthName “Nagios Access” AuthType Basic AuthUserFile /usr/local/nagios/etc/htpasswd.users Require valid-user

</Directory> Apacheの設定変更を反映

1

# /etc/rc.d/init.d/httpd reload Nagios管理ユーザ(nagiosadmin)の作成

1

# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin Nagiosの起動 Nagiosを起動する 自動起動の設定も追加する

1 2 3


# /etc/rc.d/init.d/nagios start # chkconfig –add nagios # chkconfig nagios on 監視ホストの追加 ■監視ホスト追加 リモートに監視ホストがある場合の追加方法です 一台しかない場合はローカルホストについてるIPアドレスで実験として追加

ホスト名をコンフィグ名として付与
1
# vi /usr/local/nagios/etc/servers/newserver.cfg
1 2 3 4 5 6 7 8 9

10 11 12 13

define host{
use linux-server host_name newserver alias newserver address 192.168.10.10 }
define service{
use generic-service host_name newserver service_description PING check_command check_ping!100.0,20%!500.0,60% }
Nagiosを再起動
1

# /etc/rc.d/init.d/nagios restart 監視サービス追加(ローカルホスト) メモリ空き状況、NTPのコマンドをを最終行に追加

1
# vi /usr/local/nagios/etc/objects/commands.cfg
1 2 3 4 5 6 7 8 9

10 11

!

!

# ‘check_mem’ command definition define command{

command_name check_mem command_line $USER1$/check_mem.pl -f -w $ARG1$ -c $ARG2$ }

# ‘check_ntp’ command definition define command{

command_name check_ntp command_line $USER1$/check_ntp -H $ARG1$ -w $ARG2$ -c $ARG3$ }
空きメモリ、ログインユーザ数、NTPに時刻ずれ設定を追加
1
# vi /usr/local/nagios/etc/objects/localhost.cfg
1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21

define service{
use generic-service host_name localhost service_description Memory Free check_command check_mem!20!10 #空きメモリ量が20%で警告、10%で異常 }
define service{
use generic-service host_name localhost service_description Current Users check_command check_local_users!3!5 #ログインユーザー数が3以上で警告、5以上で異常とする }
define service{
use generic-service host_name localhost service_description NTP check_command check_ntp!0.rhel.pool.ntp.org!1!2 #外部NTPサーバーと時間が1秒ずれていたら警告、2秒ずれていたら異常とする }
Nagiosを再起動
1

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

目次

このページ