一、安装mailx
mailx是centos下的一种处理邮件的工具。
yum -y install mailx
然后对mail.rc文件进行配置
vim /etc/mail.rc
在配置文件末尾添加如下内容,这里阿里云有坑,先说非阿里云服务器都添加哪些内容
此处smtp-auth-password项不是邮箱密码,而是打开邮箱的pop3/smtp服务后提供的授权码
QQ邮箱的获取方式是登陆QQ邮箱mail.qq.com,设置=>账户往下拉POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中将POP3/SMTP服务打开(需要用账号绑定手机发请求短信获取)
非阿里云:
set bsdcompat
set from=XXXXXXX@qq.com #如:zhangsan@163.com
set smtp=smtp.qq.com #发送邮箱smtp服务器地址(必须开启smtp服务)
set smtp-auth-user=XXXXXXXX@qq.com #如:zhangsan,跟发送邮箱填一样的也行
set smtp-auth-password=XXXXXXXXXXXX #打开邮箱的pop3/smtp服务后提供的授权码
set smtp-auth=login
阿里云
如果是阿里云等服务器,由于屏蔽了25号端口,会导致连接超时,所以我们需要配置465端口,配置如下
创建ssl证书
cd /root
echo -n | openssl s_client -connect smtp.126.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qqmail.crt //如果是126或者qq邮箱,把smtp.qq.com:465中的qq改掉即可
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qqmail.crt
certutil -L -d /root/.certs
信任证书
cd /root/.certs
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qqmail.crt
这里在/etc/mail.rc的配置中比非阿里云多两行
set bsdcompat
set from=XXXXXXX@qq.com #如:zhangsan@163.com
set smtp=smtp.qq.com #发送邮箱smtp服务器地址(必须开启smtp服务)
set smtp-auth-user=XXXXXXXX@qq.com #如:zhangsan,跟发送邮箱填一样的也行
set smtp-auth-password=XXXXXXXXXXXX #打开邮箱的pop3/smtp服务后提供的授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs
测试邮件发送
echo "zabbix test mail" | mail -s "zabbix" yyy@yyy.com
二、编写发送脚本
zabbix默认的脚本位置是/usr/lib/zabbix/alertscripts/
如果是编译安装的自行查找zabbix/alertscripts位置
vim /usr/lib/zabbix/alertscripts/
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/var/log/mailx.log 2>&1
修改权限
touch /tmp/mailx.log
chown -R zabbix.zabbix /tmp/mailx.log
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/
测试脚本发送邮件
/usr/lib/zabbix/alertscripts/mailx.sh xxxxx@126.com "测试邮件标题" "测试邮件内容"
三、zabbix服务端配置
管理=>报警媒介类型=>创建新媒介类型
名称:mailx
类型:脚本
脚本名称:mailx.sh (此处务必与/usr/lib/zabbix/alertscripts 中的脚本名称一致)
脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
配置用户权限,在管理=>用户=>选中Admin=>报警媒介
配置动作
添加个动作触发条件
给动作添加操作
标题内容:
故障{TRIGGER.STATUS},服务器名:{HOSTNAME1}发生: {TRIGGER.NAME}
消息内容:
告警主机:{HOSTNAME}
告警主机IP地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
添加发送到的组或者用户
如果需要恢复也发邮件的话别忘了在恢复操作中照葫芦画瓢
四、测试发送邮件内容
可以关闭zabbix_agentd服务来激活邮件告警
也可以用其他监控项来测试
killall java