オープンソースの統合監視ソフトウェア「Nagios Server」
Nagiosは、Linux 上で実行するオープンソースの監視ソリューションです。
ネットワーク、アプリケーション、またはサーバーの重要なパラメーターを定期的にチェックするように設計されています。これらのパラメータには、マイクロプロセッサの負荷、実行中のプロセス数、ログ ファイル、ディスクおよびメモリの使用量の他、SMTP (Simple Mail Transfer Protocol)、HTTP (Hypertext Transfer Protocol)、POP3 ( Post Office Protocol 3)の他の多くのサービスもチェックできます。
Nagoisを実行するにはPHP、MySQLなどのデータベース、ApacheやNginxなどのWebサーバーが必要です。今回はこれらすべてが構成済みという前提で進めます。
2. Nagios のインストール
①インストール
# pkg install nagios4
➁Nagios グループに Apache ユーザーを追加
# pw groupmod nagios -m www
➂設定ファイルの準備
# cd /usr/local/etc/nagios
# cp nagios.cfg-sample nagios.cfg
# cp cgi.cfg-sample cgi.cfg
# cp resource.cfg-sample resource.cfg
# chown -R nagios:nagios /usr/local/etc/nagios/
objectsディレクトリ内のサンプルもコピーします
# cd /usr/local/etc/nagios/objects
# cp commands.cfg-sample commands.cfg
# cp contacts.cfg-sample contacts.cfg
# cp localhost.cfg-sample localhost.cfg
# cp printer.cfg-sample printer.cfg
# cp switch.cfg-sample switch.cfg
# cp templates.cfg-sample templates.cfg
# cp timeperiods.cfg-sample timeperiods.cfg
# cp windows.cfg-sample windows.cfg
3. Nagios プラグインの確認
# pkg install nagios-plugins
下記のとおりnagios-pluginsが利用可能である
# ls /usr/local/libexec/nagios/
check_apt check_ftp check_mrtgtraf check_pop check_tcp
check_breeze check_http check_nagios check_procs check_time
check_by_ssh check_icmp check_nntp check_real check_udp
check_clamd check_ifoperstatus check_nntps check_rpc check_ups
check_cluster check_ifstatus check_nt check_sensors check_users
check_dhcp check_imap check_ntp check_simap check_wave
check_dig check_ircd check_ntp_peer check_smtp negate
check_disk check_jabber check_ntp_time check_spop remove_perfdata
check_disk_smb check_load check_nwstat check_ssh urlize
check_dummy check_log check_oracle check_ssl_validity utils.pm
check_file_age check_mailq check_overcr check_ssmtp utils.sh
check_flexlm check_mrtg check_ping check_swap
4. NagiosとApacheの連携
nagios.confを作成しapacheに読み込む
# vi /usr/local/etc/apache24/Includes/nagios.conf
下記を記述
Alias /nagios /usr/local/www/nagios
<Directory "/usr/local/www/nagios">
Options FollowSymLinks
AllowOverride None
# アクセス制御
<RequireAll>
# 特定のIPまたはネットワークのみ許可
Require ip 127.0.0.1 192.168.11.0/24
# ユーザー認証: 有効なユーザー全員のアクセスを許可
Require valid-user
</RequireAll>
# ベーシック認証の設定
AuthType Basic
AuthName "Nagios Access"
AuthUserFile "/usr/local/etc/nagios/htpasswd.users"
</Directory>
# Nagios CGI実行ディレクトリ
ScriptAlias /nagios/cgi-bin /usr/local/www/nagios/cgi-bin
<Directory "/usr/local/www/nagios/cgi-bin">
Options ExecCGI
AllowOverride None
<RequireAll>
Require ip 127.0.0.1 192.168.11.0/24
Require valid-user
</RequireAll>
AuthType Basic
AuthName "Nagios Access"
AuthUserFile "/usr/local/etc/nagios/htpasswd.users"
</Directory>
Apache再起動
# service apache24 restart
5. Nagios Web ユーザーの作成
Nagios Web ダッシュボードにアクセスするためのユーザー アカウントを作成する。このユーザーアカウントは、認証に使用される。
ユーザーのデフォルト名はnagiosadminで、/usr/local/etc/nagios/cgi.cfgファイル内に優先ユーザー名として定義されています。
# htpasswd -c /usr/local/etc/nagios/htpasswd.users nagiosadmin
New password: [password]
Re-type new password: [again password]
Adding password for user nagiosadmin
所有権と権限を設定
# chown www:www /usr/local/etc/nagios/htpasswd.users
# chmod 640 /usr/local/etc/nagios/htpasswd.users
6. Nagios 起動
Nagios サービスの自動起動の設定とサービスの開始
# sysrc nagios_enable="yes"
# service nagios start
サービスが実行しているか確認
# service nagios status
nagios is running as pid 2926.
7. Nagios Web インターフェイスにアクセス
任意のブラウザで http://[IP_Address]/nagios/にアクセスし[Username]にnagiosadmin、[Password]には上記でユーザーを作成したとき指定したパスワードを入力し、[ログイン]

