我对 nagios 还很陌生,正在尝试获取一个自定义命令来满足我的意愿。
我查看了各种示例,但找不到任何人附加 $HOSTADDRESS$ 宏,所以也许我必须采用不同的方法,但我需要的是将一个参数传递给命令,如下所示:
HOST_ADDRESS/StatusCheck?auth=secretKey
这是一个有效的例子(仅适用于 1 个主机)
define service {
use generic-service
hostgroup_name my-hostgroup
service_description my custom check
check_command check_custom_status!http://example.com/StatusCheck?auth=secretKey
}
显然这对我来说不起作用,因为它只检查单个主机(在本例中为 example.com)。
这是一个不起作用的例子,但我希望它能起作用,我可以稍微切换一下语法来让它起作用吗?
define service {
use generic-service
hostgroup_name my-hostgroup
service_description my custom check
check_command check_custom_status!$HOSTADDRESS$/StatusCheck?auth=secretKey
}
(它不检查/StatusCheck
页面)。如何附加 $HOSTADDRESS$ 宏?
我希望有一个非常简单的方法来解决这个问题,如果我忽略了一些非常简单的事情,请原谅。
命令定义
define command {
command_name check_custom_status
command_line $USER1$/check_custom_status.pl -U $ARG1$
}
我的 perl 脚本接受一个 url 参数 ( -U
)
答案1
$HOSTADDRESS$
您不能在主机和服务定义中使用宏。如果要使用宏,请将其放在命令定义中。
该$HOSTADDRESS$
宏已经可用于正在运行的命令,以及数十个其他宏,因为 Nagios 知道该命令与哪个主机/服务相关联。
在您的情况下,您可能需要这样的东西,将身份验证密钥作为 ARG1 传递:
define command {
command_name check_custom_status
command_line $USER1$/check_custom_status.pl -U http://$HOSTADDRESS$/StatusCheck?auth=$ARG1$
}