前回はNagios Coreでリモートホストの監視を設定する基本的な設定の流れ、Pingの死活監視を行う方法を説明しました。今回はPingでの死活監視だけではなく、リモートホストの様々なポートを監視する方法について説明します。
なぜポートの監視をするのか
前回はPingによるサーバの死活監視を行いましたが、サーバやネットワークが正常に稼働しているか確認するには不十分です。
例えば、Webサーバ自体は稼働しているけどHTTP通信ができずサイトに接続できないとします。この場合、Pingによる死活監視だけでは障害を検知することができません。また、障害があると分かってもどの部分が問題となっているのかも察知することができません。
そこで、様々なポートのサービスを監視することが必要となります。ポートのサービスを監視していれば、サービスの障害等を検知やどの部分に異常があるかを知ることができます。素早い障害の検知や問題箇所の特定を早めることで、障害対応の時間を減らし、MTBFやMTTRの短縮にも繋げられます。
以上のことから、様々なポートを監視することが必要となります。
Webサーバに関するポート
Webサーバで使用するHTTPやHTTPSの他にSSL証明書の期限もNagiosで監視できます。この3つは「check_http」というプラグインを使用して監視を行います。
# vi /usr/local/nagios/etc/objects/commands.cfg
■commands.cfg
--------------------------------------------------
# HTTPの監視コマンド定義
define command {
command_name check_http
command_line $USER1$/check_http -H $HOSTADDRESS$
}
# HTTPSの監視コマンド定義
define command {
command_name check_https
command_line $USER1$/check_http -H $HOSTADDRESS$ -S
}
# SSL証明書期限の監視コマンド定義
define command {
command_name check_http_cert
command_line $USER1$/check_http -H $HOSTADDRESS$ -C $ARG1$
}
--------------------------------------------------
check_httpのオプションについては以下の通りとなります。
-H | 監視するホストのIPアドレスを指定するオプション。 |
---|---|
-S | SSL接続でhttpsを監視するオプション。「-p」オプションでポートを指定しない場合は443番ポートを監視する。 |
-C | SSL証明書の期限を監視するオプション。「-C」の後に指定した日数より証明書の期限が短くなるとWARNINGとなる。SSL証明書の期限が切れるとCRITICALとなる。 |
コマンドの定義後は監視するホストを設定します。
# vi /usr/local/nagios/etc/servers/CentOS8-test1.cfg
■CentOS8-test1.cfg
--------------------------------------------------
# HTTPを監視
define service {
use generic-service
host_name CentOS8-test1
service_description HTTP
check_command check_http
}
# HTTPSを監視
define service {
use generic-service
host_name CentOS8-test1
service_description HTTPS
check_command check_https
}
# SSL証明書の期限を監視
define service {
use generic-service
host_name CentOS8-test1
service_description SSLCert
check_command check_http_cert!30
}
--------------------------------------------------
設定が完了したらNagiosを再起動します。
# systemctl restart nagios
※注意
HTTPの監視を行うためには、監視するサーバ側でコンテンツの配置やfirewallの許可を行っている必要があります。HTTPS、SSL証明書の監視についても、コンテンツの配置やSSL化の対応、firewallの許可が必要となります。
メールサーバに関するポート
メールサーバで使用するSMTPやPOP、IMAP等もNagiosで監視できます。監視コマンドについては、「check_smtp」、「check_pop」、「check_imap」というプラグインを使用しますが、こちらの3つはcommand.cfgにデフォルトで定義されているため、参考として掲載します。また、SSL化したSMTPS等についてはデフォルトの定義がないため、コマンドを定義する必要があります。
# vi /usr/local/nagios/etc/objects/commands.cfg
■commands.cfg
--------------------------------------------------
# SMTPの監視コマンド定義
define command {
command_name check_smtp
command_line $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$
}
# SMTPSの監視コマンド定義
define command {
command_name check_ssmtp
command_line $USER1$/check_ssmtp -H $HOSTADDRESS$
}
# POPの監視コマンド定義
define command {
command_name check_pop
command_line $USER1$/check_pop -H $HOSTADDRESS$ $ARG1$
}
# POP over SSLの監視コマンド定義
define command {
command_name check_spop
command_line $USER1$/check_spop -H $HOSTADDRESS$
}
# IMAPの監視コマンドを定義
define command {
command_name check_imap
command_line $USER1$/check_imap -H $HOSTADDRESS$ $ARG1$
}
# IMAP over SSLの監視コマンドを定義
define command {
command_name check_simap
command_line $USER1$/check_simap -H $HOSTADDRESS$
}
--------------------------------------------------
各コマンドのオプションについては以下の通りとなります。
-H | 監視するホストのIPアドレスを指定するオプション。 |
---|
コマンド定義後は監視するホストを設定します。
# vi /usr/local/nagios/etc/servers/CentOS8-test1.cfg
■CentOS8-test1.cfg
--------------------------------------------------
# SMTPを監視
define service {
use generic-service
host_name CentOS8-test1
service_description SMTP
check_command check_smtp
}
# SMTPSを監視
define service {
use generic-service
host_name CentOS8-test1
service_description SSMTP
check_command check_ssmtp
}
# POPを監視
define service {
use generic-service
host_name CentOS8-test1
service_description POP
check_command check_pop
}
# POP over SSLを監視
define service {
use generic-service
host_name CentOS8-test1
service_description SPOP
check_command check_spop
}
# IMAPを監視
define service {
use generic-service
host_name CentOS8-test1
service_description IMAP
check_command check_imap
}
# IMAP over SSLを監視
define service {
use generic-service
host_name CentOS8-test1
service_description SIMAP
check_command check_simap
}
--------------------------------------------------
設定が完了したらNagiosを再起動します。
# systemctl restart nagios
※注意
メールサーバに関するポートの監視を行うためには、監視するサーバ側でfirewallの許可等を行っている必要があります。
DNSサーバに関するポート
DNSサーバについては、nslookup、digコマンドを使用した監視を行うことができます。監視コマンドについては、「check_dns」と「check_dns」を使用しますが、command.cfgにはデフォルトで定義されていないため、コマンドを定義する必要があります。
# vi /usr/local/nagios/etc/objects/commands.cfg
■commands.cfg
--------------------------------------------------
# NSLOOKUPの監視コマンド定義
define command {
command_name check_dns
command_line $USER1$/check_dns -H $ARG1$
}
# DIGの監視コマンド定義
define command {
command_name check_dig
command_line $USER1$/check_dig -l $ARG1$ -H $HOSTADDRESS$
}
--------------------------------------------------
各コマンドのオプションについては以下の通りとなります。
-H | 監視するホストのIPアドレスを指定するオプション。 |
---|
コマンド定義後は監視するホストを設定します。ドメインについては、監視するドメインを指定します。
# vi /usr/local/nagios/etc/servers/CentOS8-test1.cfg
■CentOS8-test1.cfg
--------------------------------------------------
# NSLOOKUPで監視
define service {
use generic-service
host_name CentOS8-test1
service_description NSLOOKUP
check_command check_dns!www.hogehoge.com
}
# DIGで監視
define service {
use generic-service
host_name CentOS8-test1
service_description DIG
check_command check_dig!www.hogehoge.com
}
--------------------------------------------------
設定が完了したらNagiosを再起動します。
# systemctl restart nagios
※注意
DNSサーバに関する監視を行うためには、名前解決の設定等が完了している必要があります。
FTPサーバに関するポート
FTPサーバについても、他のサーバと同様に監視することができます。監視コマンドについては「check_ftp」を使用しますが、command.cfgにデフォルトで定義されているため、参考として掲載します。
# vi /usr/local/nagios/etc/objects/commands.cfg
■commands.cfg
--------------------------------------------------
# FTPの監視コマンド定義
define command {
command_name check_ftp
command_line $USER1$/check_ftp -H $ARG1$
}
--------------------------------------------------
各コマンドのオプションについては以下の通りとなります。
-H | 監視するホストのIPアドレスを指定するオプション。 |
---|
コマンド定義後は監視するホストを設定します。
# vi /usr/local/nagios/etc/servers/CentOS8-test1.cfg
■CentOS8-test1.cfg
--------------------------------------------------
# FTPを監視
define service {
use generic-service
host_name CentOS8-test1
service_description FTP
check_command check_ftp
}
--------------------------------------------------
設定が完了したらNagiosを再起動します。
# systemctl restart nagios
※注意
FTPサーバに関する監視を行うためには、FTPサーバの設定、firewallの許可が完了している必要があります。
その他ポートの監視
ポートの監視でよく使われるSSHや特定のポートをTCP、UDPで監視する方法についても説明します。SSH、TCP、UDPの監視コマンドはcommand.cfgにデフォルトで定義されているため、参考として掲載します。
# vi /usr/local/nagios/etc/objects/commands.cfg
■commands.cfg
--------------------------------------------------
# SSHの監視コマンド定義
define command {
command_name check_ssh
command_line $USER1$/check_ssh -p $ARG1$ $HOSTADDRESS$
}
# TCPの監視コマンド定義
define command {
command_name check_tcp
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
}
# UDPの監視コマンド定義
define command {
command_name check_udp
command_line $USER1$/check_udp -H $HOSTADDRESS$ -s $ARG1$ -e $ARG2$ -p $ARG3$
}
--------------------------------------------------
各コマンドのオプションについては以下の通りとなります。
-H | 監視するホストのIPアドレスを指定するオプション。 |
---|---|
-p | 監視するポート番号を指定するオプション。 |
コマンド定義後は監視するホストを設定します。
# vi /usr/local/nagios/etc/servers/CentOS8-test1.cfg
■CentOS8-test1.cfg
--------------------------------------------------
# SSHを監視
define service {
use generic-service
host_name CentOS8-test1
service_description SSH
check_command check_ssh!22
}
# TCPで5666ポートを監視
define service {
use generic-service
host_name CentOS8-test1
service_description TCP
check_command check_tcp!5666
}
# UDPで53ポートに「www.hogehoge.com.」を送出し監視
define service {
use generic-service
host_name CentOS8-test1
service_description UDP
check_command check_udp!"A www.hogehoge.com."!!53
}
--------------------------------------------------
設定が完了したらNagiosを再起動します。
# systemctl restart nagios
※注意
ここで設定したポートの監視を行うためには、firewallの許可等が完了している必要があります。
まとめ
- 障害等を素早く検知するために様々なポートを監視することが大事
- Nagiosには様々なポートを監視するプラグインがある
次回はNagiosでリソースの監視を行う方法について説明します。