简介:

sendEmail是一个轻量级,命令行的SMTP邮件客户端。如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php、bash perl和web站点使用。以上是sendEmail的简单介绍,这里要和sendmail区别分开。


具体配置:

一、

下载软件:

[root@dell-09 app]# cd /data/app/
[root@dell-09 app]# wget -c http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
[root@dell-09 app]# tar -zxvf sendEmail-v1.56.tar.gz
[root@dell-09 app]#  cd sendEmail-v1.56
[root@dell-09 sendEmail-v1.56]#  cp -a sendEmail /usr/local/bin/
[root@dell-09 sendEmail-v1.56]# chmod 755 usr/local/bin/sendEmail
[root@dell-09 sendEmail-v1.56]# file /usr/local/bin/sendEmail
/usr/local/bin/sendEmail: a /usr/bin/perl -w script text executable

#查看版本

[root@dell-09 sendEmail-v1.56]# /usr/local/bin/sendEmail
sendEmail-1.56 by Brandon Zehm <caspian@dotconf.net>

#安装依赖

[root@dell-09 sendEmail-v1.56]# yum -y install perl-Net-SSLeay perl-IO-Socket-SSL


二、

测试邮件发送:

参数描述:

/usr/local/bin/sendEmail 命令主程序

-f ttlsafrom@163.com  发件人邮箱

-s smtp.163.com       发件人邮箱的smtp服务器

-u "zabbix test "     邮件的标题

-o message-content-type=html   邮件内容的格式,html表示它是html格式

-o message-charset=utf8        邮件内容编码

-xu ttlsafrom@163.com          发件人邮箱的用户名

-xp 123456               发件人邮箱授权码(不是邮箱密码)

-m "告警详情"        邮件的具体内容

wKiom1hh5D-hbmRQAABxPijkeuo764.png

note:163邮箱需要开启smtp及客户端授权码!

wKiom1hh5tbTDS0rAAGCpkBBgvQ218.png


验证:

wKioL1hh58HjXRcfAAAnWOYQxlQ048.png

三、下面开始设置zabbix的sendemail邮件发送脚本

[root@dell-09 sendEmail-v1.56]#  cat /usr/local/zabbix/etc/zabbix_server.conf  |grep AlertScriptsPath
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/local/zabbix/alertscripts
[root@dell-09 sendEmail-v1.56]#

进入zabbix自定义的指定目录,我这里是/usr/local/zabbix
可以查看zabbix_server.conf配置文件AlertScriptsPath变量是如何定义的。
找到AlertScriptsPath选项,可以自定义脚本位置。

#创建mail.sh脚本

下面是sendemail的邮件发送脚本(这个脚本通用,确保了zabbix邮件报警信息不会出现中文乱码)

如果用163邮箱,smtp地址是smtp.163.com
如果是腾讯企业邮箱,smtp是smtp.exmail.qq.com

脚本链接:

http://down.51cto.com/data/2274361


赋权限:

[root@dell-09 sendEmail-v1.56]#chmod 755 mail.sh
[root@dell-09 sendEmail-v1.56]#touch /tmp/sendEmail.log
[root@dell-09 sendEmail-v1.56]#chown zabbix.zabbix /tmp/sendEmail.log
[root@dell-09 sendEmail-v1.56]#chown zabbix.zabbix mail.sh

#测试发邮件

[root@dell-09 alertscripts]# pwd
/usr/local/zabbix/alertscripts
[root@dell-09 alertscripts]# ./mail.sh ccc@ccc.com merry christmas 测试

wKiom1hh6dCTj2q-AAAoaipisCk374.png


zabbix server配置:

①登陆zabbix界面,进行设置
注意:zabbix 3.0 需要在为alert脚本定义参数,以前的版本参数都固定的,现在用户可以自己定义命令行的参数了。添加的参数也就是脚本中的$1、$2、$3等。

点击"管理"->"报警媒介类型"->点击最右边的"创建媒体类型"

wKiom1hiBMmisvblAABhtxyWb-E009.png

wKiom1hiBHaSnVZ4AAAraFN9iHI240.png


②配置用户信息:

点击“管理”->“用户"->"zabbix" 

wKioL1hiCW_wAoC-AAAxjgGrTuc592.png


wKioL1hiCbyA5kf0AADEGbYAqdo618.png


点击“管理”->“用户群组”,点击zabbix administrator后面的调用模式。

点击用户群组Zabbix administrators的”权限“,点击”添加“,选择所有权限 ,最后点击下面的”更新“

wKiom1hiCkKyd3Y_AABil3JnecQ802.png


③点击“配置”->“动作”,这里可以点击右边的“创建动作”(事件源是”触发器“,也就是Triggers),把默认的Report problems to Zabbix administrators修改为zabbix告警。


zabbix默认的告警内容不太好懂,所以做了以下修改:
告警主机:{HOST.NAME}
主机IP:  {HOST.IP}
告警时间:{EVENT.DATE}  {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:  {EVENT.ID}


wKioL1hiCvCy0u5qAACGxY70C6k535.png


1)计算方式
  设置为“与/或”,说明只要触发其中任何一个都会发报警邮件
2)条件:
  上面默认设置的是下面两个:
  A:维护状态 非在 维护
  B:触发器值 = 问题

按照上面的设置后,当被监控主机宕机或zabbix_agent(10050端口)关闭后,就会发生报警~

但是这些远远不能满足我们的运维监控需求。
比如当被监控主机的根磁盘爆满时,需要发送报警邮件!这就需要额外添加上面“动作”里的“条件”设置

如在“条件”里追加“主机”和“模板”,将所监控的主机和被监控主机采用的模板都选上为触发条件

这样,当任何一个条件被触发时,都会发送报警邮件!

wKioL1hiC7zy2OfgAAAhUUM85iE740.png-wh_50


设置“操作”,可以点击”新的“添加操作规则,也可以直接修改已有的操作规则:

wKiom1hiDFaDkSvDAACOAk65eME680.png

默认的步骤是1-3,也即是从1开始到3结束。一旦故障发生,就是执行sendEmail.sh脚本发生报警邮件给zabbix用户和zabbix administrator组。
假如故障持续了1个小时,它也只发送3次,第1-3次(即前3次)邮箱发送给zabbix用户,时间间隔为0秒。
如果改成1-0,0是表示不限制.无限发送

间隔就是默认持续时间60秒。那么一个小时,就会发送60封邮件。


关键一步:需要重启sever服务器

[root@dell-09 alertscripts]# /etc/init.d/zabbix_server restart


zabbix利用sendemail发送报警信息的设置就已经完成了

测试:停掉任何一台agent服务


查看action日志:

wKioL1hiJIjSBD7EAADRA5nTs4g596.png



效果如下:

wKioL1hiD6nQmFkQAABRfF7NWbM460.png-wh_50