歡迎光臨
每天分享高質量文章

【Zabbix】中小型企業Zabbix監控實戰之告警大全

轉載宣告:本文轉載自「數睿技術」

前言

本篇文章介紹目前常用的告警方式,以及對功能實現做講解。本篇文章中出現的程式碼片段可以回覆”監控指令碼”獲取完整程式碼。

   0x01 E-Mail 

郵件告警方式


郵件告警方式是Zabbix最常見的告警方式,是每個初學者必須掌握的告警方式。在這,筆者分享郵件告警方式花樣玩法——附帶資料圖


▲ 效果展示圖

▲ 功能實現思路

zabbix告警傳入item.ky引數,利用item.key獲取當前的效能圖 。最後構建郵件文字內容加入效能圖片。

▲ 效能圖

透過分析效能圖有以下發現:

http://127.0.0.1/zabbix/chart.php?period=864000& \
       stime=20180317191110&itemids;%5B0%5D=25464& \
       type=0&updateProfile;=1&profileIdx;=web.item.graph& \
       profileIdx2=25464&width;=1778&sid;=37a0a2403c5192c8& \
       screenid=&curtime;=1490613155473

period       # zabbix資料時間範圍
stime        # 開始時間
itemids[0]   # item.key
type         # 圖表型別
profiledx    # 項型別
width        # 圖表寬度
sid          # 使用者sid

必須的引數有:

"period"  : "3600"               # 一小時內的效能圖
"itemids[0]" : itemID            # item的id
"type" : "0"                     # 圖表型別
"profileIdx" : "web.item.graph"  # 項
"width"  : "700"                 # 寬度

仔細觀察這些引數,發現變化的只有item id 其他都是可以不變的,而item.ky是在告警的時候可以直接傳入的。


▲ Actions

告警動作裡的配置:

HOST.HOST1:{HOST.HOST1}|HOST.IP1:{HOST.IP1}|EVENT.DATE:{EVENT.DATE}|
EVENT.TIME:{EVENT.TIME}|
TRIGGER.SEVERITY:{TRIGGER.SEVERITY}|
TRIGGER.NAME:{TRIGGER.NAME}|
ITEM.KEY1:{ITEM.KEY1}|ITEM.NAME1:{ITEM.NAME1}|
ITEM.VALUE1:{ITEM.VALUE1}|ITEM.ID:{ITEM.ID}|TRIGGER.STATUS:{TRIGGER.STATUS}


▲ 指定item.key獲取效能圖功能實現

程式碼片段展示

import requests
myRequests = requests.Session()
def GetGraph(itemID,pName=None):

   try:
       """
       獲取效能圖,首先需要登入
       透過分析,可以直接Post/Get方式登入
       """

       loginUrl = "http://%s/zabbix/index.php" % HOST
       loginHeaders={            
       "Host":HOST,            
       "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
       }
       
       # 構建登入所需的資訊
       playLoad = {            
       "name":USER,            
       "password":PASSWD,            
       "autologin":"1",            
       "enter":"Sign in",
       }
       
       # 請求登入
       res = myRequests.post(loginUrl,essay-headers=loginHeaders,data=playLoad)
       """
       登入狀態後,在POST資料中加入itemid
       """

       testUrl = "http://%s/zabbix/chart.php" % HOST
       testUrlplayLoad = {            
           "period" :"3600",            
           "itemids[0]" : itemID,            
           "type" : "0",            
           "profileIdx" : "web.item.graph",            
           "width" : "700",
       }
       testGraph = myRequests.get(url=testUrl,params=testUrlplayLoad)
       
       # 傳回圖片原始碼,直接儲存到本地
       IMAGEPATH = os.path.join('/tmp', pName)
       f = open(IMAGEPATH,'wb')
       f.write(testGraph.content)
       f.close()        
       return pName    
       
   except Exception as e:        
       print e        
       return False


   finally:
       myRequests.close()

0x02 Phone Call

電話告警方式


現在有許多語音通知介面廠商,所以想要實現電話告警,騷一賊!(so easy)。很多小夥伴沒有部署有幾個原因:

Q : 增加成本/費用

A : 有這個想法,首先你得先瞭解介面廠商收費標準。正常請求沒有接聽是不需要收費的,也就是說:收到電話時掐掉電話是不需要收費的。

筆者介面廠商十塊錢餘額用了一年,這十塊錢還是新使用者註冊送的…hahahaha. 這種做法顯然對廠商十分不利,但是我有不接聽的理由:1) 政策限制,由於政策限制,現在無法長語音轉文字,通常是很有限字數,給的資訊十分有限。2) 轉換慢, 我們請求的時候是需要先把文字轉換成語音,接著再撥打電話將這段語音推送出去的。現在文字轉語音已經有限制,需要審核透過才能傳送。即使有廠商不用審核,這轉換過程也是非常慢的。 3) 收到響聲就已經處於備戰狀態。當你收到這個電話號碼打來時,意味著你已經拿起手機,知道有故障。那這個時候,你完全可以看郵件/微信上面顯示的告警內容。

Q : 大半夜收到電話

A : 電話告警只限最緊急的故障,平常一些普通級別的告警不建議使用電話通知方式,頻繁收到緊急嚴重的故障問題,那你考慮的不應該是告警了,而是這套系統本身。故障是客觀存在的,遇到故障一味更改告警閾值或告警方式,卻忽略最根本的問題,有問題在,才會有告警,不解決問題,這告警一直在。再者就是一個對工作態度的問題了。

▲ 功能實現思路


根據嚴重級別分類觸發電話告警指令碼,回覆”監控指令碼”獲取指令碼。


0x03 SMS

簡訊告警方式


    簡訊告警同樣採用介面廠商提供的API介面,收取費用標準一般是3-5分錢/次。適用於中等到嚴重級別的告警。

▲ 功能實現思路

    根據嚴重級別分類觸發簡訊告警指令碼,回覆”監控指令碼”獲取指令碼。


▲ 效果展示圖

0x04 Wechat

微信公眾號告警方式


    微信告警方式也作為常用的告警方式,需要申請微信公眾號。

▲ 功能實現思路:


    根據嚴重級別分類觸發微信告警指令碼,回覆”監控指令碼”獲取指令碼。


▲ 效果展示圖


 0x05 Other

其他告警方式

    一些其他的有趣告警,例如:QQ 、微訊號、RTX、釘釘等告警方式都需要透過自己寫指令碼去請求介面完成,這裡不做演示。QQ/微信都是透過分析網頁版去模擬請求,RTX與釘釘有自己的介面。

▲ Github上相關的專案

QQ    https://github.com/pandolia/qqbot
Wechat https://github.com/liuwons/wxBot
RTX  https://github.com/rainfiel/rtx
...

▲ 效果展示圖


RTX

總結

………………………………


各種告警方式對比:

 

#    文中如若出現錯誤,歡迎各位指出。

#    若有更好的解決方案,也非常期待能夠與您交流!


「獲取原始碼」

 回覆 ‘監控指令碼’ 

《Linux雲端計算及運維架構師高薪實戰班》2018年05月14日即將開課中,120天衝擊Linux運維年薪30萬,改變速約~~~~

*宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。

– END –


更多Linux好文請點選【閱讀原文】哦

↓↓↓

贊(0)

分享創造快樂