标签:开始 间隔 get out 注意 标题 版本问题 tar dom
zabbix3.4实现sendEmail邮件报警#!/bin/bash
#
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail -f ieee8023@163.com -t "$to" -s smtp.163.com -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu ieee8023@163.com -xp xxxxxxx -m "$body" -o tls=no
说明:
/usr/local/bin/sendEmail
-f guoxinjiezz@163.com
-t guoxinjiezz@163.com
-s smtp.163.com
-u "邮件主题"
-o message-content-type=html
-o message-charset=utf-8
-xu 15838757615@163.com
-xp wudang123
-m "邮件内容"
-o tls=no
上面有4个地方我用紫色加粗字体表示了
a@domain.com 表示发件人邮箱
smtp.exmail.qq.com 表示邮箱的smtp服务器,因为我是用的腾讯企业邮箱。如果是其他邮箱,需要修改
password 表示发件人邮箱密码
编辑完成后,给脚本权限
chmod +x sendEmail.sh
chown zabbix.zabbix sendEmail.sh
手动执行一次脚本,后面的参数分别对应接收人,主题,内容
./sendEmail.sh c@domain.com test 123br/>登录c@domain.com的账户,查看邮件是否可以收到
如果脚本执行没有报错,收不到邮件的话,请检查linux网络问题,iptables、selinux是否关闭。
进入zabbix管理页面
点击管理->报警媒介类型 点击最右边的创建媒体类型
输入脚本名称,类型选择脚本
添加以下3个参数,分别对应sendEmail.sh脚本需要的3个参数:收件人地址、主题、详细内容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
解释:很多人安装zabbix 3.0之后,写的脚本一直发信不成功,手动执行时可以的。
那是因为zabbix3.0之后,可以自定义参数了。所以不写参数,它是不会传参数的。
在2.x版本不存在这个问题,默认会传3个参数。
点击Admin用户
点击添加
选择sendEmail.sh脚本,输入收件人的邮箱地址
点击用户群组,点击zabbix administrator后面的调用模式,点击一下,就启用了
点权限->添加
选择所有
点击更新
点击配置->动作 点击默认的动作
点击动作->编辑
修改持续时间为60秒
修改步骤为3,表示触发3次动作
选择用户Admin
选择仅送到sendEmail.sh
点击更新
解释:默认的步骤是1-1,也即是从1开始到1结束。一旦故障发生,就是执行sendEmail.sh脚本发生报警邮件给Admin用户和zabbix administrator组。
假如故障持续了1个小时,它也只发送一次。如果改成1-0,0是表示不限制.无限发送
间隔就是默认持续时间60秒。那么一个小时,就会发送60封邮件。
如果需要短信报警的话,可以再创建一条新的动作,选择短信脚本。
下面开始测试邮件报警
等待几分钟,就会收到邮件报警了
点击报表->动作日志 可以看到触发动作的次数。只会有3次,除非test主机状态改变,也就是正常的时候,会触发一次,否则不会再触发。
点击 配置->动作->Report problems to Zabbix administrators
在默认信息每一行后面添加<br/>
列如:
故障消息<br/>
主机:{HOSTNAME}<br/>
IP:{IPADDRESS}<br/>
监控项:{ITEM.NAME}<br/>
触发器:{TRIGGER.NAME}<br/>
键值:{ITEM.KEY}:{ITEM.VALUE}<br/>
时间:{DATE} {TIME}<br/>
因为我用sendEmail.sh脚本指定格式是html,所以换行就是<br/>
点击更新
再添加几台主机
就这样,邮件报警就写完了
sendEmail发送邮件
概述
最近学习zabbix,想触发告警时发送邮件,准备使用sendEmail发送邮件,原以为很简单的事情,还是踩了一些坑,记录如下。
Step 1 安装sendEmail
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
cd sendEmail-v1.56/
cp sendEmail /usr/local/bin/
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar -xzvf sendEmail-v1.56.tar.gz
cd sendEmail-v1.56/
cp sendEmail /usr/local/bin/
Step 2 发送邮件
发送qq邮件:
首先找到qq邮箱smtp设置处,拿到授权码:
登录qq邮箱,设置,找到如下界面
关闭再开启,可获得授权码。
发送:
/usr/local/bin/sendEmail -f 1523955650@qq.com \
-t 1523955650@qq.com \
-s smtp.qq.com \
-u "邮件主题" \
-o message-content-type=html \
-o message-charset=utf-8 \
-xu 1523955650@qq.com \
-xp pepltaflcvuniied \
-m "邮件内容"
sendEmail[1925]: ERROR => Timeout while reading from smtp.qq.com:25 There was no response after 60 seconds.
-f 1523955650@qq.com 发件人邮箱
-t 1523955650@qq.com 收件人邮箱
-s smtp.qq.com 发件人邮箱的smtp服务器
-u "邮件标题" 邮件的标题
-o message-content-type=html 邮件内容的格式,html表示它是html格式
-o message-charset=utf8 邮件内容编码
-xu 1523955650@qq.com 发件人邮箱的用户名
-xp pepltaflcvuniied 发件人邮箱smtp授权码
-m "邮件内容" 邮件的具体内容
Timeout?咋回事呢,试用465和587端口,一样不行:
/usr/local/bin/sendEmail -f 1523955650@qq.com \
-t 1523955650@qq.com \
-s smtp.qq.com:465 \
-u "邮件主题" \
-o message-content-type=html \
-o message-charset=utf-8 \
-xu 1523955650@qq.com \
-xp pepltaflcvuniied \
-m "邮件内容"
sendEmail[3950]: ERROR => Timeout while reading from smtp.qq.com:465 There was no response after 60 seconds.
意思是邮件不让发了呗?不纠结了,换163试试。
发送163邮件
找到163邮箱,设置,找到如下图:
开启smtp服务,然后找到客户端授权密码:
1632.png
关闭再开启,可自己设置授权密码。
发送:
/usr/local/bin/sendEmail -f 13957348548@163.com \
-t 13957348548@163.com \
-s smtp.163.com \
-u "邮件主题" \
-o message-content-type=html \
-o message-charset=utf-8 \
-xu 13957348548@163.com \
-xp cloudtest123 \
-m "邮件内容"
sendEmail[4753]: invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 575.
又怎么了?网上查了下,是perl版本问题,添加 -o tls=no 参数即可解决,参考 https://www.cnblogs.com/fjping0606/p/6774348.html
/usr/local/bin/sendEmail -f 13957348548@163.com \
-t 13957348548@163.com \
-s smtp.163.com \
-u "邮件主题" \
-o message-content-type=html \
-o message-charset=utf-8 \
-xu 13957348548@163.com \
-xp cloudtest123 \
-m "邮件内容" \
-o tls=no
sendEmail[5120]: Email was sent successfully!
查看邮箱验证:
大功告成,下面可以愉快地配置zabbix邮件告警了!
标签:开始 间隔 get out 注意 标题 版本问题 tar dom
原文地址:https://blog.51cto.com/14355475/2426405