一、ZABBIX 之QQ邮箱报警
我们以腾讯的邮件服务器作为今天的邮件服务器,首先了解一下两点:
1、我们采用的邮件发送协议是smtp 协议。腾讯的smtp协议当中的IMAP服务器和端口分别是服务器:smtp.qq.com 端口:465 或者用POP3的25号端口
2、如何开启smtp 服务器
3、邮箱->设置->账户
滚动下滑,选择开启IMAP
开启需要的条件,
1、绑定手机
2、QQ号登陆满七天
授权码(密码):yhkdlakszfkpbdci在zabbix-server 服务器上设置报警的脚本目录
首先在服务器切换到报警脚本要存放的目录(这个目录是让zabbix寻找脚本)
然后修改server 服务端配置文件
修改配置
455行 AlertScriptsPath=/usr/lib/zabbix/alertscripts
编写报警脚本
注意:zabbix默认调用的是你Linux中的python 2版本。我们需要用python 2 来执行脚本并成功运行(!!!!非常重要)
[root@localhost alertscripts]# vim SendEmail.py
#!/usr/bin/python
#coding:utf-8
import sys
import smtplib
from email.mime.text import MIMEText
mail_host = “smtp.qq.com” # smtp 地址
mail_user = “xxx@qq.com” # qq邮箱地址
mail_password = ‘yhkdlakszfkpbdci’ # qq 邮箱 smtp服务 授权码
def send_mail(to,subject,content):
message = MIMEText(content,“plain”,“utf-8”)
message[“Subject”] = subject
message[“From”] = mail_user
message[“to”] = to
try:
smtp = smtplib.SMTP(mail_host,25)
smtp.login(mail_user,mail_password)
smtp.sendmail(mail_user,[to],message.as_string())
smtp.close()
except Exception as e:
with open(“mail.log”,“a”) as f:
f.write(str(e)+"\n")
if name == “main”:
send_mail(
sys.argv[1],
sys.argv[2],
sys.argv[3], #$1
)
注意:在这里我们使用的 是25号端口
运行脚本命令测试效果如下
测试命令:
[root@localhost alertscripts]# python SendEmail.py “xxx@qq.com” “nice work” “hello word”
二、钉钉报警机制
Python 钉钉报警
#!/usr/bin/python
#coding:utf-8
import sys
import json
import requests
def WriteLogByDing(content):
headers = {
“Content-Type”: “application/json”,
“Chartset”: “utf-8”
}
request_data = {
"msgtype": "text",
"text": {
"content": content
},
"at": {
"atMobiles": [],
"isAtAll": True
}
}
sendData = json.dumps(request_data)
response = requests.post(url = url,headers = headers,data = sendData)
content = response.content.decode()
#print(content)
if name == “main”:
content = sys.argv[1]
WriteLogByDing(content)
运行脚本测试效果如下
测试命令:python sendDing.py “你好”
3、授权脚本(重要)
[root@localhost alertscripts]# chown zabbix.zabbix sendEmail.py
[root@localhiost alertscripts]# chown zabbix.zabbix sendDing.py
[root@localhost alertscripts]# chmod +x sendDing.py
[root@localhost alertscripts]# chmod +x sendEmail.py
4、设置报警媒介、用户、触发器
设置报警媒介
发送邮件
发送钉钉,步骤大同小异
效果如下
设置报警用户
添加报警媒介
添加报警媒介
邮件
钉钉
设置动作
邮件
添加options信息
钉钉
默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
默认信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
恢复操作
默认接收人:已恢复!{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}
恢复信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}测试报警
关闭zabbix-agent查看是否报警
过一会 就会收到 qq邮箱报警 或者 钉钉报警信息