Virtualboxでnagiosを構築してみた

# はじめに
nagiosを業務で使うようになり、どんなものか確認するためにVirtualboxで構築してみた。

nagiosは、Zabbixと同様にホストとリソース(CPU メモリ　ハードディスク)を監視するモニタリングツールです。
Zabbixの様にWebインタフェースの画面(GUI)で監視の設定が出来ません。
監視する際は、nagiosサーバーのOS内でプラグイン(監視用のコマンド)を使って監視を行います。

個人的な感想としては、nagiosはZabbixに比べると、データベースの構築がないため、
Zabbixに比べて簡単に構築出来ますが、監視の設定追加やアラート発報条件の閾値を変更する際に、
nagiosサーバーにssh接続し、linuxコマンドを使ってコンフィグファイルを修正する必要があるため、
初心者には少しハードル高いと感じました。

以下のサイトでnagiosサーバー構築を学びました。
infracollege
https://infracollege.vamdemicsystem.black/linux/

# 前提条件
Virtualboxをインストール済み
以下のゲストOSは、OSはCentOS7を使用　ネットワークの設定済み
nagiosサーバー用のゲストOS作成済み

ゲストOSのネットワークの設定は以下の記事を参考にしてください。
https://qiita.com/gama1234/items/d857fe5941ad5519f04c

# nagiosサーバー 構築手順
### SElinuxが無効化する。
```ゲストOS
[root@localhost ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing　※この行をコメントアウト
SELINUX=disabled　※設定追加
※途中の記載省略
[root@localhost ~]# init 6 ※サービスの再起動 
[root@localhost ~]# getenforce
Disabled
```
### httpdインストールする。
httpdのサービスのバージョンは今回指定がないため、
デフォルトの2.4.6をインストールする。

httpdサービスのバージョンを確認し、問題なければyを入力してインストールを開始する。
```ゲストOS
[root@localhost ~]# yum install httpd
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
※処理の記載省略
依存性を解決しました
※バージョンを確認し、問題なければyを入力する。
======================================================================================================================
 Package                    アーキテクチャー      バージョン                             リポジトリー            容量
======================================================================================================================
インストール中:
 httpd                      x86_64                2.4.6-97.el7.centos.5                  updates                2.7 M
※処理の記載省略
Is this ok [y/d/N]:ｙ

```
httpdサービスがインストールされたことを確認する。
```ゲストOS
[root@localhost ~]# rpm -qa | grep httpd ※httpdインストール確認
httpd-2.4.6-97.el7.centos.5.x86_64
httpd-tools-2.4.6-97.el7.centos.5.x86_64
[root@localhost etc]# systemctl enable httpd　※httpdサービス自動起動設定
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]#
```
### ファイアウォール設定
既にhttpdが許可されていることを確認した。
```ゲストOS
[root@localhost ~]# firewall-cmd --add-service=http --permanent
[root@localhost ~]# firewall-cmd --reload
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: dhcpv6-client http https ssh
  ports:
  protocols:
```
### 拡張リポジトリ追加
php7.xをインストールするため、remi-release-7.rpmのリポジトリをインストールする。
```ゲストOS
[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```
### phpインストール
phpはバージョンを間違えてインストールすることがあるため、
phpサービスのバージョンを確認し、問題なければyを入力してインストールを開始する。
```ゲストOS
[root@localhost ~]# yum install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt
※処理の記載省略
Is this ok [y/d/N]:ｙ
[root@localhost ~]#
[root@localhost ~]# php -v
PHP 7.3.33 (cli) (built: Nov 16 2021 11:18:28) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies
```
### phpの設定
/var/www/htmlはドキュメントルートでhttpdが外部に公開するサイトを設定する。
今回はphpのバージョンを外部に公開する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/567b7685-18de-316c-a1a8-b3dac406770e.png)

```ゲストOS
[root@localhost ~]# vi /var/www/html/index.php
<?php phpinfo(); ?>
```
PHPの設定ファイルでタイムゾーンを日本にする。
```ゲストOS
[root@localhost ~]# vi /etc/php.ini
 　 919行 [Date]
    920行 ; Defines the default timezone used by the date functions
    921行 ; http://php.net/date.timezone
    922行 ;date.timezone =
    923行 date.timezone = "Asia/Tokyo" ※ここに追加
```
### httpdを再起動
1.httpdの設定ファイルの文法チェックをする
```ゲストOS
[root@localhost ~]# httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK
```
2.httpdの設定ファイルにServerNameを設定する。
```ゲストOS
[root@localhost conf]# cp -p  httpd.conf httpd.confbk
※vi httpd.confでファイルを開き、ServerNameの設定を追加する。
※修正後と修正前の差分確認
[root@localhost conf]# sdiff -s httpd.conf httpd.confbk
ServerName localhost:80                                       <
※再度、httpdの文法チェックをする
[root@localhost conf]# httpd -t
Syntax OK
```
3.httpdサービスを再起動する。
```ゲストOS
[root@localhost ~]# systemctl restart httpd
```

