调试 Nagios 通知失败

调试 Nagios 通知失败

我花了一天时间在 nagios 上设置自定义 Twitter 通知。一切似乎都已准备就绪,通知似乎已触发,但脚本并未被调用。

我的联系人配置如下:

define contactgroup{
        contactgroup_name       twittergroup
        alias                   twittergroup
        members                 user1
        }


define contact {
      contact_name                             user1
      alias                                    user1
      service_notification_period              24x7
      host_notification_period                 24x7
      service_notification_options             c,r
      host_notification_options                d,r
      service_notification_commands            streamnotify-service-twitter-dm
      host_notification_commands               streamnotify-host-twitter-dm
}

典型的服务如下所示:

define service{
    use                             generic-service
    host_name                       ra-stream-monitoring-host
    servicegroups                   streaming_services
    service_description             Stream / starrfm-redfm ingest stream
    check_command                   check_http_status!"http://somestream"
    contact_groups                  admins,twittergroup
  }

我的commands.cfg 有以下条目:

define command { 
        command_name   streamnotify-host-twitter-dm
        command_line   echo "todo notify host by twitter"
}

define command { 
        command_name    streamnotify-service-twitter-dm
        command_line   /etc/nagios3/streamnotify_twitter.sh 
}

/etc/nagios3/streamnotify_twitter.sh 中的脚本如下所示

!/bin/bash
touch /etc/nagios3/CALLED

尽管 nagios 的通知面板报告用户 1 已收到通知,但文件 CALLED 从未创建

我们还在管理组中设置了自定义松弛通知,如果我手动触发通知,这些通知可以正常工作,但新的推特通知则不行。

我该如何调试它?我查看了 nagios 调试日志,命令似乎已执行。但据我所知,由于文件从未创建,所以出了问题。这引发了今晚许多人对 nagios 的愤怒抱怨,但这也没有解决问题(无论如何这可能是我的错)。

提前致谢。

答案1

您的脚本在第一行的开头缺少正确的 shebang。应该是#!/bin/bash

此外,几乎可以肯定 nagios 用户在 /etc/nagios3 中没有写入权限(我猜是 Ubuntu 包?)。脚本实际上也不属于那里,但这不是重点。

/tmp如果您想通过这种方式进行测试,请将测试文件路径更改为某个值。

相关内容