監控Kubernetes的最佳實踐、工具和方法

語言: CN / TW / HK

作者 | Kyle Hunter

翻譯 | 布加迪

在 Kubernetes 環境中,應用程式跨叢集內的多個節點執行,應用程式服務可能分佈在多個叢集和多個雲中,因此跟蹤應用程式及其依賴的基礎架構的健康狀況困難重重。

Kubernetes 監控是從您執行的 Kubernetes 叢集收集度量指標,以識別關鍵事件,並確保所有硬體、軟體和應用程式按預期執行。在一個地方彙總指標將幫助您瞭解和保護整個 Kubernetes 叢集以及在上面執行的應用程式和服務的健康狀況。

鑑於容器化和 Kubernetes 建立抽象層,加上 K8s 環境中執行的應用程式具有動態性,監控一切可能是個挑戰。幸好有許多開源 Kubernetes 監控工具以及流行的商業工具,簡化監控工作。

本文探討了市面上的一些 Kubernetes 監控和 Kubernetes日誌工具,包括用於監控的Prometheus 以及用於視覺化和儀表板的 Grafana。

用於日誌和監控的Kubernetes生態系統工具

有眾多流行的工具可以改進 Kubernetes容器監控工作。一些最常見的工具包括如下:

•Prometheus(https://prometheus.io/docs/introduction/overview/):一種開源事件監控和警報工具,可收集指標並存儲為時間序列資料。Prometheus 於 2016 年加入了雲原生計算基金會,成為繼 Kubernetes 之後的第二個託管專案。

•Grafana(http://grafana.com/):一個完全託管的應用程式和基礎架構視覺化平臺,可與Prometheus等監控軟體配合使用。Grafana提供了資料收集、儲存、顯示和警報等功能。

•Thanos(https://thanos.io/):一種度量系統,提供了一種簡單且經濟高效的方式來集中和擴充套件基於Prometheus的監控系統。

•Elasticsearch(https://www.elastic.co/elasticsearch/):一種分散式的、基於JSON的搜尋和分析引擎。

•Logstash(https://www.elastic.co/logstash/):一種開源伺服器端資料處理管道,可同時從多個來源獲取資料,對其進行轉換,然後傳送到您青睞的儲存區。

•Kiban(https://www.elastic.co/kibana/)a:一種資料視覺化和探索工具,可用於日誌和時間序列分析、應用程式監控和運營智慧等使用場景。

應該選擇哪些Kubernetes監控工具?

許多團隊單獨或組合使用這些監控和日誌記錄工具,以建立自己的解決方案,並滿足特定的容器監控和Kubernetes應用程式監控需求。最常用的組合工具之一是Prometheus和Grafana。Prometheus讓您可以從硬體和軟體收集時間序列資料,而Grafana讓您可以直觀顯示Prometheus收集的資料。

另一個流行的組合工具是Elasticsearch、Logstash和Kibana,通常名為ELK堆疊或 Elastic Stack,它們都可以通過Elastic(https://www.elastic.co/)獲得。雖然Elastic本身是一家營利性公司,但這些元件是免費開源的。

實施上述任何工具,無論是單獨實施還是組合實施,都必然會帶來一定的複雜性,尤其是當Kubernetes環境擴大到含有諸多叢集時——可能在不同的雲環境中執行不同的K8s發行版。

由於應用程式匯入問題、手動配置要求和配置漂移,大規模管理Prometheus配置可能成為一項挑戰。雖然Prometheus和Grafana可以很好地協同用於單個叢集,但在多叢集環境下,可能需要將Thanos新增到工具集中,以便聚合資料,並提供長期儲存和全域性檢視。不過可能會在資料保留和高可用性方面面臨限制,因此一些人更青睞ELK堆疊。

由於這種複雜性,許多組織更喜歡監控即服務,使用Datadog、Cloudwatch和New Relic之類的商業解決方案。

原文標題:Best Practices, Tools, and Approaches for Kubernetes Monitoring,作者:Kyle Hunter

連結:https://dzone.com/articles/best-practices-tools-and-approaches-for-kubernetes