zabbix4.2配置邮件+脚本报警:以QQ邮箱为例
一、邮箱配置:开启smtp服务和授权
开启smtp选项后,系统会生成一个授权,你需要记住这个授权码,后面需要写入配置文件。
二、配置管理mailx:
(1)安装mailx:[root@zabbix-server-center ~]# yum install -y mailx
(2)请求数字证书(这里以qq邮箱为例):
1 2 | [root@zabbix-server-center ~] # mkdir -p /home/zabbix/.certs [root@zabbix-server-center ~] # echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /home/zabbix/.certs/qq.crt |
1 2 3 4 5 6 7 | depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA verify return :1 depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018 verify return :1 depth=0 C = CN, ST = Guangdong, L = Shenzhen, O = Tencent Technology (Shenzhen) Company Limited, OU = R&D, CN = pop.qq.com verify return :1 DONE |
1 2 3 | [root@zabbix-server-center zabbix] # certutil -A -n "GeoTrust SSL CA" -t "C,," -d /home/zabbix/.certs -i /home/zabbix/.certs/qq.crt [root@zabbix-server-center zabbix] # certutil -A -n "GeoTrust Global CA" -t "C,," -d /home/zabbix/.certs -i /home/zabbix/.certs/qq.crt [root@zabbix-server-center zabbix] # cd /home/zabbix/.certs/ |
1 2 3 4 5 6 7 8 9 | [root@zabbix-server-center .certs] # certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt Notice: Trust flag u is set automatically if the private key is present. [root@zabbix-server-center .certs] # certutil -L -d /home/zabbix/.certs Certificate Nickname Trust Attributes SSL,S /MIME ,JAR /XPI GeoTrust SSL CA P,P,P [root@zabbix-server-center .certs] # chown -R zabbix.zabbix /home/zabbix/ |
(3)修改/etc/mail.rc文件:[root@zabbix-server-center ~]# vim /etc/mail.rc
1 2 3 4 5 6 7 | set from=592296813@qq.com ###用来发送邮件的邮箱账号,这里例子是qq邮箱 set smtp=smtps: //smtp .qq.com:465 ###邮件服务器 set smtp-auth-user=592296813@qq.com ###发送邮件的账号 set smtp-auth-password=XXXXXXXXX ###这里是qq邮箱系统提供的“授权码” set smtp-auth=login ###默认login即可 set ssl-verify=ignore ###ssl认证方式,这里选择忽略 set nss-config- dir = /home/zabbix/ .certs ###申请的证书所在目录 |
(4)发送邮件进行测试:
1 | [root@zabbix-server-center ~] # echo "这里是邮件正文" | mail -s "这里是邮件主题" XXXXXXX@163.com |
************************************************************************************************************************************************************************
【可跳过第三步】
三、编写邮件发送脚本:
(1)创建shell脚本文件:
1 | [root@zabbix-server-center zabbix] #vim /usr/lib/zabbix/alertscripts/mailx.sh |
(2)修改zabbix_server.conf配置文件中alertscripts路径(也就是存放邮件脚本的路径):
(3)重启zabbix服务:
1 | [root@zabbix-server-center /] # systemctl restart zabbix-server.service |
(4)设置邮件脚本文件:
#!/bin/bash
to=$1
subject=$2
body=$3
FILE=/tmp/mail.tmp
echo "$body" > $FILE
dos2unix -k $FILE # 解决正文变成附件.bin问题,如果没有dos2unix就使用yum安装dos2unix
mail -s "$subject" "$to" < $FILE
注意在进行脚本测试# echo "123 zabbix" |mail -s "test mail" xxx@163.com时,记得删除/tmp/mail.tmp文件,否则在后面的报警信息正文会一直显示测试命令时候的信息。
(5)设置权限:
1 2 | [root@zabbix-server-center alertscripts] #chmod +x /usr/lib/zabbix/alertscripts/mailx.sh [root@zabbix-server-center alertscripts] #chown zabbix:zabbix /usr/lib/zabbix/alertscripts/mailx.sh |
(6)进入zabbix的web控制台,设置报警类型:
(7)其余配置和直接设置邮件报警一致。
************************************************************************************************************************************************************************
四、进入zabbix的web控制台:
操作配置:
1 2 3 4 5 6 7 8 9 10 11 12 | 默认标题: 故障:{TRIGGER.STATUS},服务器:{HOSTNAME1},发生:{TRIGGER.NAME} 消息内容: 告警主机:{HOST.NAME} 告警IP:{HOST.IP} 告警时间:{EVENT.DATE}-{EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME}:{ITEM.VALUE} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE} 事件ID:{EVENT.ID} |
五、测试邮件报警:
出现以下信息,表明邮件发送是通的,可以正常发送报警邮件。
进入接受邮箱,发现已经成功接收到测试邮件:
模拟测试关闭httpd服务,不久将会收到邮件报警,如下:
好文:https://blog.whsir.com/post-4385.html
https://blog.csdn.net/qq_42988210/article/details/92050440
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步