自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用企業(yè)微信發(fā)送Zabbix告警信息

運(yùn)維 系統(tǒng)運(yùn)維
企業(yè)微信在很多公司都有使用,得益于它強(qiáng)大的消息推送API,我們可以自己實(shí)現(xiàn)使用企業(yè)微信作為告警媒介,本文就從零開始介紹如何使用企業(yè)微信發(fā)送Zabbix告警。

Zabbix作為一款傳統(tǒng)的監(jiān)控軟件一直保持穩(wěn)定的迭代,到目前為止穩(wěn)定版已經(jīng)更新到5.4了。Zabbix內(nèi)置非常多現(xiàn)成的監(jiān)控項(xiàng),從操作系統(tǒng)到常用的軟件Redis、MySQL等,幾乎都可以找到對(duì)應(yīng)的監(jiān)控項(xiàng),差不多可以做到零配置就實(shí)現(xiàn)操作系統(tǒng)三大件:CPU、硬盤、內(nèi)存的監(jiān)控。此外Linux和Windows,Zabbix都支持。

Zabbix內(nèi)置豐富的告警媒介,但很遺憾沒(méi)有內(nèi)置企業(yè)微信告警。企業(yè)微信在很多公司都有使用,得益于它強(qiáng)大的消息推送API,我們可以自己實(shí)現(xiàn)使用企業(yè)微信作為告警媒介,本文就從零開始介紹如何使用企業(yè)微信發(fā)送Zabbix告警。

一、企業(yè)微信配置相關(guān)

瀏覽器登錄企業(yè)微信管理后臺(tái),在“應(yīng)用管理”中創(chuàng)建自建應(yīng)用,如下圖:

自建應(yīng)用

得到三個(gè)重要的參數(shù):“AgentId”、“Secret”和“企業(yè)ID”,前兩個(gè)參數(shù)在自建的應(yīng)用里面可以看到,“企業(yè)ID”需要到“我的企業(yè)”->“企業(yè)信息”底部查看。

這里有一點(diǎn)要注意,在自建應(yīng)用中有個(gè)“可見(jiàn)范圍”需要填寫正確,如下面公司架構(gòu),

通訊錄

如果接受告警的人在dev組,那么要將“自建應(yīng)用”中的“可見(jiàn)范圍”設(shè)為“dev”或者直接設(shè)置為“念一顧問(wèn)”,如果設(shè)置錯(cuò)了,要接受告警的人是收不到告警信息的,因?yàn)樗床坏竭@個(gè)自建應(yīng)用。

可見(jiàn)范圍配置

二,告警通道腳本編寫

Zabbix的告警媒介類型可以選擇腳本,其由系統(tǒng)管理員提供,這就是zabbix強(qiáng)大的地方。依賴自定義腳本POST告警消息到企業(yè)微信的API,具體可以查看企業(yè)微信相關(guān)文檔,這里直接上腳本(支持發(fā)送markdown格式的內(nèi)容):

#!/bin/python3.7
import requests
import json
import sys
import os
from dotenv import load_dotenv
def get_token(corpid, secret):
url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
data = {
"corpid": corpid,
"corpsecret": secret
}
response = requests.get(url=url, params=data)
if response.json()['errcode'] != 0:
return False
else:
token = response.json()["access_token"]
# 保存token,方便下次使用
with open('/usr/lib/zabbix/alertscripts/.zabbix_wechat_config.json', 'w') as file:
file.write(response.text)
return token
def send_message(user, subject, content, partyid="", agentid=1000002):
load_dotenv()
try:
with open('/usr/lib/zabbix/alertscripts/.zabbix_wechat_config.json', 'r') as file:
token = json.load(file)["access_token"]
except:
token = get_token(os.environ.get('corpid'),
os.environ.get('secret'))
url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % token
data = {
"touser": user,
#"totag": Tagid,
"toparty": partyid,
"msgtype": "markdown",
"agentid": agentid,
"markdown": {
"content": subject + '\n' + content
},
"safe": "0"
}
#企業(yè)微信的markdown格式的內(nèi)容必須使用utf-8編碼
data = json.dumps(data, ensure_ascii=False).encode(encoding="utf-8")
response = requests.post(url=url, data=data)

# 如果發(fā)送失敗,重試四次
n = 0
while response.json()['errcode'] != 0 and n < 4:
n += 1
token = get_token(os.environ.get('corpid'), os.environ.get('secret'))
if token:
url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % token
data = json.dumps(data, ensure_ascii=False).encode(encoding="utf-8")
response = requests.post(url=url, data=data)
print(response.json())
return response.json()
if __name__ == "__main__":
user = sys.argv[1]
subject = str(sys.argv[2])
content = str(sys.argv[3])
status = send_message(user, subject, content)
print(status)

