譚理珂,張曉光
(廣東省能源集團天生橋一級水電開發有限責任公司水力發電廠,貴州 興義 562400)
Zabbix是一個基于web界面的提供對各種分布式信息系統監視以及網絡監視功能的企業級開源解決方案[1]。可適用于各類Linux、Free BSD、Windows(2000/2003/XP/Vista)、WindowsNT4.0、AIX、Tru64/OSF1、Windows sever、Open BSD、OSX等系統。分為Zabbix server和Zabbix agent配合,服務器端輪巡使用Zabbix agent插件,可以選擇主動接收Zabbix agent發送的監視包,或被動接收Zabbix agent發送的數據包。還可以配合SNMP協議收集交換機等設備監視數據包[2]。
由于Zabbix系統具有系統開源免費、安裝配置簡單、支持多種語言等優點,并且具有可收集監視數據廣泛,包括CPU負荷、內存使用情況、磁盤使用情況、網絡狀況等。可用于電力信息服務器的狀態監視及告警推送,本系統就是基于Zabbix進行設計。
電廠服務器巡檢一般為實體服務器巡檢+網絡監控巡檢相結合的巡檢方式,當巡視服務器存在告警信號時通常需要通過終端登陸服務器后臺查看告警信息。網絡監控巡檢需要逐個登陸服務器查看告警信息,費時費力還容易存在人工巡檢時遺漏現象。為達到快速獲取告警信息,以及降低人工成本,提出如下需求:
(1)告警信息及運行信息自動采集;
(2)告警信息及運行信息匯總并圖形化展示;
(3)實體服務器巡檢時能通過移動終端或web網頁及時查詢告警信息及運行信息;
(4)存在告警時能推送至運維人員。
基于以上需求,建立本系統以滿足廠站信息系統巡檢需求。
虛擬化服務器通過直接安裝Zabbix agent將實時告警信息推送至Zabbix服務器,AC控制器及交換機、路由器等網絡設備則通過ICMP/IPMI/SNMP等報文形式監測系統狀態及告警信息[3]。
將 存 儲 數 據 分 為actions、Trends、Hosts、History、Items、Events、Trigger等幾個數據表,設ID為主鍵,將其余所有外鍵通過主鍵ID關聯起來。其中actions中存儲了當觸發器動作時應該采取的動作;Hosts用于存儲監控主機中的hosts記錄;Items用于存儲監控主機中的Item設置[4]。
運維人員通過web訪問客戶端,可查詢的數據包括設備的歷史信息記錄、實時信息及狀態和服務器的信息及狀態等數據。可以選擇查詢主機的實時監控項數據,也可以選擇監控項數據查看所有主機當前監控項的數據對比。對查詢的數據和監控采集到的數據進行分類整理,生成對應的報表數據。
Zabbix系統自帶多種告警推送功能,常見的有郵箱告警、Jira告警、短信告警等。如需配置以上告警通知,直接通過Zabbix中調用告警通知的接口程序。但由于郵箱告警經常發生延遲告警的情況,并且考慮到運維人員不能隨時查看郵件信息。Jira告警需要登錄Jira界面才能接收到信息,也不能滿足簡單方便運維人員工作的要求。短信告警需要配置短信告警服務器購買短信費用,也存在告警信息過多或短信誤屏蔽等弊端。所以最好采用能實時將告警推送到即時通信類軟件中,本系統選擇通過企業微信來推送重要設備告警或嚴重告警,避免告警信息推送過多造成告警覆蓋。由于電廠運維人員工作性質,需要定期對設備進行巡檢工作,定期巡檢時則采用web查詢告警。
3.4.1 登陸web查詢告警
運維人員通過web登陸客戶端,在客戶端首頁可設置儀表板,顯示存在的告警信息以及主機Zabbix agent運行狀態。可查看主機實時狀態及實時告警信息。
從“監測-主機”中可查看所有設備在線情況、設備實時狀態、設備重要信息(如C盤容量、CPU閾值信息、內存使用信息等)。通過圖形界面可查看設備重要信息的趨勢圖及歷史信息,趨勢圖能直觀反映設備一段時間內的運行健康情況,判斷服務器性能是否符合應用系統需求,根據實際情況合理調配服務器性能,滿足應用系統需求的同時做到精簡配置。
3.4.2 企業微信告警推送
系統通過設定某些監控值達到設定閾值時進行告警推送至企業微信,企業微信可查看主機名稱、時間、IP、告警項目及詳情等信息數據。可自定義推送內容及告警項、閾值等信息[5]。
3.4.3 自定義告警信息
由于Zabbix系統告警及事件推送過多,不能將所有告警信息和事件都推送至企業微信內,所以必須在微信告警推送中自定義推送的內容,選擇性的發送重要告警或者重要設備事件,而不是將所有告警信息和事件統一推送,一般告警信息由每天定時web登陸查看。
由于Zabbix系統不自帶企業微信告警推送模塊,本系統通過自定義Python腳本進行告警推送。通過腳本將Zabbix采集的告警信息,由群聊機器人發送至企業微信群中。可以自定義發送告警的嚴重程度,確保維護人員能夠看到重要設備告警信息。當主機出現告警后,則發送至企業微信群內,并用腳本生成發送日志,即可查看發送成功率。
在Zabbix后臺配置動作,發生對應事件源后觸發觸發器,在動作選項欄內點擊“創建動作 ”填寫對應的信息;在動作頁面填寫對應的信息,本文以服務器設備內存使用率超過9成為例,設定需要同時符合以下條件才觸發觸發器。
A and B
A:主機群組=Windows servers;
B:觸發器=Windows servers模板內的物理內存使用率在連續的5 min等于或大于90%。
滿足條件后觸發觸發器,在操作中作出對應的動作,設定操作步驟多久執行一次、操作標題及消息內容。操作類型中選擇發送消息。并對應的配置恢復操作時發送復歸消息。消息格式需要采用Zabbix使用宏才能發送消息。
問題:{EVENT.NAME}
告警信息:{TRIGGER.NAME}
告警地址:{HOST.NAME}
監控項目:{ITEM.NAME}
監控取值:{EVENT.VALUE}
告警嚴重性:{EVENT.SEVERITY}
當前狀態:{EVENT.STATUS}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
告警信息:{TRIGGER. NAME}
告警地址:{HOST.NAME}
監控項目:{ITEM.NAME}
監控取值:{EVENT.RECOVERY.VALUE}
告警嚴重性:{EVENT.SEVERITY}
當前狀態:{EVENT.RECOVERY.STATUS}
告警時間:{EVENT.DATE} {EVENT.TIME}
恢復時間:{EVENT.RECOVERY.TIME}
持續時間:{EVENT.AGE}
事件ID:{EVENT.RECOVERY.ID}[6]
在Python腳本中按照企業微信推送格式編寫推送腳本,即可將告警信息推送至企業微信中。
圖1為基于Zabbix的電力信息服務器告警及巡檢一體系統的架構圖,在廠站虛擬化服務器系統中新建Zabbix服務器,采用B/S結構,巡檢人員通過瀏覽器查看服務器實時狀態、企業微信等第三方APP接收服務器實時告警。對實體服務器、交換機等設備進行巡檢時,直接掃描服務器設備標識中二維碼,通過內部網絡查看實時狀態及實時告警信息。
2.積壓物資責任劃分不明確。一直以來物資積壓的主體由物資供應部門負責,計劃提報部門、審核部門、設計部門等都不承擔積壓的責任,而物資積壓的源頭卻是來自于這些部門,因為積壓考核與計劃提報脫鉤使得計劃申報不準確得不到約束,導致需求計劃提報隨意性較大。供應部門為了防止及處理積壓采取過很多的手段和方法,如制定最低儲備定額、廠家回購、利庫代用、ABC庫存管理,有一定的效果,但無法從根本上減少物資的積壓。而且大部分方法都是事后處理,工作的重點放在了處理積壓上,年年處理年年增加,無法從根本上解決積壓的形成。

