監(jiān)控Kubernetes的最佳實(shí)踐、工具和方法
譯文作者 | Kyle Hunter
翻譯 | 布加迪
在 Kubernetes 環(huán)境中,應(yīng)用程序跨集群內(nèi)的多個(gè)節(jié)點(diǎn)運(yùn)行,應(yīng)用程序服務(wù)可能分布在多個(gè)集群和多個(gè)云中,因此跟蹤應(yīng)用程序及其依賴的基礎(chǔ)架構(gòu)的健康狀況困難重重。
Kubernetes 監(jiān)控是從您運(yùn)行的 Kubernetes 集群收集度量指標(biāo),以識(shí)別關(guān)鍵事件,并確保所有硬件、軟件和應(yīng)用程序按預(yù)期運(yùn)行。在一個(gè)地方匯總指標(biāo)將幫助您了解和保護(hù)整個(gè) Kubernetes 集群以及在上面運(yùn)行的應(yīng)用程序和服務(wù)的健康狀況。
鑒于容器化和 Kubernetes 創(chuàng)建抽象層,加上 K8s 環(huán)境中運(yùn)行的應(yīng)用程序具有動(dòng)態(tài)性,監(jiān)控一切可能是個(gè)挑戰(zhàn)。幸好有許多開(kāi)源 Kubernetes 監(jiān)控工具以及流行的商業(yè)工具,簡(jiǎn)化監(jiān)控工作。
本文探討了市面上的一些 Kubernetes 監(jiān)控和 Kubernetes日志工具,包括用于監(jiān)控的Prometheus 以及用于可視化和儀表板的 Grafana。
用于日志和監(jiān)控的Kubernetes生態(tài)系統(tǒng)工具
有眾多流行的工具可以改進(jìn) Kubernetes容器監(jiān)控工作。一些最常見(jiàn)的工具包括如下:
?Prometheus(https://prometheus.io/docs/introduction/overview/):一種開(kāi)源事件監(jiān)控和警報(bào)工具,可收集指標(biāo)并存儲(chǔ)為時(shí)間序列數(shù)據(jù)。Prometheus 于 2016 年加入了云原生計(jì)算基金會(huì),成為繼 Kubernetes 之后的第二個(gè)托管項(xiàng)目。
?Grafana(http://grafana.com/):一個(gè)完全托管的應(yīng)用程序和基礎(chǔ)架構(gòu)可視化平臺(tái),可與Prometheus等監(jiān)控軟件配合使用。Grafana提供了數(shù)據(jù)收集、存儲(chǔ)、顯示和警報(bào)等功能。
?Thanos(https://thanos.io/):一種度量系統(tǒng),提供了一種簡(jiǎn)單且經(jīng)濟(jì)高效的方式來(lái)集中和擴(kuò)展基于Prometheus的監(jiān)控系統(tǒng)。
?Elasticsearch(https://www.elastic.co/elasticsearch/):一種分布式的、基于JSON的搜索和分析引擎。
?Logstash(https://www.elastic.co/logstash/):一種開(kāi)源服務(wù)器端數(shù)據(jù)處理管道,可同時(shí)從多個(gè)來(lái)源獲取數(shù)據(jù),對(duì)其進(jìn)行轉(zhuǎn)換,然后發(fā)送到您青睞的存儲(chǔ)區(qū)。
?Kiban(https://www.elastic.co/kibana/)a:一種數(shù)據(jù)可視化和探索工具,可用于日志和時(shí)間序列分析、應(yīng)用程序監(jiān)控和運(yùn)營(yíng)智能等使用場(chǎng)景。
應(yīng)該選擇哪些Kubernetes監(jiān)控工具?
許多團(tuán)隊(duì)單獨(dú)或組合使用這些監(jiān)控和日志記錄工具,以創(chuàng)建自己的解決方案,并滿足特定的容器監(jiān)控和Kubernetes應(yīng)用程序監(jiān)控需求。最常用的組合工具之一是Prometheus和Grafana。Prometheus讓您可以從硬件和軟件收集時(shí)間序列數(shù)據(jù),而Grafana讓您可以直觀顯示Prometheus收集的數(shù)據(jù)。
另一個(gè)流行的組合工具是Elasticsearch、Logstash和Kibana,通常名為ELK堆?;?nbsp;Elastic Stack,它們都可以通過(guò)Elastic(https://www.elastic.co/)獲得。雖然Elastic本身是一家營(yíng)利性公司,但這些組件是免費(fèi)開(kāi)源的。
實(shí)施上述任何工具,無(wú)論是單獨(dú)實(shí)施還是組合實(shí)施,都必然會(huì)帶來(lái)一定的復(fù)雜性,尤其是當(dāng)Kubernetes環(huán)境擴(kuò)大到含有諸多集群時(shí)——可能在不同的云環(huán)境中運(yùn)行不同的K8s發(fā)行版。
由于應(yīng)用程序?qū)雴?wèn)題、手動(dòng)配置要求和配置漂移,大規(guī)模管理Prometheus配置可能成為一項(xiàng)挑戰(zhàn)。雖然Prometheus和Grafana可以很好地協(xié)同用于單個(gè)集群,但在多集群環(huán)境下,可能需要將Thanos添加到工具集中,以便聚合數(shù)據(jù),并提供長(zhǎng)期存儲(chǔ)和全局視圖。不過(guò)可能會(huì)在數(shù)據(jù)保留和高可用性方面面臨限制,因此一些人更青睞ELK堆棧。
由于這種復(fù)雜性,許多組織更喜歡監(jiān)控即服務(wù),使用Datadog、Cloudwatch和New Relic之類的商業(yè)解決方案。
原文標(biāo)題:Best Practices, Tools, and Approaches for Kubernetes Monitoring,作者:Kyle Hunter
鏈接:https://dzone.com/articles/best-practices-tools-and-approaches-for-kubernetes