尝试从 nagios 发送电子邮件

尝试从 nagios 发送电子邮件

我对 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 用户,不熟悉发电子邮件命令,但手册页应该会给你提供线索。也许可以将主机通知定义与服务通知定义进行比较,并寻找差异。

相关内容