python實現對於告警規則的判斷思路

2022-06-12 19:45:10 字數 1070 閱讀 8380

監控乙個後台服務各個url的響應時間,需要在mysql資料庫的一張表中設計乙個字段需要包含且不僅限於以下一種規則(1. 大於 2. 小於 3. 大於等於 4. 小於等於),表結構大概是這樣的

每個介面有不同的響應時間範圍,超出這個範圍就說明這個介面異常了,我們需要定義這個規則,並且能夠讓**通過規則進行通知,剛開始的時候規則為 ">100,<200" 這種格式的,採用python中eval()這個方法,這樣雖然勉強可以實現,但是eval不是很安全,所以放棄eval,經過研究測試,發現了另乙個方法,就是採用python自帶的getattr及operator

python 3+

import operator

def check_status(monitor_data: int, data: dict) -> list:

try:

data, result_list = data,

for k, v in data.items():

f = getattr(operator, k)

return result_list

except exception:

import traceback

print(traceback.format_exc())

check_status(1001, )

這段**用到了內建模組operator及getattr內建方法

getattr()函式用於返回乙個物件屬性值

getattr(object, name[, default])

我們可以將規則設定為,字典中的key正好對應operator中gt,lt,ge,le四個方法,用getattr獲取operator物件中的gt,lt,ge,le這四個方法進行判斷,根據返回值,得到乙個布林值進行判斷

告警相關性的規則

1 相同事件相關法 相同事件指來自同一告警源 本系統中限定為同一ip位址 的相同型別的告警。其相關性處理方法即是將相同事件壓縮為一條告警,並累計告警次數,在最後的告警客戶端顯示出來。2 成對 相反事件相關法 相反事件指來自同一告警源的兩個告警資訊,乙個告警說明該位置上有某種型別的故障,另乙個告警說明...

Python指令碼實現zabbix5 0告警收斂

注意總結 在多個運維技術分享中都會談及到 告警風暴 這個詞,即在短時間內批量傳送告警資訊,為了避免重複告警以及過濾掉無效告警,免去運維人員檢視重複告警內容的煩惱。於是想辦法對告警資訊進行收斂。1 將產生的告警事件對應的triggerid 對應乙個觸發器 actionid 對應告警接收組 hostip...

Python實現對於xml檔案中資料的增刪改查

coding utf 8 import ete.cryptolib import ete.initete from xml.etree import elementtree as et 1 載入檔案 tree et.parse carddata.xml 2 獲得根結點 root tree.getro...