2017-04-13 46 views
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% 
     } 
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 - “实际hostname其中,该警报被解雇掉”

系统检查 - 交换用法 - “实际hostname其中,该警报被解雇掉”

我想这可能是可能的,但我只是不知道如何使之成为可能。 真诚地感谢你对此的指导。

很多谢谢

回答

0

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

echo "$HOSTNAME - WARNING- $output" 
+0

在url中给出的示例不工作,因为它是。 – learner

+0

是的,这是可能的,因为一些脚本只适用于特定的操作系统。您必须为您的操作系统(和版本)修改这些脚本。 – Rohlik

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参数中给出的信息修改输出。

希望这会有所帮助!