我目前有以下两项服务定义如下:
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 - "发出此警报的实际主机名"
系统检查 - 交换使用 - "触发此警报的实际主机名"
我认为这可能是可能的,但我不知道如何使它成为可能。 真诚地感谢您对此的指导。
非常感谢
答案 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。
希望这有帮助!