VirtualBox nagiosサーバー構築後エラーが出たため調査した

### はじめに
Virtualboxでnagiosサーバー構築後、nagiosサービスを再起動した際に
エラーが出たため、調査したことをまとめました

### 前提条件
VirtualBoxインストール済み
nagiosサーバーとnagiosクライアントのOSはCentOS7であること
nagiosサーバーとnagiosクライアントが構築済みであること
※nagiosクライアントは、node01のホスト名で設定している。


### 調査手順
#### nagiosサーバーにSSH接続をする
#### nagiosサービスを再起動したら、失敗した
```ゲストOS
 [root@localhost ~]# systemctl restart nagios
Job for nagios.service failed because the control process exited with error code. See "systemctl status nagios.service" and "journalctl -xe" for details.
```
#### 上記のメッセージの通り、journalctl -xeコマンドでエラーメッセージを確認した　
journalctl -xeのコマンドは、systemdのログ(ジャーナル)を閲覧する。
-xの意味は、説明文付きで表示、eはジャーナル末尾の最新を表示
※LPICレベル1の小豆本でコマンド確認
```ゲストOS
[root@localhost servers]# journalctl -xe
--
-- The result is failed.
 5月 07 07:42:45 localhost.localdomain systemd[1]: Unit nagios.service entered failed state.
 5月 07 07:42:45 localhost.localdomain systemd[1]: nagios.service failed.
 5月 07 07:42:45 localhost.localdomain polkitd[632]: Unregistered Authentication Agent for unix-process:1546:123662 (system bus name :1.31, object path /org/freedesktop/PolicyKit1/Authentic
 5月 07 07:45:48 localhost.localdomain polkitd[632]: Registered Authentication Agent for unix-process:1568:141936 (system bus name :1.32 [/usr/bin/pkttyagent --notify-fd 5 --fallback], obje
 5月 07 07:45:48 localhost.localdomain systemd[1]: Starting Nagios Core 4.4.6...
-- Subject: Unit nagios.service has begun start-up
-- Defined-By: systemd
```
#### 上記のログではエラーの原因が分からなかったため、nagiosのログを確認した
```ゲストOS
less /var/log/nagios/nagios.log
[1651876640] SERVICE ALERT: node01;PING;CRITICAL;HARD;1;PING CRITICAL - Packet loss = 100%
[1651876684] HOST ALERT: node01;DOWN;SOFT;2;PING CRITICAL - Packet loss = 100%
[1651876774] wproc: Core Worker 1416: job 2 (pid=1444) timed out. Killing it
[1651876774] wproc: CHECK job 2 from worker Core Worker 1416 timed out after 30.01s
[1651876774] wproc:   host=node01; service=(null);
[1651876774] wproc:   early_timeout=1; exited_ok=0; wait_status=0; error_code=62;
[1651876774] Warning: Check of host 'node01' timed out after 30.01 seconds
```
以下のサイトでエラーの内容を確認した。
「early_timeout=1; exited_ok=0; wait_status=0; error_code=62;」
https://support.nagios.com/forum/viewtopic.php?f=7&t=51317
「ホストチェックが失敗した場合は正常であり、ホストがダウンしているか、icmpパケットに応答していないことを示します。」サイトの情報を一部抜粋
また、ログ「HOST ALERT: node01;DOWN;SOFT;2;PING CRITICAL - Packet loss = 100%」から、nagiosサーバーがnode01サーバーと通信できていないことが分かったため、node01のコンフィグファイルを再度確認することにした。
#### node01のコンフィグファイルを確認した
以下からnode01のホスト定義が、コンフィグファイル(node01.cfg)に入ってないことを確認した。
※node01のコンフィグファイル(/etc/nagios/servers/node01.cfg)は、nagiosサーバーにデフォルトには存在しないため、構築の際に新規に作成したものです。
```ゲストOS
[root@localhost servers]# cat /etc/nagios/servers/node01.cfg
define service{
    use                    generic-service
    host_name              node01
    service_description    Root Partition
    check_command          check_nrpe!check_disk\!20%\!10%\!/
}
define service{
    use                    generic-service
    host_name              node01
    service_description    Current Users
    check_command          check_nrpe!check_users\!20\!50
}
[root@localhost servers]#
```
#### コンフィグファイル(node01.cfg)に、node01のホスト定義を追加した
```ゲストOS
[root@localhost servers]# cat /etc/nagios/servers/node01.cfg
※以下のホスト定義を追加
define host{
    use                     linux-server
    host_name               node01
    alias                   node01
    address                 192.168.0.3 ※node01のIPアドレスを設定
}
define service{
    use                    generic-service
    host_name              node01
    service_description    Root Partition
    check_command          check_nrpe!check_disk\!20%\!10%\!/
}
define service{
    use                    generic-service
    host_name              node01
    service_description    Current Users
    check_command          check_nrpe!check_users\!20\!50
}
```
#### nagiosサービスを再起動したら、成功した
systemctl restart(再起動)でエラーが出なかったのと、systemctl status(サービスの稼働状態)でエラーメッセージが含まれてなかったため、再起動が成功したと判断した。
```ゲストOS
[root@localhost servers]# systemctl restart nagios
[root@localhost servers]#
[root@localhost servers]# systemctl status nagios
● nagios.service - Nagios Core 4.4.6
   Loaded: loaded (/usr/lib/systemd/system/nagios.service; disabled; vendor preset: disabled)
   Active: active (running) since 土 2022-05-07 08:37:57 JST; 5s ago
     Docs: https://www.nagios.org/documentation
  Process: 1836 ExecStopPost=/usr/bin/rm -f /var/spool/nagios/cmd/nagios.cmd (code=exited, status=0/SUCCESS)
  Process: 1833 ExecStop=/usr/bin/kill -s TERM ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 1838 ExecStart=/usr/sbin/nagios -d /etc/nagios/nagios.cfg (code=exited, status=0/SUCCESS)
  Process: 1837 ExecStartPre=/usr/sbin/nagios -v /etc/nagios/nagios.cfg (code=exited, status=0/SUCCESS)
 Main PID: 1841 (nagios)
   CGroup: /system.slice/nagios.service
           tq1841 /usr/sbin/nagios -d /etc/nagios/nagios.cfg
           tq1842 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh
           tq1843 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh
           tq1844 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh
           tq1845 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh
           tq1846 /usr/sbin/nagios -d /etc/nagios/nagios.cfg
           tq1847 /usr/lib64/nagios/plugins/check_ping -H 192.168.11.222 -w 3000.0,80% -c 5000.0,100% -p 5
           mq1848 /usr/bin/ping -n -U -w 30 -c 5 192.168.11.222

 5月 07 08:37:58 localhost.localdomain nagios[1841]: qh: Socket '/var/spool/nagios/cmd/nagios.qh' successfully initialized
 5月 07 08:37:58 localhost.localdomain nagios[1841]: qh: core query handler registered
 5月 07 08:37:58 localhost.localdomain nagios[1841]: qh: echo service query handler registered
 5月 07 08:37:58 localhost.localdomain nagios[1841]: qh: help for the query handler registered
 5月 07 08:37:58 localhost.localdomain nagios[1841]: wproc: Successfully registered manager as @wproc with query handler
 5月 07 08:37:58 localhost.localdomain nagios[1841]: wproc: Registry request: name=Core Worker 1843;pid=1843
 5月 07 08:37:58 localhost.localdomain nagios[1841]: wproc: Registry request: name=Core Worker 1844;pid=1844
 5月 07 08:37:58 localhost.localdomain nagios[1841]: wproc: Registry request: name=Core Worker 1845;pid=1845
 5月 07 08:37:58 localhost.localdomain nagios[1841]: wproc: Registry request: name=Core Worker 1842;pid=1842
 5月 07 08:37:58 localhost.localdomain nagios[1841]: Successfully launched command file worker with pid 1846
[root@localhost servers]#
```
#### nagiosの画面で、監視対象のホストが監視されているか確認した
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/b0bf8284-72a1-7db1-7a94-bd84cb865b84.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/b16467d4-4b3c-234f-261c-1c8e920f69b7.png)
#### まとめ
nagiosサーバーの構築はコンフィグファイルをたくさん修正するため、設定ミスが起こりやすい。
nagiosサーバー構築後、nagiosサービス再起動時のエラーは、コンフィグファイルの設定誤りの可能性が高いです。
原因が不明な場合、先ずは、/var/log/nagios/nagios.logで詳細なログを確認し、エラーメッセージをGoogleなどの検索エンジンで調査する流れになります。