小米開源監控Open-Falcon收錄汽車之家貢獻的Win版Agent
本文介紹了汽車之家為小米開源的Open-Falcon監控系統貢獻的Windows監控元件。
前言
小米Open-Falcon監控系統自2015年開源以來,以其豐富的外掛,靈活的架構,良好的效能表現,高效的告警策略等特性,贏得的眾多網際網路公司的青睞。
汽車之家也一直關注著Open-Falcon的發展,系統平臺團隊透過對Open-Falcon的二次開發,打造了汽車之家的監控系統。這套系統負責了汽車之家所有伺服器基礎監控,URL監控,日誌監控等重要功能。作為公司基礎系統,穩定高效的支撐了近萬臺伺服器的監控,告警工作。
設計
初衷
汽車之家除Linux伺服器外,還有很多業務執行在Windows機器上,所以對Windows伺服器基礎監控,IIS,SQL Server等Windows服務的監控也非常重要。但是Open-Falcon未全面覆蓋Windows系統,沒有官方的Windows Agent去做資料的採集。社群中開源的指令碼都是透過計劃任務的方式採集。而我們希望的是Open-Falcon在Windows下的Agent採集的邏輯和架構與Linux下保持一致,方便監控平臺管理,控制Agent。
目標
我們的設計目標有以下幾點:
1. 可以服務的形式執行在Windows伺服器上,不用配置計劃任務
2. 支援採集Windows伺服器基礎監控項
3. 支援採集IIS,SQL Server的監控項採集
4. 提供和Linux Agent一樣的push資料介面,支援第三方push資料
5. 與Linux Agent其他功能保持一致
基於以上幾點我們自研了之家的Open-Falcon Windows Agent。
實現
Windows-Agent的程式碼架構如上圖所示。程式啟動後,會啟動5個執行緒。每個執行緒都會按照配置好的時間間隔定時採集所需資訊。
-
basic thread基礎監控項採集執行緒,透過psutil這個跨平臺的庫,可以輕鬆獲取作業系統程式和系統利用率等資訊。
-
IIS thread IIS資料採集執行緒,透過winstats這個庫,定時的採集IIS站點的連線數,IIS站點的cpu使用率等資料。
-
SQL Server thread SQL server資料採集執行緒,同樣透過winstats, 獲取到SQLServer記憶體和I/O相關資料。
-
status thread Agent自身狀態執行緒。這一點和Linux Agent的功能一樣, 定時向HearbeatServer彙報自己Agent的狀態。這樣在我們的監控平臺上就可以向管理Linux伺服器一樣的管理這些Windows伺服器。
-
HTTP HTTP執行緒會開啟一個HTTP服務提供push介面,和LinuxAgent一樣,使用者可以選擇透過該push介面,把自定義的資料push給Agent。方便第三方資料的接入。
Open-Falcon Linux下的Agent啟動之後,會和transfer元件建立長連線,透過Transfer.Update這個RPC呼叫,把Agent採集到的監控資料傳輸給transfer,後面的事情就全部交由Open-Falcon處理。Agent自身狀態的彙報也同樣方式,透過Agent.ReportStatus這個RPC呼叫和Hearbeat Server互動,上報自身狀態。在Windows下,我們要採用同樣的方式和transfer元件,Hearbeat Server元件進行資料的傳輸,不同的是,Linux下的Agent是golang實現,可以方便的使用golang原生的JSONRpc處理RPC呼叫,而我們Windows下的Agent使用python開發,所以我們自己實現了jsonrpc的client,來模擬Linux下的處理。保證我們的Agent行為和Linux下的Agent一致。
Windows Agent透過pypiwin32這個庫,把python程式碼變成了服務安裝到了Windows伺服器上。這個庫怎麼用呢?Demo如下:
首先要繼承win32serviceutil.ServiceFramework這個類,然後分別實現構造方法,停止執行方法SvcStop, 以及啟動方法SvcStop。最後在主方法中呼叫win32serviceutil.HandleCommandLine(AppServerSvc)。就可以透過python agent.py install安裝服務,python agent.py start啟動服務,有興趣的同學不妨可以自己試試。
4 配置檔案
Windows Agent的配置檔案也和Linux Agent一下保持一致,如果你熟悉了Linux下的配置,甚至可以直接copy到Windows伺服器下。具體的配置解釋如下:
安裝
實戰
目前Windows Agent執行在汽車之家上千臺Windows伺服器下2年多時間,始終保持了穩定,可靠的資料採集,同時對資源的消耗也非常小。
下圖為Agent作為服務執行
下圖為Agent程式的消耗,由於我們內部的Agent監控項要比開源的版本多,所以記憶體佔用大概有30M左右,開源版本的記憶體佔用會小於這個數值
下圖為採集到的IIS站點的cpu使用率監控資料
下圖為SQL Server採集監控資料
開源
在公司的支援下,我們將程式碼以Apache許可證開源。目前WindowsAgent元件已經被Open-Falcon社群收錄,為更多Windows使用者提供支援。
相關文件以及程式碼參見:
後續計劃
我們計劃下一步為Windows Agent加入更多的特性。例如對外掛的支援,新增更豐富的監控項等。同時,汽車之家對Open-Falcon還做了很多的二次開發,比如告警的升級機制,多種維度的告警收斂,URL監控,網路監控等,並且已經應用到生產環境當中。以後我們也會把通用的元件開源,回饋社群。
感謝汽車之家技術團隊對小米開源的Open-Falcon監控系統的支援和貢獻,也歡迎更多的Open-Falcon使用者加入我們。
本文聯合汽車之家系統平臺部發布,首發於公眾號“之家技術” 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559359/viewspace-2220536/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【監控】open-falcon v0.2 部署、小米開源監控部署
- Sentry 開發者貢獻指南 - SDK 開發(效能監控)
- 為開源社群做貢獻
- 為什麼要貢獻開源
- 零起點的開源社群貢獻指南
- 如何給開源專案做貢獻
- 如何為開源軟體做出貢獻
- 如何向 Mozilla 開源社群做貢獻
- 如何向開源軟體貢獻自己的力量
- 開源貢獻者翻譯組 LCTT 九歲啦
- Sentry 開發者貢獻指南 - SDK 開發(效能監控:Sentry SDK API 演進)API
- 個人/團隊/公司開源,Joyqi 談貢獻開源的「不同姿勢」
- 貢獻Dubbo生態,阿里開源Nacos專案阿里
- 【開源社】您會為開源專案貢獻程式碼嗎?
- 開源一個監控資料採集Agent:OpenFalcon-SuitAgentUI
- TDengine 上榜 BenchCouncil 全球第一個開源貢獻榜
- 從 SDWebImage 談如何為開源軟體做貢獻Web
- 2017年12月開源貢獻報告
- 從 re:Invent 看 AWS 對開源和社群的新貢獻
- 蘋果的貢獻蘋果
- 5 個提升你開源專案貢獻者基數的方法
- Premium Friday 貢獻一下您喜歡的開源。REM
- 運維架構服務監控Open-Falcon運維架構
- 開源監控利器grafanaGrafana
- CNCF:中國已成為全球第二大開源貢獻國 CNCF專案的程式碼貢獻接近100萬
- open-falcon ---客戶機agent操作
- 參與開源之夏 x OpenTiny 跨端跨框架 UI 元件庫貢獻,可以贏取獎金?!這份《OpenTiny 開源貢獻指南》請收好?!跨端框架UI元件
- 為何《貢獻者許可協議》不利於開源社群?協議
- 以Dubbo為例,聊聊如何為開源專案做貢獻
- 靈析團隊 package 陸續開源,向社群貢獻力量Package
- 使用滴滴雲快速搭建 Open-Falcon 監控平臺
- go 服務監控指標(metric)上報open-falconGo指標
- Zabbix Agent active主動模式監控模式
- 開源系統監控工具Nagios、Zabbix和Open-Falcon的功能特性彙總及優缺點比較iOS
- 開源監控利器Prometheus初探Prometheus
- 邀請學生加入 Google Summer of Code,為開源做出貢獻!Go
- 如何向開源專案做貢獻(以 incubator-dubbo 為例)BAT
- 訓練營 | 如何成為一名開源社群貢獻者?