如何让 nagios 向我发送简短且内容丰富的警报?

如何让 nagios 向我发送简短且内容丰富的警报?

警报消息的默认格式为:

** 恢复主机警报:服务器已启动 **
***** 纳吉奥斯 *****

通知类型:恢复
主机: 服务器
州:北方邦
地址: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 次。

其中两个好的例子是:

  • (以守护进程形式运行)
  • 南斯 (这通过 cron 运行。不要被名称中的“Netsaint”所欺骗 - 它与当前版本的 nagios 配合得很好)

来自 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 脚本。这可以让您更灵活地发送消息,例如,您不希望将恢复电子邮件发送给您的自动票证创建者。

相关内容