警报消息的默认格式为:
** 恢复主机警报:服务器已启动 ** ***** 纳吉奥斯 ***** 通知类型:恢复 主机: 服务器 州:北方邦 地址:server.ru 信息:PING OK - 数据包丢失 = 0%,RTA = 26.00 毫秒 日期/时间:2009 年 8 月 13 日星期四 17:08:16 MSD
我希望用最少的字母获取最多的信息。首先,能够从短信中获取信息。其次,在 90% 的情况下只阅读电子邮件消息的标题。
例如,上面的消息可以只是“ H: server is UP
”,其中 H 代表Host Alert
。如果此服务器宕机,我希望收到这样的消息:[!] H: server is DOWN
。
我想要得到的不是“服务器上的交换使用情况非常严重”这样的消息,而是“[!] S:服务器/交换使用情况 >50%”,其中 50 是从 nagios 的 check_swap 配置中获取的,而不是硬编码到消息中。
如果“路由器/wan2 处于关键状态”,我希望看到“ADSL 通道已关闭”。
因此,总而言之,我想为每个服务及其状态分别定制消息,并能够在文本中使用插件参数。
我怎样才能实现这个目标?
答案1
Nagios 可以配置为通过各种方式和各种格式发送通知。如果您需要个性化,请参阅您的命令.cfg。
这是一个示例,向您展示如何使用 gnokii 通过短信接收简短通知:
define command{
command_name notify-host-by-sms
command_line /usr/bin/printf "%.120s" "$HOSTALIAS$ is $HOSTSTATE$" |/usr/local/bin/gnokii --sendsms $CONTACTPAGER$ -r
}
define command{
command_name notify-service-by-sms
command_line /usr/bin/printf "%.120s" "$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" | /usr/local/bin/gnokii --sendsms $CONTACTPAGER$ -r
}
输出如下:“主机名已启动”
答案2
nagios 有几个聚合插件,除了允许您指定较短的警报外,还会将多个警报合并为 1 页,这样当很多事情同时发生时,您就不会被分页 200 次。
其中两个好的例子是:
来自 nans 的警报看起来像这样(但当然可以定制)
CRITICAL pages: 2 hostname.example.com - WWW is CRITICAL - Thu Aug 13 11:00:00 EDT 2009 | hostname.example.com - SSL is CRITICAL - Thu Aug 13 11:00:01 EDT 2009
答案3
此外,如果您需要更大的灵活性,可以考虑在 nagios 和您之间放置一个 bash 脚本。这可以让您更灵活地发送消息,例如,您不希望将恢复电子邮件发送给您的自动票证创建者。