如何在"服务说明"中输出主机名对于nagios核心?

时间:2017-04-13 01:17:09

标签: nagios

我目前有以下两项服务定义如下:

define service {
        use                             my-webapp-service
        hostgroup_name                  all
        service_description             System check - PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }
define service {
        use                             my-webapp-service
        hostgroup_name                  all
        service_description             System check - Swap Usage
        check_command                   check_nrpe!check_swap
        check_interval                  1
        }

我想要的是输出字符串: 系统检查 - PING - "发出此警报的实际主机名"

系统检查 - 交换使用 - "触发此警报的实际主机名"

我认为这可能是可能的,但我不知道如何使它成为可能。 真诚地感谢您对此的指导。

非常感谢

2 个答案:

答案 0 :(得分:0)

输出由脚本处理。默认行为是脚本不返回主机名,因为它不是必需的。 如果要在输出中添加主机名,则必须编辑已存在的脚本或创建新脚本 以下是Nagios创建脚本的基本信息 - http://www.yourownlinux.com/2014/06/how-to-create-nagios-plugin-using-bash-script.html
根据您的需要,您必须将$HOSTNAME添加到 echo 。例如:

echo "$HOSTNAME - WARNING- $output"

答案 1 :(得分:0)

如果希望正在执行的脚本知道主机名,则需要将主机名作为参数传递给Nagios命令。这也意味着脚本需要接受主机名作为参数。举个例子:

define service {
        use                             my-webapp-service
        hostgroup_name                  all
        service_description             System check - PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }

check_ping可能看起来像:

define command {
       command_name                             check_ping
       command_line                             $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}

这里的问题是$USER1$/check_ping处的可执行文件不知道您要将主机名称作为参数传递。所以你需要制作一个包装脚本。我不打算为你编写脚本,但为了给你一个提示,命令定义看起来像:

define command {
       command_name                             check_ping_print_hostname
       command_line                             $USER1$/my_check_ping_wrapper.sh --hostname $HOSTNAME$ -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}

然后$USER1$/my_check_ping_wrapper.sh的脚本显然需要抓取--hostname参数,然后将其他参数直接传递给check_ping,等待输出,然后用信息修改输出在--hostname arg。

中给出

希望这有帮助!

相关问题