我花了一天时间在 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
如果您想通过这种方式进行测试,请将测试文件路径更改为某个值。