3.6 sendEmail 邮件报警:
3.6.1 简介
sendEmail是一个轻量级,命令行的SMTP邮件客户端。如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php、bash
perl和web站点使用。
以上是sendEmail的简单介绍,千万不要和sendmail搞混掉了。用了sendEmail你将不在喜欢sendmail了.
3.6.2 下载安装sendEmai
# 停止 postfix [root@redhat-zabbix conf]# chkconfig postfix off [root@redhat-zabbix conf]# /etc/init.d/postfix stop sendEmail下载地址:http://caspian.dotconf.net/menu/Software/SendEmail/ # 下载 解压 wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz tar -xzvf sendEmail-v1.56.tar.gz # 解压后就可以使用了 mv sendEmail /usr/local/bin/
开启zabbix 报警server路径
创建zabbix 报警脚本存放路径:
mkdir -p /var/lib/zabbix/alertscripts # 编辑 zabbix_server.conf(yum 或者自己编译安装路径不同请,可以find查找) [root@localhost alertscripts]# vim /application/zabbix/etc/zabbix_server.conf # 配置文件大概在449行 AlertScriptsPath=/var/lib/zabbix/alertscripts
报警脚本
报警脚本有两种,shell 或者Python 推荐python
[root@zabbix alertscripts]# cat python.py #!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys # configure your own parameters here #下面邮件地址的smtp地址 mail_host = 'smtp.163.com' #用来发邮件的邮箱,在发件人抬头显示(不然你的邮件会被当成是垃圾邮件) mail_user = '1850138309@163.com' #上面邮箱的密码 mail_pass = 'zhangxebo12' #上面smtp地址的主网站地址 mail_postfix = 'smtp.163.com' def send_mail(to_list,subject,content): me = mail_user+"<"+mail_user+"@"+mail_postfix+">" msg = MIMEText(content, 'plain', 'utf-8') # 必须使用'utf-8'参数,否则默认为us-ascii, 在部分邮件客户端中文会显示为乱码 msg['Subject'] = subject msg['From'] = me msg['to'] = to_list try: s = smtplib.SMTP() s.connect(mail_host) s.login(mail_user,mail_pass) s.sendmail(me,to_list,msg.as_string()) s.close() return True except Exception,e: print str(e) return False if __name__ == "__main__": send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
3.6.5.4 授权脚本设置执行权限和属组
[root@zabbix alertscripts]# chmod 755 python.py [root@zabbix alertscripts]# chown -R zabbix.zabbix python.py
3.6.5.5 发送测试
需要注意:QQ等邮箱做了限制,可能会将你邮件当做垃圾邮件不让发,如果公司有邮箱,建议在shell或者Python脚本中用公司邮箱,这样就不要用担心邮件被拦截了。
[root@zabbix alertscripts]# python python.py 7652898@qq.com test "今天上班" (554, 'DT:SPM 163 smtp7,C8CowAB39ioQxk1Zw_KlMg--.2740S2 1498269201,please see http://mail.163.com/help/help_spam_16.htm?ip=36.102.227.130&hostid=smtp7&time=1498269201')
3.6.5.6 zabbix web界面操作
3.6.5.7 设置报警媒介
选择管理-报警媒介类型-创建媒体类型
名称 可以自己定义:类型记得选择脚本
脚本名称一定要写对,你自己写的.sh名称,我的是email.sh
邮件报警 记得加下面三个参数不然不发邮件哦
email.sh {ALERT.SENDTO} 收件人地址 {ALERT.SUBJECT} 主题 {ALERT.MESSAGE} 详细内容
3.6.5.8 设置动作
可创建动作,我直接用zabbix
在默认信息修改我提供的
默认接收人中文可以修改哦。
故障动作:
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障! 告警主机:{HOST.NAME} 主机IP: {HOST.IP} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID: {EVENT.ID}
故障恢复动作:
已恢复{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障! 告警主机:{HOST.NAME} 主机IP: {HOST.IP} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID: {EVENT.ID} 编译发送消息用户
在类型一定要选择自己报警名称。
收件人可以写一个邮箱地址
启动时间自己可修改。包括严重性。