### nagiosのインストールとnagiosのプラグインをインストールする。
```ゲストOS
[root@localhost ~]# yum --enablerepo=epel -y install nagios
[root@localhost ~]# yum --enablerepo=epel -y install nagios-plugins-{ping,disk,users,procs,load,swap,ssh,http}
```
### Basic認証用ユーザ作成
```ゲストOS
[root@localhost ~]# htpasswd /etc/nagios/passwd nagiosadmin
New password: ※パスワードを設定する。
Re-type new password:※再度パスワードを設定する。
Updating password for user nagiosadmin
```
### nagiosサーバーの再起動
```ゲストOS
[root@localhost ~]# systemctl start nagios
[root@localhost ~]#
[root@localhost ~]# systemctl status nagios　※activeのため、実行中
● nagios.service - Nagios Core 4.4.6
   Loaded: loaded (/usr/lib/systemd/system/nagios.service; disabled; vendor preset: disabled)
   Active: active (running) since 土 2022-04-30 09:21:14 JST; 5s ago
     Docs: https://www.nagios.org/documentation
  Process: 5376 ExecStart=/usr/sbin/nagios -d /etc/nagios/nagios.cfg (code=exited, status=0/SUCCESS)
※途中記載省略
※システム起動時にnagiosサービスが自動起動する設定を入れる。
[root@localhost ~]# systemctl enable nagios
Created symlink from /etc/systemd/system/multi-user.target.wants/nagios.service to /usr/lib/systemd/system/nagios.service.
[root@localhost ~]#
```
### 不要ファイル一時削除
```ゲストOS
[root@localhost ~]# rm -fr /var/www/html/index.php
[root@localhost ~]# systemctl restart httpd
```
### 構築したnagiosサーバーのIPアドレスを確認する。
nagiosサーバーのIPアドレスが「192.168.0.2」であることを確認
```ゲストOS
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:bc:1e:5a brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/24 brd 192.168.0.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::dffb:bd06:1975:aca8/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
[root@localhost ~]#
```
### nagios　ブラウザをアクセスする
http://192.168.0.2(nagiosサーバーのIP)/nagios/
ユーザー名「nagiosadmin」と設定したパスワードを入れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/a3b7137a-1695-6cdd-26b5-e1ea533233d1.png)
## nagios構築完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/266e0bc0-a984-5a0d-dd13-e4ac42aa2729.png)

## nagios設定ファイルについて
nagiosの設定ファイルを勉強しました。
```ゲストOS
# cd /etc/nagios
※nagiosのメインの設定ファイル
-rw-rw-r-- 1 root root   45665  3月  7  2021 nagios.cfg
※cgi設定ファイル
-rw-rw-r-- 1 root root   13699  3月  7  2021 cgi.cfg
drwxr-x--- 2 root nagios    26  5月  2 07:43 private
-rw-r----- 1 root apache    51  5月  2 07:43 passwd
drwxr-x--- 2 root nagios   167  5月  2 07:57 objects
# cd /etc/nagios/objects
※windowsOSのホストの設定ファイル
-rw-rw-r-- 1 root root  4074  3月  7  2021 windows.cfg
※時間帯定義ファイル
-rw-rw-r-- 1 root root  3512  3月  7  2021 timeperiods.cfg
-rw-rw-r-- 1 root root 12895  3月  7  2021 templates.cfg
-rw-rw-r-- 1 root root  3484  3月  7  2021 switch.cfg
-rw-rw-r-- 1 root root  3001  3月  7  2021 printer.cfg
※通知先設定ファイル
-rw-rw-r-- 1 root root  1797  3月  7  2021 contacts.cfg
※各コマンドの定義ファイル
-rw-rw-r-- 1 root root  6743  3月  7  2021 commands.cfg
※nagiosサーバーの監視設定ファイル
-rw-rw-r-- 1 root root  5051  5月  2 07:56 localhost.cfg
```
## localhost.cfgファイルの中身を確認した
localhost.cfgで定義した監視が、nagiosサーバーのloalhostに表示されていることを確認した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/02883852-79c9-08bd-eda2-39dc3e8a8c93.png)
## commands.cfgファイルのコマンドを確認した
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/38a47fab-896d-41b1-39b8-debff5caf160.png)

監視設定ファイルは、Nagios統合監視[実践]リファレンスの本で学びました。
https://www.amazon.co.jp/dp/4774145823