十大Kubernetes開源監(jiān)控工具
譯文【51CTO.com快譯】如今,Kubernetes在GitHub上已經(jīng)擁有了超過58000萬顆點(diǎn)贊之星,而且它在全球范圍內(nèi)有著2200多名在冊的貢獻(xiàn)者。可以說,它已然成為了容器編排方面的實(shí)際標(biāo)準(zhǔn)。不過,在解決并運(yùn)行分布式微服務(wù)應(yīng)用的過程中,它時(shí)常也會面臨一些嚴(yán)峻的挑戰(zhàn)。其中,廣為開發(fā)與運(yùn)維人員所提及的挑戰(zhàn)之一便是:對于Kubernetes的監(jiān)控問題。面對復(fù)雜的分布式環(huán)境,大家往往需要通過開發(fā)各種開源的監(jiān)控方案,以滿足實(shí)際應(yīng)用的需求。
當(dāng)前,在Kubernetes生態(tài)系統(tǒng)及其社區(qū)中,有著林林總總的Kubernetes工具。它們中有的能夠通過日志來輔助檢測狀態(tài);有的則是一種數(shù)據(jù)收集器;而另一些則提供了操作Kubernetes的界面。有些是Kubernetes原生的,有些則是開發(fā)人員自行研發(fā)的。在本文中,我們將通過優(yōu)缺點(diǎn)的比較,向您介紹十大流行的Kubernetes開源監(jiān)控工具。
Prometheus
優(yōu)點(diǎn):Kubernetes原生,易于使用,擁有龐大的社區(qū)。
缺點(diǎn):可擴(kuò)展性與存儲能力不強(qiáng)。
由于具有與大量數(shù)據(jù)源的集成能力,因此Grafana在業(yè)界備受歡迎。同時(shí),強(qiáng)大的Grafana具有警報(bào)、注釋、過濾、特定數(shù)據(jù)源查詢、可視化儀表板、身份驗(yàn)證與授權(quán)、以及跨組織協(xié)作等多種功能。
優(yōu)點(diǎn):擁有大型生態(tài)系統(tǒng),以及豐富的可視化與警報(bào)功能。
缺點(diǎn):未能針對Kubernetes的日志管理進(jìn)行優(yōu)化。
ELK(ala Elastic Stack)
就Kubernetes的日志而言,最受歡迎的開源解決方案當(dāng)屬ELK Stack。ELK是Elasticsearch、Logstash和Kibana的首字母縮寫,其實(shí)它包含了第四個(gè)組件:Beats。它們都屬于輕量級的數(shù)據(jù)傳送器。雖然堆棧中的每一個(gè)組件都僅負(fù)責(zé)日志管道中的不同階段,但是它們組合在一起,卻能為Kubernetes提供了一個(gè)全面而強(qiáng)大的日志解決方案。
其中,Logstash管道能夠在發(fā)送日志并對其進(jìn)行存儲之前,完成數(shù)據(jù)的匯總和處理。具有可擴(kuò)展性的Elasticsearch,即使在存儲和搜索數(shù)百萬個(gè)文檔時(shí),也能具有不俗的表現(xiàn)。其對應(yīng)的Kibana平臺,則能夠出色地為用戶提供分析數(shù)據(jù)所需的可視化界面。
堆棧中所有不同的組件都可以被輕松部署到Kubernetes環(huán)境之中。您可以使用各種部署配置、以及helm圖表,將不同的組件作為pod予以運(yùn)行。通過部署,我們可以將Metricbeat和Filebeat作為守護(hù)進(jìn)程的采集器,將Kubernetes的元數(shù)據(jù)附加到對應(yīng)的文檔中。
優(yōu)點(diǎn):擁有龐大的社區(qū),易于在Kubernetes中部署與使用,具有豐富的分析功能。
缺點(diǎn):擴(kuò)展起來較為麻煩。
Fluentd/Fluent Bit
Fluentd在Logstash的基礎(chǔ)上進(jìn)行了相關(guān)性能的改進(jìn),因此也廣受Kubernetes用戶的歡迎。在工具設(shè)計(jì)方面,F(xiàn)luentd擁有出色的性能、可擴(kuò)展性和可靠性。各種簡單方便的輸入與輸出,并不會對其性能產(chǎn)生任何影響。針對處理傳輸中的故障、以及數(shù)據(jù)過載問題,F(xiàn)luentd使用磁盤或內(nèi)存來進(jìn)行緩沖和隊(duì)列。同時(shí),F(xiàn)luentd通過支持多種配置選項(xiàng),以確保提供更為靈活的數(shù)據(jù)管道。
Kubernetes原生的Fluentd和Fluent Bit都隸屬于CNCF項(xiàng)目。它們不但可以與Kubernetes無縫集成,而且能夠在僅占用少量資源的情況下,使用相關(guān)的pod和容器元數(shù)據(jù)來豐富各類數(shù)據(jù)。
優(yōu)點(diǎn):具有龐大的插件生態(tài)系統(tǒng),提供優(yōu)異的性能與可靠性。
缺點(diǎn):配置較為麻煩。
cAdvisor(https://github.com/google/cadvisor)
作為一款開源的代理工具,cAdvisor能夠通過收集、處理和導(dǎo)出數(shù)據(jù),來展示那些正在運(yùn)行的容器性能,及其資源使用情況。它能夠以Kubelet二進(jìn)制文件的形式,被內(nèi)置集成到Kubernetes之中。
與其他代理工具不同,cAdvisor并不是被部署在每個(gè)pod中,而是在節(jié)點(diǎn)級別上。它能夠自動(dòng)發(fā)現(xiàn)計(jì)算機(jī)上所有正在運(yùn)行的容器,并收集到諸如內(nèi)存、CPU等系統(tǒng)網(wǎng)絡(luò)指標(biāo)。
作為一款基礎(chǔ)性的本地開源監(jiān)視工具,cAdvisor具有易用性,用戶可以開箱即用(out-of-the-box)的方式發(fā)現(xiàn)Prometheus的參數(shù)指標(biāo)。不過,要想成為一款全方位的監(jiān)視解決方案,cAdvisor尚有持續(xù)改進(jìn)的空間。
優(yōu)點(diǎn):內(nèi)置于Kubernetes,易于部署和使用,能夠支持多個(gè)端點(diǎn)。
缺點(diǎn):過于基礎(chǔ),缺乏分析的深度,且功能有限。
kubewatch(https://github.com/bitnami-labs/kubewatch)
顧名思義, kubewatch能夠監(jiān)控那些特定的Kubernetes事件,并將此類事件以通知的形式推送到諸如Slack和PagerDuty的端點(diǎn)上。具體而言,kubewatch能夠通過監(jiān)控,來獲悉Kubernetes指定資源的變化,其中包括:守護(hù)進(jìn)程集、部署、pod、副本集、復(fù)制控制器、服務(wù)、密碼、以及各種配置映射。Kubewatch不但易于配置,而且能夠使用helm來進(jìn)行自定義部署。
優(yōu)點(diǎn):支持多個(gè)端點(diǎn),且易于部署。
缺點(diǎn):只是一個(gè)監(jiān)控器。
kube-ops-view(https://github.com/hjacobs/kube-ops-view)
雖然kube-ops-view項(xiàng)目的官方文檔已明確指出:它不是一款監(jiān)控工具,不能對生產(chǎn)環(huán)境進(jìn)行監(jiān)控與報(bào)警。但是它可以為您提供Kubernetes集群、不同部署節(jié)點(diǎn)、以及節(jié)點(diǎn)上不同Pod的運(yùn)行狀態(tài)信息。
資料來源: GitHub
優(yōu)點(diǎn):易于部署與使用。
缺點(diǎn):作為只讀工具,不太適用于管理Kubernetes資源。
kube-state-metrics
作為一款Kubernetes的原生監(jiān)控指標(biāo)服務(wù),kube-state-metrics能夠偵聽各種Kubernetes API,并能夠生成諸如Pod、服務(wù)、部署、以及節(jié)點(diǎn)等,有關(guān)對象的狀態(tài)指標(biāo)。您可以通過鏈接:https://github.com/kubernetes/kube-state-metrics/tree/master/docs,來獲悉kube-state-metrics能夠生成的完整指標(biāo)列表。
kube-state-metrics雖然極其簡單易用,但是由于它只能提供單一的指標(biāo)服務(wù),因此需要更多的改進(jìn),才能集成到完整的Kubernetes監(jiān)控解決方案之中。kube-state-metrics能夠以純文本格式,導(dǎo)出HTTP端點(diǎn)上的指標(biāo)。那些使用Prometheus的用戶會經(jīng)常使用到它。
優(yōu)點(diǎn):屬于Kubernetes原生,易于使用,能與Prometheus無縫集成。
缺點(diǎn):僅提供單一的指標(biāo)生成服務(wù)。
Jaeger(https://github.com/jaegertracing/jaeger)
目前,分布式跟蹤正在逐漸成為針對Kubernetes環(huán)境監(jiān)視和故障排除的優(yōu)秀實(shí)踐方式。Jaeger正是此類開源跟蹤工具中的佼佼者。
2016年,Uber在其他現(xiàn)有跟蹤工具:Zipkin和Dapper的啟發(fā)下,開發(fā)出了開源式的Jaeger。它能夠幫助用戶執(zhí)行根本原因分析,性能優(yōu)化和分布式的事務(wù)監(jiān)控。
Jaeger具有適用于Go、Java、Node、Python和C++應(yīng)用程序的OpenTracing-based特征。它能夠根據(jù)每一個(gè)服務(wù)或端點(diǎn),來使用一致性的前端信息采樣頻率。同時(shí),它也支持Cassandra、Elasticsearch、Kafka、以及內(nèi)存等多種存儲后端模式。
Jaeger具有多種上手模式:用戶既可以使用全新的Jaeger Operator(https://www.jaegertracing.io/docs/1.13/operator/),也可以使用守護(hù)進(jìn)程來進(jìn)行配置,另外它還有一個(gè)適用于測試和演示目的的all-in-one部署方式。
優(yōu)點(diǎn):易于部署,且能夠通過用戶界面來檢測各種監(jiān)控選項(xiàng)。
缺點(diǎn):提供有限的后端集成。
Weave Scope
由Weaveworks開發(fā)的監(jiān)視工具--Weave Scope,能夠讓您獲悉對于Kubernetes集群的操作洞見。
雖然和kube-ops-view有幾分類似,但Weave Scope主要是通過更好的用戶界面,來提升服務(wù)等級;并允許用戶在其界面上運(yùn)行各種診斷命令,來管理不同的容器。
圖片來源:GitHub
您可以通過該應(yīng)用工具,來有效地掌控部署環(huán)境,并在其上部署自己的基礎(chǔ)架構(gòu),以及不同的組件連接。
優(yōu)點(diǎn):提供了“零配置”式的用戶界面。
缺點(diǎn):其分析深度欠佳。
總結(jié)
上述所列舉的十大Kubernetes開源工具,只是業(yè)界所有工具中的“冰山一角”。它們在不同程度上為用戶提供了設(shè)計(jì)Kubernetes堆棧的可觀察性。您可以通過設(shè)置小型的沙箱環(huán)境,從小規(guī)模的測試開始,進(jìn)行嘗試性的測試和部署,進(jìn)而判斷出哪一款才是您真正所需要的工具。
原文標(biāo)題:Top 10 Open-Source Monitoring Tools for Kubernetes,作者:Daniel Berman
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】