2010年由于飞信升级了,以前使用的nagios、fethion for linux 作为短信报警方案现在已经失效了。而且fethion也不是非常好用,现在采用139邮箱作为短信报警方案还是切实可行的,缺点是有些延迟。

 

技术方案:Nagios+139邮箱+手机短信

 

Nagios发警告邮件默认是采用本机的smtp服务, 可以查看commands.cfg中关于发邮件的命令的定义, 使用本机的mail命令, 这就需要开启本机的smtp服务, 为了安全可以在防火墙上设置拒绝其他的机器连本机的25号端口. 假如网络里面有一个邮件服务器(比如公司自己的邮件服务器), 则可以直接使用这台现有的邮件服务器, 不用开启本机的smtp服务, 只需要重新定义命令使用第三方软件sendEmail.

 

sendEmail官方地址: http://caspian.dotconf.net/menu/Software/SendEmail/

 

首先要在邮件服务器上新建一个账户用来做发邮件的账户, 以利用一现有的, 假如 [email protected] , SMTP邮件服务器地址为smtp.139.com(如果没有DNS,则直接使用IP), SMTP验证的用户名密码(如果该邮件服务不需要SMTP验证则无需本用户名密码)为encle/iamencle

 

1.安装sendEMail

cd /u01/software/nagios wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz tar -zxvf sendEmail-v1.56.tar.gz && cd sendEmail-v1.56 cp sendEmail /usr/local/bin chmod 0755 /usr/local/bin/sendEmail

2. 发送邮件测试

 

# sendEmail -h (查看sendMail帮助)

# sendEmail -f [email protected] -t [email protected] -s smtp.139.com -u "邮件主题" -m "邮件内容" –xu 发送者邮箱账户名 –xp 发送者邮箱密码

或者将一个文件的内容作为附件发出, 并且是gb2312或utf8编码的html格式文件(可以显示中文):

# sendEmail -f [email protected] -t [email protected] -s smtp.139.com -u "邮件主题" -m "邮件内容" -a /var/log/messages -o message-content-type=html -o message-charset=gb2312 –xu 发送者邮箱账户名 –xp 发送者邮箱密码

 

各参数含义如下:

 

-f 表示发送者的邮箱, 可随意设置

 

-t 表示接收者的邮箱

 

-s 表示SMTP服务器的域名或者IP

 

-u 表示邮件的主题

 

-m 表示邮件的内容

 

-xu 表示SMTP验证的用户名, 如果SMTP服务器需要验证的话就加上该参数, 一般发给外网用户则需要

 

-xp 表示SMTP验证的密码, 如果SMTP服务器需要验证的话就加上该参数, 一般发给外网用户则需要

 

-a FILE [FILE ...]      file p_w_upload(s)

 

-cc ADDRESS [ADDR ...]   cc  email address(es)

 

-bcc ADDRESS [ADDR ...]   bcc email address(es)

如果使用Foxmail接受邮件, 为了正确显示中文, 需设置邮件显示编码为UTF-8, 设置方法:

 

右键邮件文本 - 编码 - 选择"UTF-8"

 

3. 配置接收nagios告警的邮件地址

vi /usr/local/nagios/etc/objects/contacts.cfg  define contact{          contact_name    nagiosadmin          use        generic-contact          alias        Nagios Admin          email       接受者邮箱地址          }

4. 修改commands.cfg, 替换掉原来发送邮件的两个命令

默认的输出宏$HOSTOUTPUT$和$SERVICEOUTPUT$只会输出第一行信息, 我们使用$LONGHOSTOUTPUT$和$LONGSERVICEOUTPUT$输出完整信息.

 

注意: 为了能接受到格式化良好, 且中文无乱码的超文本邮件, 可以对sendEmail设置 "-o message-content-type=html -o message-charset=utf8" 选项.

 

# vi +27 /usr/local/nagios/etc/objects/commands.cfg (建议使用超文本格式,
作为回车符)

# 'notify-host-by-email' command definition  define command{          command_name    notify-host-by-email          command_line    /usr/bin/printf "%b" "Host: $HOSTNAME$
Notification: $HOSTNOTIFICATIONNUMBER$
Command: $HOSTCHECKCOMMAND$
Datetime: $LONGDATETIME$

Info: $HOSTOUTPUT$
$LONGHOSTOUTPUT$" | /usr/local/bin/sendEmail -f 发送者邮箱 -t $CONTACTEMAIL$ -s smtp.139.com -u "Host $HOSTSTATE$: $HOSTADDRESS$" -o message-content-type=html -o message-charset=utf8 –xu [email protected] –xp 发送者邮箱密码  }  # 'notify-service-by-email' command definition  define command{          command_name    notify-service-by-email          command_line    /usr/bin/printf "%b" "Host: $HOSTALIAS$
NotifyTimes: $SERVICENOTIFICATIONNUMBER$
Command: $SERVICECHECKCOMMAND$
Datetime: $LONGDATETIME$

Additional Info:
$SERVICEOUTPUT$
$LONGSERVICEOUTPUT$" | /usr/local/bin/sendEmail -f [email protected] -t $CONTACTEMAIL$ -s smtp.139.com -u "Service $SERVICESTATE$: $HOSTADDRESS$ | $SERVICEDESC$" -o message-content-type=html -o message-charset=utf8 –xu [email protected] –xp 发送者邮箱密码  }

 

5. 修改完主配置文件后, 都需要重启Nagios服务, 重启前先验证配置文件是否有误

 

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

 

# service nagios reload

 

如果有问题则查询Nagios运行日志, 进行进一步诊断:

 

#tail -50f /usr/local/nagios/var/nagios.log

 

 

博主仍从事运维行业,拥有10年+ 一线运维经验,技术上靠得住(还行吧),生活不容易,纯粹补贴家用,时间充裕,与有需要的朋友 互相帮助。

业务范围:网站、服务器、系统(linux|windows)、架构、部署、调优、排错、安全方案、低成本解决中小量攻鸡、业务上云(所有公有云)

合作形式:代维、兼职、临时技术支持

合作理念:诚信第一、信任是基石、不解决问题不收钱、完工才收

职业操守:讲诚信和绝不影响用户数据安全,您信任后再合作

客户监督:本博文评论一直开放,合作的朋友们可自由发表合作后对我的评价(坏朋友请放过我吧0_0)

联系方式:QQ:278566109

自评:我的技术不是很好也不是很差,自信能解决绝大多数问题。截止目前合作过的项目20个左右。相信合作后不会让您失望。

鉴于运维的敏感性,信任是很重要的,有需要的朋友们可以联系我,谢谢照顾与支持,感恩~~