Nagios警告邮件的特殊配置

Nagios警告邮件的特殊配置



nagios发警告邮件是采用本机的smtp服务,可以查看commands.cfg中关于发邮件的命令的定义,使用本机的mail命令,这就需要开启本机的smtp服务,
为了安全可以在防火墙上设置拒绝其他的机器连本机的25号端口


现在我们的网络里面有一个邮件服务器,所以要求使用这台现有的邮件服务器,不开启本机的smtp服务,这就需要重新定义命令使用第三方软件sendEmail.
 
首先我们当然要在邮件服务器上新建一个账户用来做发邮件的账户


这里邮件服务器的地址为  mail.test.com
用来发邮件的帐号 [email protected]
SMTP验证的用户名   nagios 
密码    p#3isoda
 
以下就来介绍一下sendEmail这个软件的使用.
http://caspian.dotconf.net/menu/Software/SendEmail/
下载地址
http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.55.tar.gz[/
软件十分小,是一个通过命令来发smtp邮件的程序.安装也十分简单(查看其README文件即可).


解压缩tar –zxvf sendEmail-v1.55.tar.gz
cd sendEmail-v1.55
将可执行程序复制cp sendEmail /usr/local/bin


然后给确认确实它具有执行权限
ll /usr/local/bin/sendEmail
-rwxr-xr-x 1 root root 77882 11-03 14:23 /usr/local/bin/sendEmail
这样程序就装好了,使用也很简单.直接运行sendEmail就会显示详细的用法


先看一个典型的例子


/usr/local/bin/sendEmail –f [email protected] –t [email protected] –s mail.test.com –u “from nagios” –xu nagios –xp p#3isoda –m happy
解释:
-f 表示发送者的邮箱
-t 表示接收者的邮箱
-s 表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu 表示SMTP验证的用户名
-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)
-m 表示邮件的内容
 
如果你不带-m参数的话,就会提示你自行输入
Reading message body from STDIN because the ‘-m’ option was not used.
If you are manually typing in a message:
  - First line must be received within 60 seconds.
  - End manual input with a CTRL-D on its own line
输入完成后使用CTRL-D来结束
当然我们也可以将一个文件的内容作为邮件的正文发出去的
那么就可以使用:
cat 文件名 | /usr/local/bin/sendEmail –f [email protected] –t [email protected] –s mail.test.com –u “from nagios” –xu nagios –xp p#3isoda
有关sendEmail的用法就讲到这里
 
既然nagios要使用sendEmail来发警告邮件,那么就要修改commands.cfg中关于发邮件的命令的定义,我们现在来修改notify-by-email这个命令,如下(注意其中粗体的部分)
# 'notify-by-email' command definition
define command{
        command_name    notify-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios 2.9 *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/local/bin/sendEmail -f [email protected] -t $CONTACTEMAIL$ -s mail.test.com -u "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu nagios -xp p#3isoda
        }
 




send_email() {
  /usr/local/bin/sendEmail -t $CONTACTEMAIL -f [email protected] -s 192.168.1.70 -xu nagios -xp Sinolife2008 -u "$HOSTNAME $SERVICEDESC ($NOTIFICATIONTYPE $SERVICESTATE)" -m "***** Nagios监控中心通知 *****\n\n通知类型: $NOTIFICATIONTYPE\n监控服务: $SERVICEDESC\n监控主机: $HOSTNAME\nIP地址: $HOSTADDRESS\n服务状态: $SERVICESTATE\n日期/时间:$LONGDATETIME\n附加信息: $SERVICEOUTPUT" -o message-charset=utf8
}






注:其实sendEmail是一个十分有用的程序,我们在这个地方用了它,其实别的地方也可以用,
典型的好处就是你不需要每台机器都装sendmail,开启smtp服务.直接用现成的一台邮件服务器就行了,
这无疑很大的加强了系统的安全性,也节约了资源.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29500582/viewspace-1685020/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29500582/viewspace-1685020/

你可能感兴趣的:(Nagios警告邮件的特殊配置)