運(yùn)行腳本的三個(gè)參數(shù)通過(guò)zabbix傳入。(關(guān)于模塊dotenv的用法可參考Python開發(fā)中如何正確處理憑據(jù))

查看zabbix server的配置文件:

/etc/zabbix/zabbix_server.conf,查找參數(shù)“AlertScriptsPath”的值,將腳本放到其指定的目錄中。(本文使用的操作系統(tǒng)是CentOS 7)

三,Zabbix配置

作者使用的zabbix版本為5.0,其他版本可能會(huì)有差異。有三個(gè)地方需要配置,

“管理”->“報(bào)警媒介類型”增加告警類型,如下:

告警媒介配置

其中“腳本參數(shù)”與上面python腳本接收參數(shù)對(duì)應(yīng)。

在“管理”->“用戶”中為zabbix用戶配置“報(bào)警媒介”,可以配置多個(gè),這里僅配置“企業(yè)微信”告警媒介,

用戶配置告警媒介

“配置”->“動(dòng)作”添加動(dòng)作并指定對(duì)應(yīng)的操作,如下:

動(dòng)作

配置動(dòng)作實(shí)際的操作

上面兩幅圖用一句話描述:當(dāng)觸發(fā)器的級(jí)別是嚴(yán)重級(jí)別時(shí),通過(guò)自定義腳本發(fā)送告警給zabbix管理員用戶組。選擇“Custom message”,其中“主題”的內(nèi)容為

{TRIGGER.STATUS}: {TRIGGER.NAME}

消息的內(nèi)容為:

<font color="warning">告警等級(jí):嚴(yán)重</font>
告警主機(jī):{HOSTNAME1}
告警時(shí)間:{EVENT.DATE} {EVENT.TIME}
告警信息:{TRIGGER.NAME}
告警項(xiàng)目:{TRIGGER.KEY1}
問(wèn)題詳情:{ITEM.NAME}:{ITEM.VALUE}
當(dāng)前狀態(tài):{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

這里只定義了一個(gè)步驟,如果需要加入多個(gè)步驟,點(diǎn)擊“添加”即可,比如要實(shí)現(xiàn)告警先給普通員工發(fā)送,如果一個(gè)小時(shí)內(nèi)沒(méi)有確認(rèn),向更高一級(jí)的管理層發(fā)送就在這里實(shí)現(xiàn)?!盎謴?fù)操作”和“更新操作”類似,不再贅述。

下圖是實(shí)際告警示例,因?yàn)楦婢瘍?nèi)容支持markdown格式,將告警級(jí)別著重展示,引起收到告警的相關(guān)負(fù)責(zé)人重視。

實(shí)際告警

總結(jié)

文章對(duì)Zabbix使用企業(yè)微信作為告警媒介原理進(jìn)行了介紹。其他類似的應(yīng)用,實(shí)現(xiàn)原理也是相通的,希望這篇文章能幫到正在努力的你。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2021-11-06 19:43:34

Python微信服務(wù)器

2014-09-25 13:40:52

微信企業(yè)號(hào)圖解

2014-09-24 11:32:21

微信企業(yè)號(hào)開發(fā)

2022-09-19 08:32:46

AOP系統(tǒng)機(jī)器人

2023-11-24 16:57:53

2022-07-28 08:45:40

Web應(yīng)用監(jiān)控與告警

2014-09-28 22:22:25

微信企業(yè)號(hào)

2013-04-09 23:02:34

微信公眾平臺(tái)圖文消息

2015-08-07 15:39:26

仿微信語(yǔ)音界面源碼

2013-01-30 13:46:09

微信企業(yè)移動(dòng)信息化

2014-11-14 09:04:33

云智慧

2014-10-21 15:42:30

微信企業(yè)號(hào)企業(yè)移動(dòng)平臺(tái)

2014-09-24 13:11:34

信企業(yè)號(hào)

2014-09-25 15:27:28

微信企業(yè)號(hào)注冊(cè)流程

2013-04-12 01:51:08

微信公眾平臺(tái)接口開發(fā)

2024-12-19 10:00:00

Python發(fā)送消息編程

2014-09-28 22:34:09

微信企業(yè)號(hào)

2022-01-11 21:06:45

微信企業(yè)微信移動(dòng)應(yīng)用

2020-03-16 13:41:09

企業(yè)微信騰訊張小龍

2014-09-25 15:48:51

微信企業(yè)號(hào)申請(qǐng)認(rèn)證
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)