作者 | 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