例如,我只能添加"HOSTDURATIONSEC" = "$host.duration_sec$",
到我的模板中,然后在mail-host-notification
脚本中使用它,例如:State: $HOSTSTATE for $HOSTDURATIONSEC
它告诉我主机处于该状态多长时间。但它只给了我几秒钟的时间,而且在接收警报时一目了然。
因为HOSTDURATION
不再可用或尚未实现,所以我尝试使用函数和其中的其他 bash 尝试将秒数转换为更易读的东西,mail-host-notification
但它似乎不起作用。
我希望能够在该脚本中创建一个新变量,可能使用来自 linux 包 timetrans 的命令,如下所示:
#!/bin/sh
SECS=$HOSTDURATIONSEC
CONVERTSECONDS=`timetrans -c $SECS`
eval $CONVERTSECONDS
$HRTIME=`eval $CONVERTSECONDS`
template=`cat <<TEMPLATE
Date/Time: $SHORTDATETIME (EST)
Notification Type: $NOTIFICATIONTYPE
Host: $HOSTALIAS
Address: $HOSTADDRESS
State: $HOSTSTATE for $HRTIME
------------------------------------------
New Jersey DC Icinga Monitoring
Additional Info: $HOSTOUTPUT
Notes on this device:
$HOSTNOTES
Comments: $NOTIFICATIONAUTHORNAME $NOTIFICATIONCOMMENT
TEMPLATE
`
...但是就像我尝试使用函数来转换 seconds 变量$HOSTDURATIONSEC
一样,它不起作用。我在很多方面都试过了,但在我看来,Icinga 没有通过env
模板中的那些设置。
env = {
"NOTIFICATIONTYPE" = "$notification.type$"
"HOSTALIAS" = "$host.display_name$",
"HOSTADDRESS" = "$address$",
"HOSTSTATE" = "$host.state$",
"HOSTNOTES" = "$host.notes$",
"HOSTDURATIONSEC" = "$host.duration_sec$",
"LONGDATETIME" = "$icinga.long_date_time$",
"SHORTDATETIME" = "$icinga.short_date_time$",
"HOSTOUTPUT" = "$host.output$",
"NOTIFICATIONAUTHORNAME" = "$notification.author$",
"NOTIFICATIONCOMMENT" = "$notification.comment$",
"HOSTDISPLAYNAME" = "$host.display_name$",
"USEREMAIL" = "$user.email$"
}
当然,我添加到此列表中的任何内容(例如"SHORTDATETIME" = "$icinga.short_date_time$",
、"HOSTNOTES" = "$host.notes$",
等)都可以正常工作,但是我在尝试针对脚本中的这些变量运行 linux 命令时遇到了麻烦。我错过了什么吗?有人知道我要去哪里错了吗?感谢任何/所有帮助。
我会在通知脚本中留下这样的计算技巧。由于您没有使用 Icinga 2 内部,因此摆弄一个函数是没有意义的。
我在您的脚本中注意到的是:
正确的是:
顺便提一句。如果您正在使用
timetrans
包dnssec-tools
,它在/usr/sbin
,所以不在 icinga/nagios 用户的路径中。修改后的工作示例:
通过以下方式调用:
PS(1) 如果你在 Icinga 2 中遗漏了一个宏,请打开一个问题来建议它
PS(2) 不要说其他用户是懦夫,这不好!