VirtualBox nagiosクライアントの監視設定

# はじめに
nagiosクライアントに監視設定を追加して監視できるか検証してみた。

以下のサイトからnagiosについて学びました。
infracollege
https://infracollege.vamdemicsystem.black/linux/

# 前提条件
VirtualBoxがインストール済みであること

nagiosサーバーの構築済みであること
nagiosサーバーの構築は以下のサイトを参考にしてください
https://qiita.com/gama1234/items/6869d23c5bc287403f78

今回監視設定するnagiosクライアントのゲストOSの作成とネットワーク設定が完了していること
ネットワーク設定は以下のサイトを参考にしてください
https://qiita.com/gama1234/items/d857fe5941ad5519f04c

# 監視設定追加手順
nagiosクライアントの監視追加前のエビデンス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/c425e75c-a556-87aa-3593-b338b79c36ca.png)

### リポジトリの確認をする
以下から拡張リポジトリが追加されていないことを確認した。
```
[root@localhost log]# yum repolist
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * extras: ftp.jaist.ac.jp
 * updates: ftp.jaist.ac.jp
リポジトリー ID                                             リポジトリー名                                                 状態
base/7/x86_64                                               CentOS-7 - Base                                                10,072
extras/7/x86_64                                             CentOS-7 - Extras                                                 509
updates/7/x86_64                                            CentOS-7 - Updates                                              3,728
repolist: 14,309
```
### 拡張リポジトリを追加する
```
[root@localhost log]# yum install epel-release
途中の処理記載省略
Is this ok [y/d/N]: yを入れてインストール開始する。

以下のメッセージが出てくるため、GPG検証をするため、yを入れる。
 Package    : centos-release-7-9.2009.0.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
上記の処理を行います。よろしいでしょうか？ [y/N]y
途中の処理記載省略
インストール:
  epel-release.noarch 0:7-11
完了しました!
#epelのインストールを確認した
[root@localhost log]# rpm -qa | grep epel
epel-release-7-11.noarch
[root@localhost log]#
```
### nagiosのエージェントをインストールする
先程追加したepelリポジトリからnagiosエージェント(nrpe)をインストールする。
```
[root@localhost log]# yum --enablerepo=epel install nrpe
[root@localhost log]# rpm -qa | grep nrpe
nrpe-4.0.3-6.el7.x86_64
#nagiosのプラグイン(監視設定)インストール
[root@localhost log]# yum --enablerepo=epel -y install nagios-plugins-{ping,disk,users,procs,load,swap,ssh}
```
### nagiosエージェントの設定ファイルを一部修正する
#### 修正前と修正後で比較するため、バックアップを取得する
```ゲストOS
[root@localhost nagios]# cd /etc/nagios
[root@localhost nagios]# cp -p nrpe.cfg nrpe.cfgbk
```
#### nagiosエージェントの設定ファイルを修正する
```ゲストOS
[root@localhost nagios]# vi nrpe.cfg
以下を変更した。
#1.192.168.0.2 nagiosサーバーのIPアドレスを追加(nrpeが受け入れるIPアドレス設定)
allowed_hosts=127.0.0.1,::1,192.168.0.2  
#2.nrpeの監視有効化
dont_blame_nrpe=1
#3.各プラグインの設定に引数は変数を設定
以下はコメントアウトした
#command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10
#command[check_load]=/usr/lib64/nagios/plugins/check_load -r -w .15,.10,.05 -c .30,.25,.20
#command[check_hda1]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
#command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_procs -w 5 -c 10 -s Z
#command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 150 -c 200
以下を追加
command[check_users]=/usr/lib64/nagios/plugins/check_users -w $ARG1$ -c $ARG2$
command[check_load]=/usr/lib64/nagios/plugins/check_load -w $ARG1$ -c $ARG2$
command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
command[check_procs]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$  
```
#### 修正前と修正後の差分比較
上記の1~3のみ変更されていることを確認した

