我对 Nagios 还很陌生。我试图发送电子邮件警报。但似乎不起作用。
但在我的 nagios 日志中我可以看到这一点:
SERVICE ALERT: Appserver;Tmp directory;CRITICAL;HARD;1;
通过电子邮件生成主机通知时,只有服务警报不起作用。当我查看sendEmail
日志时,我可以看到以下内容:
Sep 14 12:38:39 x.x.x.x. sendEmail[23005]: ERROR => You must specify a 'from' field! Try --help.
Sep 14 12:39:39 x.x.x.x.x. sendEmail[23129]: ERROR => You must specify a 'from' field! Try --help.
Sep 14 12:40:39 x-x-x-x-x sendEmail[23233]: ERROR => You must specify a 'from' field! Try --help.
我哪里犯了错误?
提前致谢。
答案1
您没有指定在 EC2 实例上使用哪个发行版,但是我的 Ubuntu Lucid 框上的通知主机电子邮件命令定义如下所示:
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "$HOSTSTATE$ - $HOSTNAME$ ping" -r "Nagios Alert <[email protected]>" $CONTACTEMAIL$
}
并且电子邮件通知服务如下所示:
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/mail -s "$SERVICESTATE$ $HOSTALIAS$/$SERVICEDESC$" -r "Nagios Alert <[email protected]>" $CONTACTEMAIL$
}
因此,Nagios 基本上所做的就是将格式化的消息正文通过管道传输到/usr/bin/mail
命令,该命令有一堆命令行选项来指定主题、回复等。特别是,我明确设置了发件人:使用“-r”选项,因为我希望此类通知来自我们的一般“系统”邮件列表。
您可能已经设置了自己的电子邮件通知命令。查看系统mail
命令的手册页,了解可以使用哪些选项来指定常用邮件标头。
答案2
您必须查找用于发送通知的命令定义。就我而言,我的所有通知命令都在nagios/etc/misccommands.cfg。该定义中的某个地方是运行以发送通知电子邮件的命令。您必须修复它。我是 Solaris 用户,不熟悉发电子邮件命令,但手册页应该会给你提供线索。也许可以将主机通知定义与服务通知定义进行比较,并寻找差异。