一、ZABBIX 之QQ邮箱报警

我们以腾讯的邮件服务器作为今天的邮件服务器,首先了解一下两点:

1、我们采用的邮件发送协议是smtp 协议。腾讯的smtp协议当中的IMAP服务器和端口分别是服务器:smtp.qq.com 端口:465 或者用POP3的25号端口

2、如何开启smtp 服务器

3、邮箱->设置->账户

zabbix告警次数 zabbix报警机制_python


滚动下滑,选择开启IMAP

zabbix告警次数 zabbix报警机制_json_02


开启需要的条件,

1、绑定手机

2、QQ号登陆满七天

zabbix告警次数 zabbix报警机制_python_03


zabbix告警次数 zabbix报警机制_服务器_04


授权码(密码):yhkdlakszfkpbdci在zabbix-server 服务器上设置报警的脚本目录

首先在服务器切换到报警脚本要存放的目录(这个目录是让zabbix寻找脚本)

zabbix告警次数 zabbix报警机制_python_05


然后修改server 服务端配置文件

zabbix告警次数 zabbix报警机制_json_06


修改配置

455行 AlertScriptsPath=/usr/lib/zabbix/alertscripts

zabbix告警次数 zabbix报警机制_python_07


编写报警脚本

注意: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 “你好”

zabbix告警次数 zabbix报警机制_python_08


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、设置报警媒介、用户、触发器

设置报警媒介

发送邮件

zabbix告警次数 zabbix报警机制_json_09


zabbix告警次数 zabbix报警机制_python_10


zabbix告警次数 zabbix报警机制_json_11


发送钉钉,步骤大同小异

zabbix告警次数 zabbix报警机制_服务器_12


zabbix告警次数 zabbix报警机制_json_13


效果如下

zabbix告警次数 zabbix报警机制_json_14


设置报警用户

zabbix告警次数 zabbix报警机制_json_15


添加报警媒介

zabbix告警次数 zabbix报警机制_python_16


添加报警媒介

邮件

zabbix告警次数 zabbix报警机制_json_17


钉钉

zabbix告警次数 zabbix报警机制_zabbix告警次数_18


zabbix告警次数 zabbix报警机制_zabbix告警次数_19


zabbix告警次数 zabbix报警机制_zabbix告警次数_20


设置动作

zabbix告警次数 zabbix报警机制_zabbix告警次数_21


邮件

zabbix告警次数 zabbix报警机制_zabbix告警次数_22


添加options信息

zabbix告警次数 zabbix报警机制_json_23


zabbix告警次数 zabbix报警机制_zabbix告警次数_24


钉钉

zabbix告警次数 zabbix报警机制_python_25


zabbix告警次数 zabbix报警机制_json_26

zabbix告警次数 zabbix报警机制_服务器_27


默认接收人:故障{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查看是否报警

zabbix告警次数 zabbix报警机制_json_28

过一会 就会收到 qq邮箱报警 或者 钉钉报警信息