Fedora45 : Nagios サーバー

オープンソースの統合監視ソフトウェア「Nagios Server」インストール

Nagiosは、Linux 上で実行するオープンソースの監視ソリューションです。
Nagiosは、 Ethan Galstadによって開発され、 1999 年に最初にリリースされました。その後、このプロジェクトは、いくつかの貢献者によってオープンソース プロジェクトとして改良されました。

Nagiosは、ネットワーク、アプリケーション、またはサーバーの重要なパラメーターを定期的にチェックするように設計されています。これらのパラメータには、マイクロプロセッサの負荷、実行中のプロセス数、ログ ファイル、ディスクおよびメモリの使用量の他、SMTP (Simple Mail Transfer Protocol)、HTTP (Hypertext Transfer Protocol)、POP3 ( Post Office Protocol 3)の他の多くのサービスもチェックできます。

Nagoisを実行するにはPHP、MySQLなどのデータベース、ApacheやNginxなどのWebサーバーが必要です。今回はこれらすべてが構成済みという前提で進めます。

1. Nagios のインストール

# dnf install -y nagios nagios-selinux

通常はnagiosユーザー・グループが作成されますが、パッケージのインストールスクリプトやトリガーが何らかの理由でスキップされた場合、以下のコマンドで設定ファイルからシステムユーザーを強制生成できます

# systemd-sysusers

2. Nagios プラグインをインストール

②インストール

# dnf install nagios-plugins-all

下記のとおりnagios-pluginsが利用可能である

# ls /usr/lib64/nagios/plugins/
check_breeze    check_file_age   check_ircd      check_mysql_query  check_oracle   check_smtp          check_ups
check_by_ssh    check_flexlm     check_jabber    check_nagios       check_overcr   check_snmp          check_users
check_clamd     check_fping      check_ldap      check_nntp         check_pgsql    check_spop          check_wave
check_cluster   check_ftp        check_ldaps     check_nntps        check_ping     check_ssh           eventhandlers
check_dhcp      check_game       check_load      check_nt           check_pop      check_ssl_validity  negate
check_dig       check_hpjd       check_log       check_ntp          check_procs    check_ssmtp         urlize
check_disk      check_http       check_mailq     check_ntp_peer     check_real     check_swap          utils.pm
check_disk_smb  check_icmp       check_mrtg      check_ntp.pl       check_rpc      check_tcp           utils.sh
check_dns       check_ide_smart  check_mrtgtraf  check_ntp_time     check_sensors  check_time
check_dummy     check_imap       check_mysql     check_nwstat       check_simap    check_udp

3. Nagios Web ユーザーの作成

Nagios Web ダッシュボードにアクセスするためのユーザー アカウントを作成する。このユーザーアカウントは、認証に使用される。
ユーザーのデフォルト名はnagiosadminで、/etc/nagios/cgi.cfgファイル内に優先ユーザー名として定義されています。

# htpasswd -c /etc/nagios/htpasswd nagiosadmin
New password:  [password]
Re-type new password:  [again password]
Adding password for user nagiosadmin

設定ファイルの構文チェック

# nagios -v /etc/nagios/nagios.cfg
----------------------------------------------------------------------------------
Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

Total Warnings: 0
Total Errors: 0
と表示されれば正常です

Nagios サービスを有効化

# systemctl enable nagios --now

サービスが実行しているか確認