```ゲストOS
[root@localhost nagios]#　修正後と修正前の差分
[root@localhost nagios]# sdiff -s nrpe.cfg nrpe.cfgbk
allowed_hosts=127.0.0.1,::1,192.168.0.2                       | allowed_hosts=127.0.0.1,::1
dont_blame_nrpe=1                                             | dont_blame_nrpe=0
#command[check_users]=/usr/lib64/nagios/plugins/check_users - | command[check_users]=/usr/lib64/nagios/plugins/check_users -w
#command[check_load]=/usr/lib64/nagios/plugins/check_load -r  | command[check_load]=/usr/lib64/nagios/plugins/check_load -r -
#command[check_hda1]=/usr/lib64/nagios/plugins/check_disk -w  | command[check_hda1]=/usr/lib64/nagios/plugins/check_disk -w 2
#command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_ | command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_p
#command[check_total_procs]=/usr/lib64/nagios/plugins/check_p | command[check_total_procs]=/usr/lib64/nagios/plugins/check_pr
                                                              |
command[check_users]=/usr/lib64/nagios/plugins/check_users -w <
command[check_load]=/usr/lib64/nagios/plugins/check_load -w $ <
command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w $ <
command[check_procs]=/usr/lib64/nagios/plugins/check_procs -w <
```
### nagiosエージェントの再起動をする
```ゲストOS
#nrpeのサービスを再起動
[root@localhost nagios]# systemctl restart nrpe
#nrpeのサービスの状態確認
[root@localhost nagios]# systemctl status nrpe
● nrpe.service - Nagios Remote Program Executor
   Loaded: loaded (/usr/lib/systemd/system/nrpe.service; disabled; vendor preset: disabled)
   Active: active (running) since 木 2022-05-05 09:34:50 JST; 5s ago
     Docs: http://www.nagios.org/documentation
 Main PID: 9346 (nrpe)
   CGroup: /system.slice/nrpe.service
           mq9346 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -f
途中の処理記載省略
#nrpeのサービスを自動起動に設定
[root@localhost nagios]# systemctl enable nrpe
Created symlink from /etc/systemd/system/multi-user.target.wants/nrpe.service to /usr/lib/systemd/system/nrpe.service.
```
### nagios通信用のポートを許可する
```ゲストOS
[root@localhost nagios]# firewall-cmd --add-port=5666/tcp --permanent
success
[root@localhost nagios]# firewall-cmd --reload
success
[root@localhost nagios]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: dhcpv6-client ssh
  ports: 5666/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
```
### nagiosサーバー側の設定
#### nagiosの監視するホスト設定
```ゲストOS
[root@localhost nagios]# cd /etc/nagios
[root@localhost nagios]# cp -p nagios.cfg nagios.cfgbk
#1.nagios.cfgを開き、cfg_dir=/etc/nagios/serversのコメントアウトを削除
[root@localhost nagios]# vi nagios.cfg 

#2.nagios.cfgの修正後と修正前の差分確認
[root@localhost nagios]# sdiff -s nagios.cfg nagios.cfgbk
cfg_dir=/etc/nagios/servers                                   | #cfg_dir=/etc/nagios/servers

#3./etc/nagios/serversのフォルダ作成
[root@localhost nagios]# ls -ltr /etc/nagios/servers
ls: /etc/nagios/servers にアクセスできません: そのようなファイルやディレクトリはありません
[root@localhost nagios]# mkdir /etc/nagios/servers
[root@localhost nagios]#
[root@localhost nagios]# ls -ltr /etc/nagios/servers
合計 0    
#4.作成したフォルダの所有ユーザーとグループをnagiosに変更
chown nagios.nagios /etc/nagios/servers/
#5.権限を変更
[root@localhost nagios]# chmod 750 /etc/nagios/servers
[root@localhost nagios]# ls -ld /etc/nagios/servers
drwxr-x--- 2 nagios nagios 6  5月  5 10:01 /etc/nagios/servers                       <
```
#### nagiosエージェント向けにping監視追加
**必ず既にある設定値を変更する場合は、コンフィグファイルのバックアップを取得してください**
nagiosの文法チェックに引っかかった時や問題が発生した際に元のファイルに戻すためです。
```ゲストOS
[root@localhost nagios]# vi /etc/nagios/servers/node01.cfg
define host{
    use                     linux-server
    host_name               node01
    alias                   node01
    address                 192.168.0.3　※nagiosエージェントのIPアドレスを追加
}
define service{
    use                     generic-service
    host_name               node01
    service_description     PING
    check_command           check_ping!100.0,20%!500.0,60%
}  
#所有ユーザーとグループを設定する
[root@localhost nagios]#chown nagios.nagios /etc/nagios/servers/node01.cfg
```
#### nagiosサービスの再起動前にnagiosの文法チェックをする
文法チェックせずにnagiosサービスを再起動した際に、文法に間違いがあれば
nagiosサービスの起動に失敗して監視自体が停止してしまいます。
※cfgの拡張子が含まれるファイルは、オブジェクトファイル(監視対象)と認識されます。
バックアップファイルはcfgbkYYYYMMDD（バックアップ日）みたいに付けるのも良いです。
```
nagiosの文法チェックは、nagiosのメイン設定ファイル(/etc/nagios/nagios.cfg)を指定して文法チェックをする
メインファイルの文法チェックをすると、nagiosのすべてのコンフィグファイルの文法チェックがされる様です。
[root@localhost nagios]# nagios -v /etc/nagios/nagios.cfg

Nagios Core 4.4.9
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2022-11-16
License: GPL

Website: https://www.nagios.org
Reading configuration data...
   Read main config file okay...
   Read object config files okay...

Running pre-flight check on configuration data...

Checking objects...
        Checked 8 services.
        Checked 1 hosts.
        Checked 1 host groups.
        Checked 0 service groups.
        Checked 1 contacts.
        Checked 1 contact groups.
        Checked 24 commands.
        Checked 5 time periods.
        Checked 0 host escalations.
        Checked 0 service escalations.
Checking for circular paths...
        Checked 1 hosts
        Checked 0 service dependencies
        Checked 0 host dependencies
        Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

```
#### 設定ファイルを反映させるため、nagiosサービスを再起動する
```
[root@localhost nagios]#systemctl restart nagios                                        <
```
#### nagiosサービスのステータスをチェックする
active (running)であることを確認する。
active以外の場合は、本番環境の場合は影響が出るため変更前の設定ファイルに戻し、再度nagiosサービスを再起動する
```
[root@localhost nagios]#systemctl status nagios 
● nagios.service - Nagios Core 4.4.9
   Loaded: loaded (/usr/lib/systemd/system/nagios.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2023-01-14 23:37:42 JST; 2s ago
     Docs: https://www.nagios.org/documentation
  Process: 1890 ExecStopPost=/usr/bin/rm -f /var/spool/nagios/cmd/nagios.cmd (code=exited, status=0/SUCCESS)
  Process: 1870 ExecStop=/usr/bin/kill -s TERM ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 2352 ExecStart=/usr/sbin/nagios -d /etc/nagios/nagios.cfg (code=exited, status=0/SUCCESS)
  Process: 2351 ExecStartPre=/usr/sbin/nagios -v /etc/nagios/nagios.cfg (code=exited, status=0/SUCCESS)
 Main PID: 2355 (nagios)
   CGroup: /system.slice/nagios.service
           tq2355 /usr/sbin/nagios -d /etc/nagios/nagios.cfg
           tq2357 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh
           tq2358 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh
           tq2359 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh
           tq2360 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh
           tq2361 /usr/sbin/nagios -d /etc/nagios/nagios.cfg
           tq2362 /usr/lib64/nagios/plugins/check_ping -H 127.0.0.1 -w 3000.0,80% -c 5000.0,100% -p 5
           mq2363 /usr/bin/ping -n -U -w 30 -c 5 127.0.0.1

 1月 14 23:37:42 localhost.localdomain nagios[2355]: qh: Socket '/var/spool/nagios/cmd/nagios.qh' successfully initialized
 1月 14 23:37:42 localhost.localdomain nagios[2355]: qh: core query handler registered
 1月 14 23:37:42 localhost.localdomain nagios[2355]: qh: echo service query handler registered
 1月 14 23:37:42 localhost.localdomain nagios[2355]: qh: help for the query handler registered
 1月 14 23:37:42 localhost.localdomain nagios[2355]: wproc: Successfully registered manager as @wproc with query handler
 1月 14 23:37:42 localhost.localdomain nagios[2355]: wproc: Registry request: name=Core Worker 2357;pid=2357
 1月 14 23:37:42 localhost.localdomain nagios[2355]: wproc: Registry request: name=Core Worker 2358;pid=2358
 1月 14 23:37:42 localhost.localdomain nagios[2355]: wproc: Registry request: name=Core Worker 2359;pid=2359
 1月 14 23:37:42 localhost.localdomain nagios[2355]: wproc: Registry request: name=Core Worker 2360;pid=2360
 1月 14 23:37:42 localhost.localdomain nagios[2355]: Successfully launched command file worker with pid 2361                                    <
```
#### nagiosのnrpe設定
```ゲストOS
[root@localhost ~]# yum --enablerepo=epel -y install nagios-plugins-nrpe
[root@localhost objects]# cd /etc/nagios/objects
[root@localhost objects]# cp -p commands.cfg commands.cfgbk
#nrpeを使用してリモート監視ホスト監視(linux)のプラグインを追加
[root@localhost objects]# vi commands.cfg 
229行目に以下を追加する
define command{
    command_name        check_nrpe
    command_line        $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

[root@localhost objects]# sdiff -s commands.cfg commands.cfgbk
define command{                                               <
    command_name        check_nrpe                            <
    command_line        $USER1$/check_nrpe -H $HOSTADDRESS$ - <
} 
#設定ファイルを反映させるため、nagiosサービスを再起動する。
[root@localhost nagios]#systemctl restart nagios                                       
```
#### nagiosの監視が面からnode01が監視されていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/29412ef1-62a9-ea17-eab8-78a1b1ccf9c3.png)