摘要:擁有活躍的社區(qū),在上獲得的數(shù)超過了萬,符合網(wǎng)易云的選擇。當然,也有一些不足,比如不能用于日志監(jiān)控分布式追蹤等范圍,所以網(wǎng)易云也做了很多設(shè)計和優(yōu)化。
分享網(wǎng)易云輕舟微服務(wù)選擇基于 Prometheus 開發(fā)微服務(wù)監(jiān)控系統(tǒng)的考量:
開源
云原生
與微服務(wù)監(jiān)控需求的匹配度很高
開源
Prometheus是CNCF(云原生計算基金會)旗下成熟的開源項目,而開源技術(shù)棧是網(wǎng)易云堅定不移的選擇,不僅因為選擇主流開源項目可以站在巨人的肩膀上創(chuàng)新,規(guī)避重復造輪子的浪費,更因為開源開放讓客戶無需擔心廠商鎖定。Prometheus擁有活躍的社區(qū),在GitHub 上獲得的 star 數(shù)超過了 2 萬,符合網(wǎng)易云的選擇。
云原生
作為CNCF組織第二個畢業(yè)的開源項目,Prometheus與它的“師兄”Kubernetes都自帶云原生的光環(huán),天然能夠友好協(xié)作,而網(wǎng)易云輕舟微服務(wù)另一個重要組件——容器服務(wù)正是基于開源Kubernetes深度定制優(yōu)化的(當然輕舟微服務(wù)的服務(wù)治理設(shè)計是基礎(chǔ)設(shè)施無關(guān)的,同時支持物理機、VM和容器)。
目前,輕舟微服務(wù)監(jiān)控系統(tǒng)所有組件及配置均實現(xiàn)容器化并由 Kubernetes 編排,理論上,在任意 Kubernetes 集群里都能夠一鍵部署,系統(tǒng)需要變更時,僅需修改相關(guān)編排文件,即可完成改變。
與微服務(wù)監(jiān)控需求的匹配度很高
微服務(wù)監(jiān)控有四大難點:
配置難:監(jiān)控對象動態(tài)可變,無法進行預先配置;
融合難:監(jiān)控范圍非常繁雜,各類監(jiān)控難以互相融合;
排查難:微服務(wù)實例間的調(diào)用關(guān)系非常復雜,故障排查會很困難;
建模難:微服務(wù)架構(gòu)仍在快速發(fā)展,難以抽象出穩(wěn)定的通用監(jiān)控模型。
Prometheus 有五大優(yōu)勢:
靈活的數(shù)據(jù)模型:在 Prometheus 里,監(jiān)控數(shù)據(jù)是由值、時間戳和標簽表組成的,其中監(jiān)控數(shù)據(jù)的源信息是完全記錄在標簽表里的;同時 Prometheus 支持在監(jiān)控數(shù)據(jù)采集階段對監(jiān)控數(shù)據(jù)的標簽表進行修改,這使其具備強大的擴展能力;
強大的查詢能力:Prometheus 提供有數(shù)據(jù)查詢語言 PromQL。從表現(xiàn)上來看,PromQL 提供了大量的數(shù)據(jù)計算函數(shù),大部分情況下用戶都可以直接通過 PromQL 從 Prometheus 里查詢到需要的聚合數(shù)據(jù);
健全的生態(tài):Prometheus 能夠直接對常見操作系統(tǒng)、中間件、數(shù)據(jù)庫、硬件及編程語言進行監(jiān)控;同時社區(qū)提供有 Java/Golang/Ruby 語言客戶端 SDK,用戶能夠快速實現(xiàn)自定義監(jiān)控項及監(jiān)控邏輯;
良好的性能:Prometheus 提供了 PromBench 基準測試,從最新測試結(jié)果來看,在硬件資源滿足的情況下,Prometheus 單實例在每秒采集 10萬條監(jiān)控數(shù)據(jù)的情況下,在數(shù)據(jù)處理和查詢方面依然有著不錯的性能表現(xiàn);
更契合的架構(gòu):采用推模型的監(jiān)控系統(tǒng),客戶端需要負責在服務(wù)端上進行注冊及監(jiān)控數(shù)據(jù)推送;而在 Prometheus 采用的拉模型架構(gòu)里,具體的數(shù)據(jù)拉取行為是完全由服務(wù)端來決定的。服務(wù)端是可以基于某種服務(wù)發(fā)現(xiàn)機制來自動發(fā)現(xiàn)監(jiān)控對象,多個服務(wù)端之間能夠通過集群機制來實現(xiàn)數(shù)據(jù)分片。推模型想要實現(xiàn)相同的功能,通常需要客戶端進行配合,這在微服務(wù)架構(gòu)里是比較困難的。
當然,Prometheus 也有一些不足,比如不能用于日志監(jiān)控、分布式追蹤等范圍,所以網(wǎng)易云也做了很多設(shè)計和優(yōu)化。
文章來源: 網(wǎng)易云社區(qū)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/25408.html
摘要:一概述意為,即使用來監(jiān)控容器的插件或者模塊,既然有專業(yè)的等容器監(jiān)控方案,為什么還要用傳統(tǒng)的呢在剛出現(xiàn)時,還沒有專業(yè)的容器監(jiān)控方案公司已有的成熟實踐,想直接集成到中雖然不太優(yōu)雅使用來監(jiān)控有幾種方案,比如自己寫,利用的獲取信息,暴露接口給采集使 一.概述 Dockbix意為docker+zabbix,即使用zabbix來監(jiān)控docker容器的插件或者模塊,既然有專業(yè)的cadvisor、pr...
摘要:一概述意為,即使用來監(jiān)控容器的插件或者模塊,既然有專業(yè)的等容器監(jiān)控方案,為什么還要用傳統(tǒng)的呢在剛出現(xiàn)時,還沒有專業(yè)的容器監(jiān)控方案公司已有的成熟實踐,想直接集成到中雖然不太優(yōu)雅使用來監(jiān)控有幾種方案,比如自己寫,利用的獲取信息,暴露接口給采集使 一.概述 Dockbix意為docker+zabbix,即使用zabbix來監(jiān)控docker容器的插件或者模塊,既然有專業(yè)的cadvisor、pr...
摘要:一概述意為,即使用來監(jiān)控容器的插件或者模塊,既然有專業(yè)的等容器監(jiān)控方案,為什么還要用傳統(tǒng)的呢在剛出現(xiàn)時,還沒有專業(yè)的容器監(jiān)控方案公司已有的成熟實踐,想直接集成到中雖然不太優(yōu)雅使用來監(jiān)控有幾種方案,比如自己寫,利用的獲取信息,暴露接口給采集使 一.概述 Dockbix意為docker+zabbix,即使用zabbix來監(jiān)控docker容器的插件或者模塊,既然有專業(yè)的cadvisor、pr...
閱讀 910·2019-08-30 15:54
閱讀 3391·2019-08-29 15:33
閱讀 2764·2019-08-29 13:48
閱讀 1371·2019-08-26 18:26
閱讀 3384·2019-08-26 13:55
閱讀 1568·2019-08-26 10:45
閱讀 1236·2019-08-26 10:19
閱讀 359·2019-08-26 10:16