# systemctl status nagios
● nagios.service - Nagios Core 4.5.14
     Loaded: loaded (/usr/lib/systemd/system/nagios.service; enabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: active (running) since Thu 2026-11-12 12:10:38 JST; 36s ago
 Invocation: 95ab1c4ffbad480b90ae096073da459b
       Docs: https://www.nagios.org/documentation
    Process: 3296 ExecStartPre=/usr/bin/nagios -v /etc/nagios/nagios.cfg (code=exited, status=0/SUCCESS)
    Process: 3297 ExecStart=/usr/bin/nagios -d /etc/nagios/nagios.cfg (code=exited, status=0/SUCCESS)
   Main PID: 3299 (nagios)
      Tasks: 8 (limit: 4564)
     Memory: 6.9M (peak: 7.8M)
        CPU: 46ms
     CGroup: /system.slice/nagios.service
             ├─3299 /usr/bin/nagios -d /etc/nagios/nagios.cfg
             ├─3301 /usr/bin/nagios --worker /var/spool/nagios/cmd/nagios.qh
             ├─3302 /usr/bin/nagios --worker /var/spool/nagios/cmd/nagios.qh
             ├─3303 /usr/bin/nagios --worker /var/spool/nagios/cmd/nagios.qh
             ├─3304 /usr/bin/nagios --worker /var/spool/nagios/cmd/nagios.qh
             ├─3305 /usr/bin/nagios --worker /var/spool/nagios/cmd/nagios.qh
             ├─3306 /usr/bin/nagios --worker /var/spool/nagios/cmd/nagios.qh
             └─3309 /usr/bin/nagios -d /etc/nagios/nagios.cfg

Nov 12 12:10:38 Lepard nagios[3299]: qh: help for the query handler registered
Nov 12 12:10:38 Lepard nagios[3299]: wproc: Successfully registered manager as @wproc with query handler
Nov 12 12:10:38 Lepard systemd[1]: Started nagios.service - Nagios Core 4.5.14.
Nov 12 12:10:38 Lepard nagios[3299]: wproc: Registry request: name=Core Worker 3301;pid=3301
Nov 12 12:10:38 Lepard nagios[3299]: wproc: Registry request: name=Core Worker 3302;pid=3302
Nov 12 12:10:38 Lepard nagios[3299]: wproc: Registry request: name=Core Worker 3304;pid=3304
Nov 12 12:10:38 Lepard nagios[3299]: wproc: Registry request: name=Core Worker 3305;pid=3305
Nov 12 12:10:38 Lepard nagios[3299]: wproc: Registry request: name=Core Worker 3303;pid=3303

5. Nagios Web インターフェイスにアクセス

任意のブラウザで http://[FQDN]/nagios/ もしくは http://[IP address]/nagios にアクセスし[Username]にnagiosadmin、[Password]には上記でユーザーを作成したとき指定したパスワードを入力し、[Log in]

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

ホストの可用性を表示
左メニューの[Hosts]をクリック

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

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

※ SSHポートをカスタム設定で2244を割り当てている場合は下記の通りlocalhost.cfgを変更しておきます

# vi /etc/nagios/objects/localhost.cfg
143行目当たり
check_command           check_ssh
↓
check_command           check_ssh!-p 2244
# systemctl restart nagios

6. NRPEプラグインの構成

エージェントを監視するため。以下をインストールする

6.1 nrpeプラグインをインストール

# dnf install nrpe  nagios-plugins-nrpe

/etc/nagios/nrpe.cfg ファイルを開き、ローカルホスト と Nagiosモニタリングサーバー の IPアドレス を追加

# vi /etc/nagios/nrpe.cfg

106行目 : 追記 
allowed_hosts=127.0.0.1,::1,192.168.11.83

バージョン確認

# /usr/bin/nrpe -V
NRPE - Nagios Remote Plugin Executor
Version: 4.2.0

サービスを開始して有効にする

# systemctl enable nrpe
Created symlink '/etc/systemd/system/multi-user.target.wants/nrpe.service' → '/usr/lib/systemd/system/nrpe.service'.

# systemctl restart nrpe

ファイアウォールでNRPEのポートを開く
NRPEはデフォルトでTCP 5666ポートを使用します。ファイアウォールが動作している場合は、Nagiosモニタリングサーバーからの外部チェックを許可するために、このポートを開きます。

# firewall-cmd --add-port=5666/tcp --permanent
# firewall-cmd --reload

ポート5666/tcpがリッスンされているか確認

# netstat -na | grep "5666"
tcp        0      0 0.0.0.0:5666            0.0.0.0:*               LISTEN

「check_nrpe」コマンドを実行して、NRPEデーモンが正常に動作していることを確認
インストールされているNRPEのバージョンが表示される

/usr/lib64/nagios/plugins/

# /usr/lib64/nagios/plugins/check_nrpe -H 127.0.0.1
NRPE v4.2.0

7. 監視ホストの追加

下記サーバーをホストに追加し、 単純なPing による死活監視対象として設定
OS : Fedora45
IPアドレス : 192.168.11.85

7.1 設定ファイル編集

# vi /etc/nagios/nagios.cfg
51行目 : コメント解除
cfg_dir=/usr/local/nagios/etc/servers

7.2 ディレクトリー作成

# mkdir /etc/nagios/servers
# chgrp nagios /etc/nagios/servers
# chmod 750 /etc/nagios/servers

7.3 定義ファイル新規作成

"korodes.cfg" 名称は任意でよい

# vi /etc/nagios/servers/korodes.cfg

define host {
    use                     linux-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%
}

7.4 Nagiosサーバー再起動

# systemctl restart nagios.service

Nagios サーバーにログイン(http://[サーバーIPアドレス]/nagios)しHostsを見るとホストが追加されている

8. 監視サービスの追加

上記で追加したホストに監視サービスを追加する
OS : Fedora45
IPアドレス : 192.168.11.85

8.1 監視対象サーバー側の設定

8.1.1 監視対象ホストにエージェントをインストール
nrpe 及び代表的なサービスプラグインをインストール

# dnf -y install nagios-nrpe nagios-plugins-all

8.1.2 設定ファイル編集

# vi /etc/nagios/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$

8.1.3 nrpeサーバー有効化、起動

# systemctl enable --now nrpe
Created symlink '/etc/systemd/system/multi-user.target.wants/nrpe.service' → '/usr/lib/systemd/system/nrpe.service'.

# systemctl start nrpe

# systemctl status nrpe
● nrpe.service - Nagios Remote Plugin Executor
     Loaded: loaded (/usr/lib/systemd/system/nrpe.service; enabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: active (running) since Thu 2026-11-12 14:08:17 JST; 57s ago
 Invocation: df4bf3e9fcfd4f37b373e5be4491cc89
       Docs: http://www.nagios.org/documentation
   Main PID: 2334 (nrpe)
      Tasks: 1 (limit: 4558)
     Memory: 1.3M (peak: 1.6M)
        CPU: 12ms
     CGroup: /system.slice/nrpe.service
             └─2334 /usr/bin/nrpe -c /etc/nagios/nrpe.cfg -f

Nov 12 14:08:17 Lion systemd[1]: Started nrpe.service - Nagios Remote Plugin Executor.
Nov 12 14:08:17 Lion nrpe[2334]: WARN: Limiting SSL/TLS version to v1.2 to support ADH
Nov 12 14:08:17 Lion nrpe[2334]: Starting up daemon
Nov 12 14:08:17 Lion nrpe[2334]: Server listening on 0.0.0.0 port 5666.
Nov 12 14:08:17 Lion nrpe[2334]: Server listening on :: port 5666.
Nov 12 14:08:17 Lion nrpe[2334]: Warning: Daemon is configured to accept command arguments from clients!
Nov 12 14:08:17 Lion nrpe[2334]: Listening for connections on port 5666
Nov 12 14:08:17 Lion nrpe[2334]: Allowing connections from: 127.0.0.1,::1,192.168.11.83

8.1.4 ファイアウォールでNRPEのポート5666/tcp,5666/udpを開く

# firewall-cmd --permanent --add-port=5666/tcp
# firewall-cmd --permanent --add-port=5666/udp
# firewall-cmd --reload
8.2 Nagios サーバー側の設定

8.2.1 commands.cfg編集

# vi /etc/nagios/objects/commands.cfg

# 最終行に追記
define command {
    command_name    check_nrpe
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

8.2.2 先ほどホストを追加したときに作成した korodes.cfg を編集追加する
今回はHTTP,SSH,FTPを追加してみる

# vi /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
        }

8.2.5 Nagios 再起動

# systemctl restart nagios.service

8.2.6 http://[Nagios Server IP Address]/nagios にアクセスする
下図のように新しく追加した監視サービスが追加されている