監控Kubernetes的最佳實踐、工具和方法
譯文作者 | 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