Kubernetes监控最佳实践
作者:互联网
Kubernetes可以使用不同的工具进行安装,无论是开源、第三方供应商还是公共云。在大多数情况下,默认安装的监控能力有限。因此,一旦Kubernetes集群运行,管理员必须实施监控解决方案以满足其需求。
Kubernetes监控的典型用例包括:
- 确保工作负载的可靠性
- 实现工作量的高级可见性
- 警报和启用事件管理 有效的Kubernetes监控需要工具、策略和技术专业知识的组合。为了帮助您正确,本文将详细探索七种基本的Kubernetes监控最佳实践。
关键Kubernetes监控最佳实践概念摘要
下表总结了我们将在本文中探索的Kubernetes监控最佳实践。
- 概念:监控与可观察性
-
描述:可观察性意味着使用外部指标深入了解工作负载的性能。监控意味着随着时间的推移检查这些指标。
-
概念:确定要求
-
描述:准确确定您的需求和监控目标。
-
概念
确定适当的指标 -
描述
确定实现监控目标所需的指标。 -
概念:选择正确的工具
-
描述:根据您的要求选择正确的工具是关键的最佳实践。这里的一个主要决定是使用开源软件在内部构建一些东西,还是购买具有更好支持的更完整的SaaS解决方案。
-
概念:监控监控系统
-
描述:在生产工作量中,重要的是要监控监控系统本身,以确保其可靠和高可用性。
-
概念:考虑数据存储
-
描述:必须有效地存储和管理监控数据。
-
概念:监控控制平面
-
描述:监控Kubernetes控制平面很容易被忽视,因此团队应该有意识地进行控制平面监控。
-
概念:事件响应的帐户
-
描述:监控输出可以增强事件响应协调,这可以减少MTTR(平均解决时间)。
监控与可观察性
在我们更详细地讨论之前,让我们来解开一个经常令人困惑的话题,监控与可观察性。“监控”一词更传统,涵盖了用于监控应用程序基础设施组件的指标和日志的收集。这个想法是通过不断评估其基础基础设施的实时性能来“监控”工作量。
可观察性是一个相对较新的概念,即使它与监控重叠,其最终目标是在事务路径上隔离性能瓶颈,而不是监控应用程序基础设施。可观察性在基于微服务范式设计的应用程序环境中获得了牵引力,其中应用程序包括托管在临时容器中的模块化服务,并通过应用程序编程接口(API)相互交互。在这样的环境中,孤立地监控服务器和容器没有意义,因此需要一个新的视角,从而产生了可观察性的概念。
除了指标和日志外,可观察性还包括分布式跟踪,以通过应用程序基础设施跟踪事务的路径。分布式跟踪使操作工程师能够理解用户请求所采取的路径,包括:
- 当工作量收到请求时,
- 它所经历的阶段或微服务,以及
- 当响应发送给用户时。可观察性使运营工程师能够快速了解应用程序服务对彼此的上游和下游影响。通常,可观察性工具将结合指标、日志和跟踪,为工程师提供整个基础设施整个交易路径的一致视图。如果您想了解有关可观察性(也称为“O11y”)的更多信息,请阅读本文。
7个基本的Kubernetes监控最佳实践
以下七个Kubernetes监控最佳实践可以帮助DevOps和SRE(站点可靠性工程)团队实现SLO(服务级别目标),并提高整体基础设施的可观察性。
Kubernetes监控最佳实践#1:确定您想要实现的目标
确定业务目标是第一个(可以说是最重要的)Kubernetes监控最佳实践。这些目标的例子有:
- 深入了解集群的健康状况
- 获得对最终用户体验的可见性
- 当某些事件发生时,请保持警惕
- 预测潜在的问题
- 识别工作负载利用率的趋势和模式,*例如磁盘利用率的稳步增加,这将导致磁盘在一定时间内满员
- 识别出乎寻常或出乎意料的趋势和模式
- 当满足某些条件时,缩放豆荚进出
- 根据预期标准评估应用程序的可靠性 虽然规划很重要,但不要过度思考也很重要。刚刚开始监测的团队应该避免分析瘫痪,而是采取迭代方法来制定计划。稍后可以添加其他要求,以解决新的信息和要求。
Kubernetes监控最佳实践#2:确定要监控的指标
一旦您确定了业务目标,您就可以确定实现这些目标需要收集哪些指标。此步骤还包括定义相关的配置参数,例如收集率和存储指标数据需要多长时间。
一些指标通常很容易获得,通常是系统指标。这些指标包括:
- CPU利用率
- 内存利用率
- 磁盘上的可用空间
- 磁盘输入/输出数据
- 网络使用系统指标通常是必要的,作为任何监控策略的一部分,并倾向于显示集群所承受的总体压力。然而,它们非常基本,除了告诉集群是否健康外,通常不会提供足够的可操作信息。
此外,通常需要更复杂的指标。这些指标通常与您运行的软件相关联。例如,他们可以测量:
- 网站或应用程序的响应速度如何?
- 目前有多少用户登录?
- 工作日上午10点的并发用户平均数量是多少?
- 您的支持团队对初始请求的响应速度有多快?
- 您的网络服务器报告的5xx错误率是多少?
- 输入队列中每天的平均工作数量是多少?
Kubernetes监控最佳实践#3:选择正确的工具
我们的下一个Kubernetes监控最佳实践是根据所需的指标选择正确的工具,并实现您的监控目标。
自由和开源软件(FOSS)与商业第三方软件通常用于对Kubernetes监控工具进行分类。FOSS监控解决方案的一些示例包括:
- 收集指标的工具(例如,Prometheus、kube-metrics)
- 收集日志的工具(例如Loki、Fluentd)
- 收集痕迹的工具(例如,Jaeger)
- 可视化和警报工具(例如,Grafana,Alertmanager)
虽然有很多开源选项可供选择,但您需要内部专业知识和大量DevOps工程师的时间来构建和维护FOSS监控解决方案。如果你没有内部专家,你可以聘请顾问来构建解决方案,但这可能会很昂贵。另一方面,从长远来看,开发自己的监控解决方案可以为您节省大量资金。
另一种选择是为第三方软件付费,该软件通常提供交钥匙、软件即服务(SaaS)解决方案。商业选项通常具有更先进的产品,例如机器学习来检测可疑的趋势和模式或执行离线数据分析。此外,大多数商业解决方案都具有自由和开放源码软件项目所缺乏的支持水平。
在评估解决方案时,请记住,使用第三方工具(特别是SaaS产品)可能会产生合规性问题,例如根据HIPAA或GDPR保护个人身份信息。您可能还需要打开集群,以允许第三方SaaS产品从互联网路由,这增加了攻击面,并可能产生其他安全问题。
Kubernetes监控最佳实践#4:监控您的监控系统
除非您运行非生产工作负载,否则您可能希望监控解决方案的每个元素都具有高度可用性和可扩展性。实现高可用性监控需要监控系统本身。至少,您必须能够检测监控系统中的严重故障,并在发生时发送通知。理想情况下,您还应该配置此类问题的自动补救。
一般来说,这种额外的监控级别仅用于内部解决方案,因为第三方SaaS供应商通常为其平台提供监控系统。一些自由和开放源码软件产品集成了自己的监控系统。例如,Loki附带了Loki Canary,它定期向Loki发送虚拟日志,并读回它们以确保其正常工作。
Kubernetes监控最佳实践#5:考虑数据存储
您的监控系统将随着时间的推移积累数据,这些数据应该像任何其他数据一样进行管理。你需要确定你需要坚持多久,甚至可能在一段时间后把它放在冷藏室。请务必考虑适用于您组织的任何法规或法律要求,以便根据要求快速访问和提供数据。确定监控数据的数据保留要求将是您整体需求收集工作的一部分,然后您需要相应地实施它。
Kubernetes监控最佳实践#6:监控控制平面
也要忽视监控你的控制飞机!我们列出的所有最佳实践也适用于控制平面,而不仅仅是数据平面。一些Kubernetes托管解决方案,如亚马逊的EKS,将自动为您做到这一点。如果没有,您需要将控制平面节点和各种控制平面组件的监控添加到您的监控策略中。
Kubernetes监控最佳实践#7:考虑事件响应
一旦您的监控系统启动并运行并能够向您的团队发送警报,您必须考虑如何响应此类警报。Squadcast可以帮助协调事件响应,确保团队内部的协调水平非常高,以便他们在处理问题时尽可能高效。
将监控数据集成到强大的事件响应策略中,有助于团队更快地检测中断和其他生产事件并从中恢复。因此,MTTR下降,正常运行时间改善。
标签:Kubernetes,存储,监控 来源: