我正在使用 nagios 3.06 来监控服务器。当某个服务处于关键状态时,它会发送邮件,但是当某个服务器宕机时,不会发送任何邮件。即使所有服务都处于关键状态,也不会发送任何邮件。
我有以下配置:
define command {
command_name notify-host-by-email
command_line python /etc/nagios3/send_mail.py "[Nagios] $HOSTNAME$" "******** Nagios ****\n\n Host: $HOSTNAME$\n Description: the server is down"
}
define command{
command_name notify-service-by-email
command_line python /etc/nagios3/send_mail.py "[Nagios] $HOSTNAME$: $SERVICEDESC$ ($NOTIFICATIONTYPE$)" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\nDate/Time: $LONGDATETIME$\nAdditional Info:$SERVICEOUTPUT$"
}
该 python 脚本是发送邮件的脚本。如果我从命令行执行它,它会起作用,但它不会从 nagios 发送电子邮件。
我做错了什么?
更新:联系方式如下:
define contact{
contact_name root
alias Root
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email [email protected]
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members root
}
答案1
首先通过查看 nagios.log 检查 nagios 是否确实启动了您的脚本。如果它正在采取适当的行动,您可以尝试通过添加 2>&1 >> /tmp/mynagiosemail.log 来记录电子邮件脚本的输出,以查看它是否引发错误(无论是与 python 相关还是与 os 相关)。
我注意到您的脚本位于 /etc/nagios3 中,这里不适合放置 nagios 将要执行的内容,您可能需要将其移动到 /usr/lib/nagios/plugins/ 或 /usr/lib/nagios3 以保持一致,然后确保 nagios 用户可以读取和执行它。看起来似乎没有任何 apparmor 限制,但不会有什么坏处。
答案2
您的或的service_notification_options
设置是什么(如果存在)?由于您收到了警告电子邮件,因此听起来您没有设置,也没有设置host_notification_options
contact
contactgroup
c
service_notification_options
d
host_notification_options
答案3
在您的联系人{}中您是否有以下内容?
host_notification_commands host-notify-by-email