80以外の複数のポートで実行されているhttp経由のサービスを監視したい。サービスは、ポート8083、8086、およびその他のいくつかのポートで実行されている。次のようにserver.cfgファイルを作成しました。
define Host {
use linux-server
Host_name cfbase-prod
alias cfbase-prod
address x.x.x.x
contacts admin
}
define service {
use generic-service
Host_name cfbase-prod
service_description HTTP
check_command check_http
contacts admin
check_interval 1
}
しかし、私のnagiosコンソールでは機能しません。ポート80でhttpとして表示されますが、そうではありません。誰か助けてくれませんか。
コマンドでポート番号を直接指定できますが、テストするポートごとに1つのコマンドを作成する必要があります。
または、例を使用して、ポート番号を格納するカスタム変数を作成できます。
define Host {
use linux-server
Host_name cfbase-prod
alias cfbase-prod
address x.x.x.x
contacts admin
}
define service {
use generic-service
Host_name cfbase-prod
service_description HTTP
check_command check_http
contacts admin
check_interval 1
_port_number 8083
}
そして、あなたのコマンドでは、この変数を次のように継承できます:
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ -p $_SERVICEport_number$ $ARG1$
}
コマンドで変数を使用するには、サービスの場合は_service
を、ホストの場合は_Host
を付加する必要があります。ソース:
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/customobjectvars.html
Check_httpと$ ARGを見ると、すべてがすでに配置されているはずなので、次のように使用しないでください。
check_http!-p 8888
プローブを要求します。少なくとも私の短いテストはnagios4でうまくいきました。
ポートをcheck_http_port
として取る$ARG1$
という名前の新しいコマンドを定義する必要があります。
define command {
command_name check_http_port
command_line $USER1$/check_http -I $HOSTADDRESS$ -p $ARG1$ <other options you use>
}
そして、それをサービス定義でcheck_http_port!8083
として使用します。
その他のオプション/情報については、check_http --help
をご覧ください。