Zabbix配置邮箱报警

打开邮箱SMTP服务(163邮箱为例)

image-20241012174410613 image-20241012174517010

创建报警媒介

image-20241012175058667

消息模板

image-20241012175804585 image-20241012175830133 image-20241012175902107
# 告警模板
主题:
监控告警: {EVENT.NAME}

消息:
主机: {HOST.NAME1}
时间: {EVENT.DATE} {EVENT.TIME}
级别: {TRIGGER.SEVERITY}
触发: {TRIGGER.NAME}
详情: {ITEM.NAME1}:{ITEM.KEY1}:{ITEM.VALUE1}
状态: {TRIGGER.STATUS}
项目:{TRIGGER.KEY1}
事件ID:{EVENT.ID}
# 恢复模板
主题:
告警恢复: {EVENT.DURATION}: {EVENT.NAME}

消息:
主机: {HOST.NAME1}
时间: {EVENT.DATE} {EVENT.TIME}
级别: {TRIGGER.SEVERITY}
触发: {TRIGGER.NAME}
详情: {ITEM.NAME1}:{ITEM.KEY1}:{ITEM.VALUE1}
状态: {TRIGGER.STATUS}

测试告警媒介

image-20241012180000296 image-20241012180128097 image-20241012180159420 image-20241012202650509

媒介绑定用户

image-20241012202851416 image-20241012203043675

告警媒介绑定动作

image-20241012203744483 image-20241012203653544 image-20241012204011870 image-20241012204124980

测试

停止agent端的nginx进行

systemctl stop nginx
image-20241012204951998
systemctl start nginx
image-20241012205119300 image-20241012205042881

Zabbix配置钉钉报警

创建钉钉机器人

查找本地IP

image-20241013154910455

在钉钉群聊中创建自定义机器人

image-20241013154607484 image-20241013154648411

添加报警脚本

vim /usr/lib/zabbix/alertscripts/dingding.py
#!/usr/bin/env python3
#coding:utf-8
#zabbix报警
import requests,json,sys,os,datetime
# 更换机器人webhook
webhook="https://oapi.dingtalk.com/robot/send?access_token=13b4395253b507cb6281c48d5677a0c05a5d9b4ad2fd4b4140adc49d5f5955e"
user=sys.argv[1]
text=sys.argv[3]
data={
    "msgtype": "text",
    "text": {
        "content": text
    },
    "at": {
        "atMobiles": [
            user
        ],
        "isAtAll": False
    }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):
    f=open("/var/log/zabbix/dingding.log","a+")
else:
    f=open("/var/log/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
    f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
    f.close()
else:
    f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "\n" + str(text))
    f.close()
chmod +x /usr/lib/zabbix/alertscripts/dingding.py
touch /var/log/zabbix/dingding.log
chown zabbix.zabbix /var/log/zabbix/dingding.log

安装python3环境

yum -y install phthon3 epel-release python-pip
pip3 install requests
image-20241013155914676

测试脚本

cd /usr/lib/zabbix/alertscripts
./dingding.py test  test  "钉钉"
image-20241013160430643

Zabbix创建告警媒介

image-20241013160839257

脚本参数

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

消息模板

image-20241013161327409
# 主题

告警问题: {EVENT.NAME}

# 消息:

主机: {HOST.NAME1}
时间: {EVENT.DATE} {EVENT.TIME}
级别: {TRIGGER.SEVERITY}
触发: {TRIGGER.NAME}
详情: {ITEM.NAME1}:{ITEM.KEY1}:{ITEM.VALUE1}
状态: {TRIGGER.STATUS}
项目: {TRIGGER.KEY1}
事件ID:{EVENT.ID}
image-20241013161607998
# 主题

告警恢复 {EVENT.DURATION}: {EVENT.NAME}

# 消息

主机: {HOST.NAME1}
时间: {EVENT.DATE} {EVENT.TIME}
级别: {TRIGGER.SEVERITY}
触发: {TRIGGER.NAME}
详情: {ITEM.NAME1}:{ITEM.KEY1}:{ITEM.VALUE1}
状态: {TRIGGER.STATUS}
项目: {TRIGGER.KEY1}
事件ID:{EVENT.ID}

测试告警媒介

image-20241013161711633 image-20241013161810765 image-20241013161846914

告警媒介绑定用户

image-20241013162207845

告警媒介绑定触发器动作

image-20241013162419941 image-20241013162548443 image-20241013162754879 image-20241013162944328 image-20241013163147193

测试

来到agent端停止nginx

systemctl stop nginx
image-20241013164509835 image-20241013164707796

Zabbix配置企业微信报警

企业微信依然采用机器人的方式

创建企业微信机器人

image-20241013164925434

image-20241013165058301

添加报警脚本

vim /usr/lib/zabbix/alertscripts/weixin.py
#!/usr/bin/env python3
#coding:utf-8
#zabbix报警
import requests,json,sys,os,datetime
# 更改机器人webhook
webhook="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=64c2858d-efab-4bba-acb0-41f0e034eb3"
user=sys.argv[1]
text=sys.argv[3]
data={
    "msgtype": "text",
    "text": {
        "content": text
    },
    "at": {
        "atMobiles": [
            user
        ],
        "isAtAll": False
    }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/weixin.log"):
    f=open("/var/log/zabbix/weixin.log","a+")
else:
    f=open("/var/log/zabbix/weixin.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
    f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
    f.close()
else:
    f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "\n" + str(text))
    f.close()
chmod +x /usr/lib/zabbix/alertscripts/weixin.py
touch /var/log/zabbix/weixin.log
chown zabbix.zabbix /var/log/zabbix/weixin.log

“+“发送成功”+”\n"+str(text))
f.close()
else:
f.write(“\n”+str(datetime.datetime.now()) + " " + str(user) + " " + “发送失败” + “\n” + str(text))
f.close()


```bash
chmod +x /usr/lib/zabbix/alertscripts/weixin.py
touch /var/log/zabbix/weixin.log
chown zabbix.zabbix /var/log/zabbix/weixin.log

之后的操作步骤与上面配置钉钉报警一样