Nagios Coreで様々なのポートを監視する方法

投稿者: | 2020-04-19

前回は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でリソースの監視を行う方法について説明します。