我想监控在 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
答案2
当我查看 check_http 和 $ARG 时,一切都应该已经到位,那么为什么不直接使用:
check_http!-p 8888
请求探测。至少我的简短测试对 nagios4 有效。
答案3
您应该定义一个新命令,或许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
更多选项/信息。