你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Kubernetes 服务 (AKS) 的主动监视最佳做法

本文介绍有关在 Azure Kubernetes 服务 (AKS) 上进行主动监视的最佳做法,并提供 AKS 建议你监视的关键信号的完整列表。

主动监视 AKS 群集对于为应用程序减少故障时间和避免业务中断至关重要。 此过程涉及识别和监视群集中可能导致重大问题或停机的异常行为的关键指标。

监视和警报概述

在 AKS 上进行监视涉及使用指标、日志和事件来确保群集的运行状况和性能。 要监视的常见场景包括群集中的节点性能、Pod 状态和总体资源利用率。 日志提供对系统事件、群集操作和活动的见解。 有关 AKS 提供的用于监视的方法和信号的详细信息,请参阅监视 Azure Kubernetes 服务 (AKS)

主动监视群集的最佳方式是配置 Azure Monitor 警报。 警报充当主动措施,可在潜在问题或异常升级为严重问题之前通知你。 通过定义关键指标和日志的阈值,可以在这些信号超过预定义的限制(指示潜在问题,例如资源耗尽或应用程序故障)时收到即时警报。 强烈建议为应用程序定义服务级别目标 (SLO),以衡量服务的性能和可靠性。 通过为 SLO 的关键信号配置警报,可以快速检测到客户收到的应用程序服务质量的任何降级。 总的来说,设置及时的警报让你能够快速调查和修正问题,最大限度地减少故障时间并确保 AKS 群集上运行的应用程序的高可用性。

如何针对特定指标类型配置警报

指标类型 在何处查找这些指标 如何配置警报
AKS 平台指标 通过 Azure 门户中的“指标”边栏选项卡查看平台指标 可以通过 Azure 门户创建、更新和删除指标警报。 有关详细信息,请参阅对 Azure 资源创建指标警报
Azure 托管 Prometheus 指标 若要访问 Prometheus 指标,需要启用托管 Prometheus。 有关如何启用和查看 Prometheus 指标的详细信息,请参阅 Azure Monitor 和 Prometheus 有关配置 Prometheus 警报的指导,请参阅适用于 Prometheus 的 Azure Monitor 托管服务规则组
Azure 活动日志 通过 Azure 门户查看活动日志。 有关详细信息,请参阅 AKS 的 Azure 活动日志 通过 Azure 门户配置有关活动日志的警报。 有关详细信息,请参阅活动日志警报
Azure 虚拟机规模集指标 通过 Azure 门户查看虚拟机规模集指标。 1.若要查找与节点池关联的虚拟机规模集实例,请在 Azure 门户中导航到 AKS 群集的“设置”>“属性”边栏选项卡。
2.选择你的基础结构资源组以查看与你的群集关联的基础结构资源。
3.选择与你要为其创建警报的节点池的名称匹配的虚拟机规模集实例
4.导航到“警报”边栏选项卡以创建指标警报。
负载均衡器指标 通过 Azure 门户中的“负载均衡器”页查看负载均衡器指标。 1.若要查找与节点池关联的负载均衡器实例,请在 Azure 门户中导航到 AKS 群集的“设置”>“属性”边栏选项卡。
2.选择你的基础结构资源组以查看与你的群集关联的基础结构资源。
3.选择负载均衡器实例以打开有关负载均衡器的 Azure 门户页面。
4.导航到“警报”页面以创建负载均衡器指标警报。
日志和事件 若要针对日志和事件发出警报,需要启用“容器见解”。 有关详细信息,请参阅 Azure Monitor 资源日志 有关针对日志和事件创建警报的指导,请参阅从容器见解创建日志搜索警报

用于配置警报的关键信号

为了全面覆盖 AKS 环境,需要针对群集的三个主要组件配置警报:

  • 群集基础结构:针对群集的底层基础结构(例如节点、磁盘和网络)的警报。
  • 应用程序运行状况:用于监视 Pod 和应用程序的运行状况的警报。 不正常应用程序的一些常见指标包括 Pod 因内存不足而终止 (OOMKill),Pod 处于未就绪状态等。
  • Kubernetes 控制平面:针对 AKS 控制平面的警报,用于监视 API 服务器、etcd 以及其他组件的运行状况和性能。

以下部分包含我们建议所有 AKS 客户都密切监视的关键信号。 AKS 团队正在努力将所有关键信号添加到现有“建议的警报”功能,使你能够通过一键式体验轻松为所有信号启用警报。 Prometheus 指标警报目前以公共预览版提供,其余警报预计将于 2025 年初提供。 目前,可以针对关键信号手动配置警报。

群集基础结构警报

警报场景 Source Signal 建议的阈值
群集处于失败状态 Azure 活动日志 创建或更新托管群集 日志的状态为“失败”,指示群集升级或创建操作失败。
节点池处于失败状态 Azure 活动日志 创建或更新代理池 日志的状态为“失败”,指示节点池由于创建、读取、升级或删除 (CRUD) 操作失败而处于失败状态。
节点操作系统磁盘带宽使用率过高 虚拟机规模集指标 已使用的 OS 磁盘带宽的百分比 节点操作系统磁盘带宽利用率高于 95%。
节点操作系统磁盘 IOPS 使用率过高 虚拟机规模集指标 已使用的 OS 磁盘 IOPS 的百分比 节点操作系统磁盘 IOPS 利用率高于 95%。
节点操作系统磁盘空间使用率过高 AKS 平台指标 磁盘已用百分比 节点操作系统磁盘空间利用率百分比高于 90%。
节点 CPU 使用率过高 AKS 平台指标 CPU 使用率百分比 节点 CPU 使用率大于 90%。
节点内存使用率过高 AKS 平台指标 内存工作集百分比 节点内存使用率大于 90%。
节点处于 NotReady 状态 AKS 平台指标 各种节点状况的状态 节点处于 NotReady 状态的时间 >20 分钟。
SNAT 端口耗尽 负载均衡器 (LB) 指标 SNAT 连接计数 筛选出:连接状态 =“失败”

应用程序运行状况警报

警报场景 Source Signal 建议的阈值
大量不正常的 Pod Azure 托管 Prometheus 指标 警报名称:KubePodReadyStateLow 作为 AKS 建议的警报提供。 若要启用此警报,请参阅 Kubernetes 群集的建议警报规则
一个或多个 Pod 正在重启 Azure 托管 Prometheus 指标 警报名称:KubePodContainerRestart 作为 AKS 建议的警报提供。 若要启用此警报,请参阅 Kubernetes 群集的建议警报规则
一个或多个 Pod 处于 CrashLoop 状态 Azure 托管 Prometheus 指标 警报名称:KubePodCrashLooping 作为 AKS 建议的警报提供。 若要启用此警报,请参阅 Kubernetes 群集的建议警报规则

Kubernetes 控制平面警报

警报场景 Source Signal 建议的阈值
ETCD 已填满 Azure 托管 Prometheus 指标 etcd_mvcc_db_total_size_in_use_in_bytes ETCD 使用量大于 2 GB
API 服务器“请求过多”错误 Azure 托管 Prometheus 指标 apiserver_request_total 筛选出错误代码 429
API 服务器 Webhook 和隧道错误 Azure 托管 Prometheus 指标 apiserver_request_total 筛选出错误代码 500 和 503

后续步骤

有关对 AKS 进行监视的详细信息,请参阅以下文章: