はじめに
このドキュメントはどのように一般公開されているサービス、アプリケーション、プロトコルを監視することができるかについて説明します。 「一般公開」によって、ネットワークを介してアクセス可能なサービスを意味します -- ローカルネットワークあるいはより大きなインターネットのいずれか。 一般公開されているサービスの例ではHTTP、POP3、IMAP、FTP、およびSSHを含んでいます。 たぶんあなたが毎日使っている多くの一般公開サービスがあります。 サービスやアプリケーションと同様、そこで使われているプロトコールをNagiosは特別な要求なしに普通に監視できます。
対照に非公開なサービスはある種の仲介エージェントなしにNagiosは監視することができません。 ホストに関連している非公開なサービスの例はCPU負荷、メモリ使用量、ディスクの使用状況、現在のユーザー数、プロセス情報などのような事です。 これら非公開な、サービスやホストの属性は、外部クライアントに公開されていません。 この状況では、その様な情報を監視する必要なホストに仲介的な監視エージェントをインストールする必要があります。 違ったタイプのホストで非公開・サービス監視の詳細な情報について以下のドキュメントがあります。
Tip: 大抵、非公開なサービスやアプリケーションの情報はSNMPを使った監視で見つける事ができます。 SNMPエージェントは、そうしなければ非公開な(アクセスできない)ホストの情報についてホストの遠隔モニタを許可します。 SNMPを使用する監視サービスに関する詳しい情報は、スイッチとルータの監視に関するドキュメントを調べます。
注意: これらの方法は、クイックスタート Fedora, クイックスタート OpenSuse, クイックスタート Ubuntuに従ってNagiosをインストールしたと仮定します。 クイックスタートでインストールすると以下の設定ファイル例(commands.cfg, localhost.cfg, その他)もインストールされます。
監視サービスのためのプラグイン
監視が必要な特別なアプリケーション、サービス、またはプロトコールが見つかったなら、それを監視するプラグイン がある可能性が十分あります。 公式のNagiosプラグインにはさまざまなサービスやプロトコルの監視に使用できるプラグインを配布しています。 また、contrib/サブディレクトリには多くの寄付されたプラグインを見つけることができます。 NagiosExchange.orgウェブサイトがユーザによって書かれている多くの追加プラグインが登録されています、機会があればそれを調べます。
たまたま監視するために必要な適切なプラグインを見つけられないなら、いつでもあなた自身で書くことができます。 プラグインは書きやすいので、この考えを怖がらないでください。。 詳しい情報のためにプラグイン開発のドキュメントを読んでください。
私は、遅かれ早かれ多分使うであろう幾つかの基本サービスの監視を一緒に歩みます。 Nagiosプラグイン配布の中に入っているプラグインの1つを使って、それらサービスのそれぞれを監視できます。 開始しましょう…
ホスト定義の作成
サービスを監視する前に、サービスに関連たホストを最初に定義する必要があります。 cfg_file指示で指定されたオブジェクト設定ファイルのホスト定義に設定するか、cfg_dir指示で指定されたディレクトリに設定することができます。 既にホスト定義を作成してあれば、このステップを省略することができます。
この例で、リモートホストの様々なサービスを監視したいと言ってください。 そのホストをリモートホストと呼びましょう。 ホスト定義をそれ自身のファイルとして設定するか、または既にあるオブジェクト設定ファイルに追加できます。 ここにある、リモートホストのホスト定義はこの次のようです:
define host{
use generic-host ; Inherit default values from a template
host_name remotehost ; The name we're giving to this host
alias Some Remote Host ; A longer name associated with the host
address 192.168.1.50 ; IP address of the host
hostgroups allhosts ; Host groups this host is associated with
}
監視されるホストに 定義が付け加えられたので、監視されるサービスの定義を始めるられます。 ホスト定義と同様に、サービス定義は、どんなオブジェクト設定ファイルにも置くことができます。
サービス定義の作成
監視したい各サービスについて、作成したばかりのホスト定義に関連したNagiosのサービスを定義する必要があります。 サービス定義は、cfg_file指示で指定されたオブジェクト設定ファイルに設定するか、cfg_dir指示で指定されたディレクトリに設定することができます。
一般公開されているサービス(HTTP、FTPなど)監視のために幾つかのサービス定義例を以下に示します。
HTTPの監視
何らかの点でWebサーバを監視したいチャンスがあるなら - あなたか他の誰かの。 check_httpプラグインは、まさしくそれを行う様に設計されています。 HTTPプロトコルを理解し、応答時間、エラーコード、返されたHTMLの文字列、サーバ証明書、さらに多くを監視する事ができます。
commands.cfgファイルにはcheck_httpプラグインを使ったコマンド定義を含んでいます。 それはこのようになります:
define command{
name check_http
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}
リモートマシン上でHTTPサービスを監視する簡単なサービス定義はこのようになります:
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description HTTP
check_command check_http
}
この簡単なサービス定義ではリモートホスト上で動いているHTTPサービスを監視します。 Webウェブサーバーが10秒以内に反応しないか、またはHTTPのエラーコード(403、404など)を返すと、それは警告を出します。 それは基本的な監視に必要なすべてです。 とてもシンプルですね?
Tip: もっと高度な監視については、check_http プラグインをコマンドラインの引数で --helpオプションを付けて実行してください。全てのあなたの使えるオプションを見る事が出来ます。 この--help シンタックスは、私がこのドキュメントでカバーするプラグインのすべてで使えます。
HTTPサービスを監視する、より高度な定義は以下に示されています。 このサービス定義は、/download/index.php URIが"latest-version.tar.gz"文字列を含んでいるかどうか確認するチェックをします。 ストリングが見つけられない、URIが有効でない、またはWebサーバの応答が5秒以上かかる場合はエラーを返します。
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description Product Download Link
check_command check_http!-u /download/index.php -t 5 -s "latest-version.tar.gz"
}
FTPの監視
FTPサーバ監視が必要なときは、check_ftpプラグインが使用できます。 commands.cfgファイルにはcheck_ftpプラグインを使用するコマンド定義を含んでいます、このようになります:
define command{
command_name check_ftp
command_line $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
}
リモートホスト上のFTPサーバーを監視する簡単なサービス定義は、このようになります:
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description FTP
check_command check_ftp
}
FTPサービスを監視するこのサービス定義ではFTPサーバが10秒以内に応答がないと、警報を出します。
より高度なサービス定義は以下に示されています。 このサービスはリモートホストののポート1023で実行中のFTPサーバをチェックします。 サーバが5秒以内に応答を返さないか、サーバ応答に”Pure-FTPd [TLS]”の文字列を含んでいないと、警告を出します。
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description Special FTP
check_command check_ftp!-p 1023 -t 5 -e "Pure-FTPd [TLS]"
}
SSHの監視
SSHサーバを監視する必要なら、check_sshプラグインを使用できます。 commands.cfgファイルはcheck_sshプラグインを使うコマンド定義を含んでいます、このようになります:
define command{
command_name check_ssh
command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
}
A simple service definition for monitoring the SSH server on remotehost would look like this: リモート上のSSHサーバーを監視するための簡単なサービス定義は、このようになります:
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description SSH
check_command check_ssh
}
このサービス定義では、SSHサービスを監視し、SSHサーバが10秒応答しないと、警告を出します。
より高度なサービス定義は以下に示されています。 このサービスはSSHサーバをチェックし、 サーバが5秒以内に応答しないか、またはサーババージョンの文字列が"OpenSSH_4.2"に一致しないと警告を出します。
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description SSH Version Check
check_command check_ssh!-t 5 -r "OpenSSH_4.2"
}
SMTPの監視
メールサーバを監視する必要があるときは、check_smtpプラグインを使用できます。 commands.cfgファイルはcheck_smtpプラグインを使うためのコマンド定義を含まれます、このようになります:
define command{
command_name check_smtp
command_line $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$
}
リモートホスト上のSMTPサーバーを監視する簡単なサービス定義は、このようになります:
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description SMTP
check_command check_smtp
}
このサービス定義ではSMTPサービスを監視し、SMTPサーバーが10秒以内に応答しないと、警告を出します。
より高度なサービス定義は以下に示されています。 このサービスはSMTPサーバをチェックし、 サーバが5秒以内に応答しないか、またサーバからの応答が"mygreatmailserver.com"を含んでいないとき警告を出します。
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description SMTP Response Check
check_command check_smtp!-t 5 -e "mygreatmailserver.com"
}
POP3の監視
メールサーバのPOP3サービスを監視する必要があるときは、check_popプラグインが使えます。 commands.cfgファイルはcheck_popプラグインを使うコマンド定義を含みます、このようになります:
define command{
command_name check_pop
command_line $USER1$/check_pop -H $HOSTADDRESS$ $ARG1$
}
リモートホスト上のPOP3サービスを監視する簡単なサービス定義は、このようになります:
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description POP3
check_command check_pop
}
このサービス定義はPOP3サービスを監視し、 POP3サーバが10秒以内に応答しない警告を出します。
より高度なサービス定義は以下に示されています。 このサービスはPOP3サービスをチェックし、 サーバが5秒以内に応答しないか、またサーバからの応答が"mygreatmailserver.com"を含んでいないと警告を出します。
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description POP3 Response Check
check_command check_pop!-t 5 -e "mygreatmailserver.com"
}
IMAPの監視
メールサーバのIMAP4サービスを監視する必要があるときは、check_imapプラグインを使えます。 commands.cfgファイルはcheck_imapプラグインを使うコマンド定義を含みます、このようになります:
define command{
command_name check_imap
command_line $USER1$/check_imap -H $HOSTADDRESS$ $ARG1$
}
remotehost上のIMAP4サービスを監視する簡単なサービス定義は、このようになります:
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description IMAP
check_command check_imap
}
このサービス定義はIMAP4サービスを監視し、 IMAPサーバが10秒以内に応答しない警告を出します。
より高度なサービス定義は以下に示します。 このサービスは、IAMP4サービスをチェックし、 サーバが5秒以内に応答しないか、またサーバからの応答が"mygreatmailserver.com"を含んでいないと警告を出します。
define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description IMAP4 Response Check
check_command check_imap!-t 5 -e "mygreatmailserver.com"
}
Nagiosの再起動
一度、新しいホストとサービス定義をオブジェクト設定ファイルに追加すると、それらを監視する準備ができます。 これをするために、Nagiosの設定ファイルを確認して再起動する必要があります。
検証プロセスがエラーメッセージを出す場合、設定ファイルを修正します。 検証プロセスがエラーなしで終わることを確認するまでNagiosを(再)スタートさせないでください!