圖2 基于Zabbix的電力信息服務器告警及巡檢一體系統的架構圖
將實體主機Zabbix地址生成二維碼,同設備標簽張貼于實體主機上。當告警產生或設備巡檢需要查看服務器信息時,可使用移動終端掃描二維碼,快速查詢實體主機服務器實時告警及實時信息。
運維人員巡檢時采用實體服務器巡檢結合Zabbix二維碼查詢服務器狀態信息,通過企業微信告警信息推送實時接收服務器告警。將告警信息與巡檢系統集合為一體,提高運維人員管理各個分散系統的工作效率,面對突發情況更能從容的面對和處理。
目前基于Zabbix的電力信息服務器告警及巡檢一體系統內已接入主機數量91臺,監控項數量26 226項,觸發器數量13 007項,其中觸發器故障數為46項,故障率為0.3%。嚴重告警推送18項,因嚴重告警推送至運維人員,得到及時處理告警項,避免了事故進一步發展,保障了電廠內信息服務器的穩定運行,取得了較為理想的效果。
本文系統運行穩定,故障推送及時,系統投運使用前通過MyEclipse軟件平臺進行采集時間及告警準確率測試,測試結果見表1。

表1 采集時間及準確率測試
分析表1中的數據可得,數據量在3 000 b內,采集時間均能實現1 s以內,平均采集時間僅為0.63 s,且平均準確率為97.97%。系統采集時間、運算性能及告警準確率都能滿足現有電廠服務器需求。
本文利用Zabbix開源系統,針對電廠信息系統管理系統進行設計,實現對電廠內部服務器、交換機、網絡、應用程序等分散系統的統一管理。設計了基于Zabbix的電力信息服務器告警及巡檢一體化系統,對告警查詢、告警推送、設備巡檢、后臺維護等流程進行優化,使得運維人員能迅速且準確地發現故障、確定故障原因從而解決故障,提高了工作效率,進一步提高了電廠系統運行的可靠性。