prometheus比zabbix好在哪點?


分享網易雲輕舟微服務選擇基於 Prometheus 開發微服務監控系統的考量:


  1. 開源

  2. 雲原生

  3. 與微服務監控需求的匹配度很高


開源


Prometheus是CNCF(雲原生計算基金會)旗下成熟的開源項目,而開源技術棧是網易雲堅定不移的選擇,不僅因為選擇主流開源項目可以站在巨人的肩膀上創新,規避重復造輪子的浪費,更因為開源開放讓客戶無需擔心廠商鎖定。Prometheus擁有活躍的社區,在GitHub 上獲得的 star 數超過了 2 萬,符合網易雲的選擇。


雲原生


作為CNCF組織第二個畢業的開源項目,Prometheus與它的“師兄”Kubernetes都自帶雲原生的光環,天然能夠友好協作,而網易雲輕舟微服務另一個重要組件——容器服務正是基於開源Kubernetes深度定制優化的(當然輕舟微服務的服務治理設計是基礎設施無關的,同時支持物理機、VM和容器)。


目前,輕舟微服務監控系統所有組件及配置均實現容器化並由 Kubernetes 編排,理論上,在任意 Kubernetes 集群里都能夠一鍵部署,系統需要變更時,僅需修改相關編排文件,即可完成改變。


與微服務監控需求的匹配度很高


微服務監控有四大難點:


1. 配置難:監控對象動態可變,無法進行預先配置; 
2. 融合難:監控范圍非常繁雜,各類監控難以互相融合; 
3. 排查難:微服務實例間的調用關系非常復雜,故障排查會很困難; 
4. 建模難:微服務架構仍在快速發展,難以抽象出穩定的通用監控模型。


Prometheus 有五大優勢:


  1. 靈活的數據模型:在 Prometheus 里,監控數據是由值、時間戳和標簽表組成的,其中監控數據的源信息是完全記錄在標簽表里的;同時 Prometheus 支持在監控數據采集階段對監控數據的標簽表進行修改,這使其具備強大的擴展能力;

  2. 強大的查詢能力:Prometheus 提供有數據查詢語言 PromQL。從表現上來看,PromQL 提供了大量的數據計算函數,大部分情況下用戶都可以直接通過 PromQL 從 Prometheus 里查詢到需要的聚合數據;

  3. 健全的生態:Prometheus 能夠直接對常見操作系統、中間件、數據庫、硬件及編程語言進行監控;同時社區提供有 Java/Golang/Ruby 語言客戶端 SDK,用戶能夠快速實現自定義監控項及監控邏輯;

  4. 良好的性能:Prometheus 提供了 PromBench 基准測試,從最新測試結果來看,在硬件資源滿足的情況下,Prometheus 單實例在每秒采集 10萬條監控數據的情況下,在數據處理和查詢方面依然有着不錯的性能表現;

  5. 更契合的架構:采用推模型的監控系統,客戶端需要負責在服務端上進行注冊及監控數據推送;而在 Prometheus 采用的拉模型架構里,具體的數據拉取行為是完全由服務端來決定的。服務端是可以基於某種服務發現機制來自動發現監控對象,多個服務端之間能夠通過集群機制來實現數據分片。推模型想要實現相同的功能,通常需要客戶端進行配合,這在微服務架構里是比較困難的。


當然,Prometheus 也有一些不足,比如不能用於日志監控、分布式追蹤等范圍,所以網易雲也做了很多設計和優化。


相關文章:
【推薦】 ThreeJs 3D 全景項目開發總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM