自定义 nagios 命令,附加 $HOSTADDRESS$

自定义 nagios 命令,附加 $HOSTADDRESS$

我对 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$
}

查看宏及其工作原理可用宏列表文档页面来了解它的工作原理。

相关内容