ログインに成功すると、以下のダッシュボードが表示されます。

ホストの可用性を表示
左メニューの[Hosts]をクリック
現状ではNagios Serverのみ表示されている

左メニューの [Tactical Overview] をクリックすると監視データを閲覧できる

左メニューの [Current Status] [Services] をクリック : 現在の監視サービス内容が表示される

※ SSHポートをカスタム設定で2244を割り当てている場合は下記の通りlocalhost.cfgを変更しておきます
# vi /usr/local/etc/nagios/objects/localhost.cfg
143行目当たり
check_command check_ssh
↓
check_command check_ssh!-p 2244
# service nagios restart
7. Nagios エージェントの構成
エージェントを監視するため。以下をインストールする
• プラグインを実行するNRPE Agent
① Nagios NRPE Agentのインストール
# pkg install nrpe
➁自動起動とプロセスの開始
# vi /etc/rc.conf
下記追加
nrpe_enable="YES"
# service nrpe start
➁ファイアウォールでNRPEのポートを開く
NRPEはデフォルトでTCP 5666ポートを使用します。ファイアウォールが動作している場合は、Nagiosモニタリングサーバーからの外部チェックを許可する場合は、このポートを開きます。
# vi /usr/local/etc/ipfw.rules
下記追加
$IPF xxx allow tcp from any to any 5666 in
$IPF xxx allow tcp from any to any 5666 out
ipfw 再起動してルール読み込み
# service ipfw restart
8. 監視ホストの追加
下記サーバーをホストに追加し、 単純なPing による死活監視対象として設定
OS : FreeBSD14.3
IPアドレス : 192.168.11.85
①設定ファイル編集
# vi /usr/local/etc/nagios/nagios.cfg
51行目 : コメント解除
cfg_dir=/usr/local/etc/nagios/servers
➁ ディレクトリー作成
# mkdir /usr/local/etc/nagios/servers
# chgrp nagios /usr/local/etc/nagios/servers
# chmod 750 /usr/local/etc/nagios/servers
➂ 定義ファイル新規作成
"korodes.cfg" 名称は任意でよい
# vi /usr/local/etc/nagios/servers/korodes.cfg
下記記述
define host {
use freebsd-server
host_name korodes
alias korodes
address 192.168.11.85
}
define service {
use generic-service
host_name korodes
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
④ Nagiosサーバー再起動
# service nagios restart
Nagios サーバーにログイン(http://[サーバーIPアドレス]/nagios)しHostsを見るとホストが追加されている

9. 監視サービスの追加
上記で追加したホストに監視サービスを追加する
OS : FreeBSD14.3
IPアドレス : 192.168.11.85
NRPEデーモンとNagiosプラグインをインストールする必要があります。
9.1 監視対象サーバー側の設定
①Nagiosプラグインをインストール
# pkg install nagios-plugins
➁ NRPEエージェントをインストール
# pkg install nrpe
➂ファイアウォールでNRPEのポートを開く
NRPEはデフォルトでTCP 5666ポートを使用します。ファイアウォールが動作している場合は、Nagiosモニタリングサーバーからの外部チェックを許可するために、このポートを開きます。
# vi /usr/local/etc/ipfw.rules
下記追加
$IPF xxx allow tcp from any to any 5666 in
$IPF xxx allow tcp from any to any 5666 out
ipfw 再起動してルール読み込み
# service ipfw restart
④ 設定ファイル編集
# vi /usr/local/etc/nrpe.cfg
106行目 : 接続を許可するホストを追記 (Nagios サーバーを指定)
allowed_hosts=127.0.0.1,::1,192.168.11.83
122行目 : コマンドの引数を許可
dont_blame_nrpe=1
300-304行目コメントにし、その下に追加
# command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
# command[check_load]=/usr/lib/nagios/plugins/check_load -r -w .15,.10,.05 -c .30,.25,.20
# command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
# command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
# command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
pluginの一部を追加する
command[check_by_ssh]=/usr/lib/nagios/plugins/check_by_ssh $ARG1$
command[check_dhcp]=/usr/lib/nagios/plugins/check_dhcp $ARG1$
command[check_disk]=/usr/lib/nagios/plugins/check_disk $ARG1$
command[check_file_age]=/usr/lib/nagios/plugins/check_file_age $ARG1$
command[check_ftp]=/usr/lib/nagios/plugins/check_ftp $ARG1$
command[check_http]=/usr/lib/nagios/plugins/check_http $ARG1$
command[check_imap]=/usr/lib/nagios/plugins/check_imap $ARG1$
command[check_load]=/usr/lib/nagios/plugins/check_load $ARG1$
command[check_log]=/usr/lib/nagios/plugins/check_log $ARG1$
command[check_mysql]=/usr/lib/nagios/plugins/check_mysql $ARG1$
command[check_ntp]=/usr/lib/nagios/plugins/check_ntp $ARG1$
command[check_ntp_peer]=/usr/lib/nagios/plugins/check_ntp_peer $ARG1$
command[check_ntp_time]=/usr/lib/nagios/plugins/check_ntp_time $ARG1$
command[check_ping]=/usr/lib/nagios/plugins/check_ping $ARG1$
command[check_pop]=/usr/lib/nagios/plugins/check_pop $ARG1$
command[check_spop]=/usr/lib/nagios/plugins/check_spop $ARG1$
command[check_procs]=/usr/lib/nagios/plugins/check_procs $ARG1$
command[check_smtp]=/usr/lib/nagios/plugins/check_smtp $ARG1$
command[check_ssmtp]=/usr/lib/nagios/plugins/check_ssmtp $ARG1$
command[check_ssh]=/usr/lib/nagios/plugins/check_ssh $ARG1$
command[check_swap]=/usr/lib/nagios/plugins/check_swap $ARG1$
command[check_tcp]=/usr/lib/nagios/plugins/check_tcp $ARG1$
command[check_udp]=/usr/lib/nagios/plugins/check_udp $ARG1$
command[check_ups]=/usr/lib/nagios/plugins/check_ups $ARG1$
command[check_users]=/usr/lib/nagios/plugins/check_users $ARG1$
⑤ nrpeサーバー有効化、起動
# vi /etc/rc.conf
下記追加
nrpe_enable="YES"
# service nrpe start
※NRPEが動作しているか確認のためNagiosサーバー側で下記コマンドを実行して下記のようになればOK
# /usr/local/libexec/nagios/check_nrpe -H 192.168.11.85
NRPE v4.1.3
9.2 Nagios サーバー側の設定
① commands.cfg編集
# vi /usr/local/etc/nagios/objects/commands.cfg
最終行に追記
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
➁先ほどホストを追加したときに作成した korodes.cfg を編集する
今回はHTTP,SSH,FTPを追加してみる
# vi /usr/local/etc/nagios/servers/korodes.cfg
# 以下を追加する
# 'HTTP' command definition
define service{
use local-service
host_name korodes
service_description HTTP
check_command check_http
}
# 'SSH' command definition
define service{
use local-service
host_name korodes
service_description SSH
check_command check_ssh
}
# 'FTP' command definition
define service{
use local-service
host_name korodes
service_description FTP
check_command check_ftp
}
➂ Nagios 再起動
# service nagios restart
④ http://[Nagios Server IP Address]/nagios にアクセスする
下図のように新しく追加した監視サービスが追加されている

