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

































