使用Centos系统自带的sendmail服务作为客户端,使用第三方SMTP服务发送邮件报警。
此功能是在nagios服务正常安装运行的基础上实现的;因此要先安装好基本的nagios运行环境,这个可以参考本人相关的博文。
1.软件检测及安装
#rpm -q sendmail
不存在怎安装
#yum -y install sendmail
2.停止sendmail服务
这里不需要sendmail作为邮件服务端来运行,所以关闭sendmail服务。
#service sendmail stop
3.配置sendmail服务
配置发送邮件的邮箱认证信息
vi /etc/mail.rc
--- 增加如下内容 ---
set [email protected]
set smtp=smtp.xxx.com
set smtp-auth-user=MailName
set smtp-auth-password=yourpasswd
set smtp-auth=login
4.测试发送邮件功能
格式:echo "邮件内容" | mail -s "邮件标题" 目标邮件地址
echo "hello word" | mail -s "mail title" [email protected]
5.配置nagios邮件发送命令
修改nagios命令配置文件
#vim nagios/etc/object/command.cfg
#notify-host-by-email命令的定义
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" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}
#notify-service-by-email命令的定义
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$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}
注:命令是在一行上的,这里排版问题被分成了多行.
接着修改nagios中定义的主机和服务的报警机制,实现nagios利用邮件自动报警。
鸣谢:本人参考了多篇文章后总结而得,在此感谢各位网络分享者!