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

之后的操作步驟與上面配置釘釘報警一樣