使用Prometheus来监控Kubernetes和Kubernetes应用的方法介绍

143 阅读5分钟

用Prometheus监控Kubernetes

让我们来讨论一下使用Prometheus来监控Kubernetes和Kubernetes应用。

Kubernetes监控是指从你运营的Kubernetes集群中收集指标的过程,以确定关键事件并确保所有硬件、软件和应用程序按预期运行。监控对于深入了解集群健康状况、资源消耗和工作负载性能至关重要。有了正确的监控,在堆栈的任何一层发生的错误都可以被快速识别和纠正。

有许多Kubernetes监控工具,包括Prometheus和ELK Stack等开源工具,以及DatadogCloudwatchNew Relic等商业工具。

在开源的Kubernetes监控工具中,Prometheus是最流行和最广泛使用的工具之一。本文将讨论如何使用Prometheus来监控Kubernetes和Kubernetes应用。

什么是Prometheus?

Prometheus是一个开源的事件监控和警报工具,最初于2012年开始在SoundCloud开发,灵感来自于Google使用的Borgmon工具。自2016年以来,普罗米修斯一直是云原生计算基金会(CNCF)的项目;它是继Kubernetes之后的第二个托管项目。虽然本文是在Kubernetes监控的背景下讨论Prometheus,但它可以满足各种监控需求

Prometheus收集并存储你指定的指标,作为时间序列数据。可以通过分析指标来了解你的集群及其组件的运行状态。

普罗米修斯的一个重要重点是可靠性。这有助于确保在你的环境中其他东西出现问题时,普罗米修斯仍然可以访问。每个Prometheus服务器都是独立的。一个本地的时间序列数据库使它独立于远程存储或其他远程服务。这使得它对于快速识别问题和接收被监控的集群和应用程序的系统性能的实时反馈非常有用。

Prometheus的主要组件,包括Prometheus服务器和Alertmanager,如下图所示。Prometheus还提供了一个Pushgateway,它允许对短命的和批量的作业进行监控。普罗米修斯的客户端库支持对应用程序代码进行检测。一个强大的查询语言(PromQL)使其能够轻松查询Prometheus并深入了解正在发生的事情。虽然Prometheus提供了一个Web UI,但它经常与Grafana结合使用,以实现更灵活的可视化。

促成Prometheus流行的原因之一是存在许多集成,包括与各种语言、数据库和其他监控和日志工具的集成。这使你可以灵活地继续使用你已经拥有的工具和技能。

规划普罗米修斯的部署

一个成功的普罗米修斯部署需要一些前期的规划。首先,关键是要跟踪谁在访问你的集群以及他们在做什么,这样就可以监控变化,并在必要时回滚。你还需要仔细考虑你需要收集哪些集群和应用指标来帮助你识别和补救问题,以及你将使用哪些额外的可视化工具(如果有的话)来理解你收集的数据。

普罗米修斯有效地使用存储,但收集不增加价值的指标将消耗存储并花费你的钱。随着你的部署变得多集群和多云,平衡保留的指标价值和存储成本变得很重要。如上所述,Prometheus喜欢在本地存储指标。如果需要,请考虑并预算远程存储,以便长期保留。

如果你要使用Prometheus来监控内部的Kubernetes应用,你可能需要开发一个或多个代理来提供适当的仪器。确保代理的输出对接收警报的人有意义。

Prometheus对大型Kubernetes舰队的挑战

普罗米修斯的独立设计带来了一定的复杂性,特别是当你的Kubernetes车队发展到包括许多集群时--可能在不同的云环境中运行不同的Kubernetes发行版。一个有许多集群的大型行动很容易超过单个Prometheus服务器及其相关存储的能力。这意味着你必须减少你收集的指标数量,或者扩大Prometheus服务器的数量。

有几种方法来扩展你的Prometheus后端。普罗米修斯服务器有能力从其他普罗米修斯服务器刮取数据,所以你可以联合服务器。Prometheus支持分层或联合模式。这些方法需要仔细规划,并增加复杂性,特别是当你的业务不断扩大时。

普罗米修斯还提供了一种方法,通过一个API与远程存储位置集成,允许使用远程URL写入和读取指标。这使你能够在一个地方获得所有的数据,但你需要额外的工具来利用这些汇总的数据。许多组织将Thanos或Cortex添加到他们的工具集中,以汇总数据并提供长期存储和全局视图。

虽然这些障碍并不是不可克服的,但重要的是要考虑到需要额外的规划和持续管理。由于监控大型Kubernetes环境的复杂性,许多组织倾向于将监控作为一种服务。