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