天天看點

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 全景項目開發總結

繼續閱讀