你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用容器见解中的工作簿、性能图表和运行状况来监视在 Azure Kubernetes 服务 (AKS)、Azure Stack 或其他环境中托管的 Kubernetes 群集的工作负载。 本文将帮助你了解如何使用 Azure Monitor 快速评估、调查和解决检测到的问题。
工作簿
工作簿可将文本、日志查询、指标和参数合并到丰富的交互式报表中,可用于分析群集性能。 有关可用于容器见解的工作簿的说明以及如何访问这些工作簿,请参阅容器见解中的工作簿。
从 Azure Monitor 获得的多群集视图
Azure Monitor 提供一个多群集视图,显示在订阅中跨资源组部署的所有受监视 Kubernetes 群集的运行状况。 通过此视图,可以即时了解群集运行状况,并且向下钻取到节点和控制器性能页,或者进行导航来查看群集的性能图表。 对于发现并标识为未监视的群集,可以从视图中启用监视。
注意
此视图中不再支持 Azure Stack(预览版)和非 Azure(预览版)。
若要访问多群集视图,请在 Azure 门户的左窗格中选择“监视”。 在“见解”部分,选择“容器”。
在“受监视的群集”选项卡上,了解以下情况:
- 多少群集处于严重或不正常状态,多少群集处于正常或未报告状态(也称未知状态)。
- 每个群集部署了多少节点、用户和系统 Pod。
包含的健康状态有:
- 严重:检测到一个或多个严重问题,必须解决这些问题才能按预期还原正常操作状态。
- 警告:检测到一个或多个必须解决的问题,不解决这些问题可能会导致运行状况变得严重。
- 未授权:用户无权读取工作区或数据收集规则中的数据。
- 找不到:可能是包含此工作区的工作区、资源组或订阅已被删除。
- 启用录制规则:启用 Prometheus 录制规则 以解锁高性能数据和 Prometheus 可视化效果。
- 配置错误:出现问题。
- 错误:尝试从工作区中读取数据时发生错误。
- 没有数据:在过去 30 分钟内未向工作区报告数据。
- 未知:如果服务无法与节点或 Pod 建立连接,则状态将更改为“未知”状态。
- 正常:VM 没有检测到任何问题,并且按要求运行。
- 待处理:已启用 Arc 的群集的监视配置通常需要大约 5 分钟。 如果群集与 Azure 断开连接,则此过程可能会延迟。
- 等待 X 小时:已启用 Arc 的群集的监视配置花费的时间比预期长。
- 失败:已启用 Arc 的群集的监视配置失败。
在计算健康状态时,将这三种状态中的“最差”视为整体群集状态,但有一个例外。 如果这三种状态中的任何一种为“未知”,则群集总体状态会显示为“未知”。
下表提供了计算明细,该计算控制多群集视图中受监视群集的运行状况。
受监视的群集 | 状态 | 可用性 |
---|---|---|
用户 Pod | 正常 警告 严重 未知 |
100% 90 - 99% <90% 未在过去 30 分钟报告 |
系统 Pod | 正常 警告 严重 未知 |
100% 无 100% 未在过去 30 分钟报告 |
节点 | 正常 警告 严重 未知 |
>85% 60 - 84% <60% 未在过去 30 分钟报告 |
从群集列表中,您可以通过选择群集名称,进入 AKS 的概述页面或已启用 Arc 的群集的群集页面。 然后选择该特定群集的“节点”列中的节点汇总转到“节点”性能页。 或者,可以通过选择“用户 Pod”或“系统 Pod”列的汇总向下钻取到“控制器”性能页。
直接从群集查看性能
通过从左侧窗格中选择监视,或在多群集视图中选择群集,您可以直接从 AKS 群集访问容器洞察。 有关见解的详细信息,请参阅 Azure Monitor 中的托管 Prometheus 可视化效果。
在指标资源管理器中查看容器指标
在指标资源管理器中,可以从容器见解查看聚合的节点和 Pod 利用率指标。 下表汇总了详细信息,这些信息有助于你了解如何使用指标图表来可视化容器指标。
命名空间 | 指标 | 说明 |
---|---|---|
insights.container/nodes | ||
CPU使用毫核数 | 整个群集的 CPU 利用率的聚合计量值。 一个 CPU 核心拆分为 1,000 个单位(milli 表示 1000)。 用于确定某个容器中的核心使用率,该容器中可能有许多应用程序使用一个核心。 | |
CPU使用率百分比 | 整个群集的聚合平均 CPU 利用率,以百分比计量。 | |
memoryRssBytes | 使用的容器 RSS 内存,以字节为单位。 | |
memoryRssPercentage(内存RSS百分比) | 正在使用的容器 RSS 内存百分比。 | |
内存工作集字节数 | 使用的容器工作集内存。 | |
memoryWorkingSetPercentage | 容器工作集内存使用情况,以百分比表示。 | |
节点数量 | Kubernetes 中的节点计数。 | |
insights.container/pods | ||
PodCount | Kubernetes 中的 Pod 计数。 |
可以拆分指标,以便按维度来查看它,并以可视化方式表现其片段相互之间的不同之处。 对于节点,可以按主机维度将图表分段。 对于 Pod,可按以下维度将其分段:
- 控制器
- Kubernetes 命名空间
- 节点
- 阶段
分析节点、控制器和容器运行状况
切换到“节点”、“控制器”和“容器”选项卡时,页面右侧会自动显示属性窗格 。 它显示所选项的属性,包括定义用于组织 Kubernetes 对象的标签。 选择一个 Linux 节点时,“本地磁盘容量”部分还会显示可用磁盘空间以及用于每个提供给节点的磁盘的百分比。 单击窗格中的 >> 链接可查看或隐藏窗格。
在层次结构中展开对象时,属性窗格将根据所选对象进行更新。 在窗格中,还可以通过选择窗格顶部的“实时事件”选项卡来查看 Kubernetes 容器日志 (stdout/stderror)、事件和 Pod 指标。 要详细了解授予和控制查看此数据的访问权限所需的配置,请参阅设置实时数据。
查看群集资源时,可以实时查看容器中的该数据。 有关此功能的详细信息,请参阅如何实时查看 Kubernetes 日志、事件和 Pod 指标。
若要根据预定义的日志搜索查看工作区中存储的 Kubernetes 日志数据,请从“在 Analytics 中查看”下拉列表中选择“查看容器日志”。 有关详细信息,请参阅如何从容器见解查询日志。
使用页面顶部的“+ 添加筛选器”选项可按“服务”、“节点”、“命名空间”或“节点池”筛选视图的结果。 选择筛选范围后,选择“选择值”字段中显示的某个值。 筛选器在配置后会在用户查看任何视角的 AKS 群集时进行全局应用。 公式只支持等号。 可以在第一个筛选器的基础上添加更多筛选器,进一步缩小结果范围。 例如,如果指定了一个按“节点”筛选的筛选器,则只能为第二个筛选器选择“服务”或“命名空间”。
在一个选项卡中指定一个筛选器后,如果又选择一个筛选器,则前者会继续应用。 在选择指定筛选器旁边的 x 符号后,该筛选器会被删除。
切换到“节点”选项卡,行层次结构遵循以群集节点开头的 Kubernetes 对象模型。 展开节点可查看在节点上运行的一个或多个 Pod。 如果将多个容器分组到 Pod 中,它们将在层次结构中的最后一行显示。 还可查看有多少非 Pod 相关工作负荷在主机上运行(如果主机有处理器或内存使用压力)。
在列表中,运行 Windows Server 2019 OS 的 Windows Server 容器显示在所有基于 Linux 的节点后面。 展开 Windows Server 节点时,可以查看在节点上运行的一个或多个 Pod 和容器。 选择节点后,属性窗格会显示版本信息。
运行 Linux OS 的 Azure 容器实例虚拟节点显示在列表中最后一个 AKS 群集节点之后。 展开容器实例虚拟节点时,可以查看在节点上运行的一个或多个容器实例 Pod 和容器。 不会为节点(只为 Pod)收集和报告指标。
从展开的节点中,你可以从在节点上运行的 pod 或容器向下钻取到控制器来查看针对该控制器筛选的性能数据。 选择特定节点的“控制器”列下的值。
从页面顶部选择控制器或容器,查看这些对象的状态和资源使用率。 若要查看内存利用率,可在“指标”下拉列表中选择“内存 RSS”或“内存工作集”。 仅 Kubernetes 1.8 版和更高版本支持内存 RSS。 否则,Min % 的值会显示为 NaN %,NaN % 是一种数值数据类型,表示未定义或无法表示的值。
“内存工作集”显示包含的驻留内存和虚拟内存(缓存),是应用程序正在使用的内存的总和。 “内存 RSS”只显示主内存(只显示驻留内存,而不显示任何其他内存)。 此指标显示可用内存的实际容量。 驻留内存与虚拟内存之间有何差别?
- 驻留内存(也称为主内存)是可用于群集节点的实际计算机内存量。
- 虚拟内存是保留的硬盘空间(缓存),操作系统在遇到内存压力时,会使用这些空间将内存中的数据交换到磁盘,并在需要时将数据提回到内存。
默认情况下,性能数据基于过去六个小时的数据,但可以使用左上角的“时间范围”选项更改时间窗口。 还可以在百分位选择器中选择“Min”、“Avg”、“50th”、“90th”、“95th”和“Max”,在时间范围内筛选结果。
当鼠标悬停在“趋势”列下的条形图上方时,每一条都显示 15 分钟示例期间内的 CPU 或内存使用情况(具体取决于所选指标)。 通过键盘选择趋势图后,使用 Alt+PageUp 或 Alt+PageDown 键单独循环浏览每个条形。 显示的详细信息与将鼠标悬停在该条形上相同。
在下一个示例中,对于列表中的第一节点 aks-nodepool1-,其“容器”的值为 25。 此值表示部署的容器汇总总数。
此信息有助于快速确定群集中节点间的容器是否适当均衡。
下表描述了查看“节点”选项卡时显示的信息。
列 | 说明 |
---|---|
名称 | 主机的名称。 |
状态 | 节点状态的 Kubernetes 视图。 |
Min %、Avg %、50th %、90th %、95th %、Max % | 基于所选时段百分位的平均节点百分比。 |
最小值、平均值、第50百分位数、第90百分位数、第95百分位数、最大值 | 基于所选时段的平均节点实际值。 平均值根据为节点设置的 CPU/内存限制进行计算。 对于 Pod 和容器,平均值为主机报告的平均值。 |
容器 | 容器数量。 |
运行时间 | 表示节点启动或重启后的时间。 |
控制器 | 仅适用于容器和 Pod。 它显示驻留的控制器。 并非所有 Pod 都在控制器中,因此有些 Pod 可能会显示 N/A。 |
趋势 Min %、Avg %、50th %、90th %、95th %、Max % | 条形图趋势表示控制器的平均百分位指标百分比。 |
在展开名为“其他进程”的节点后,你可能会注意到一个工作负载。 它表示在节点上运行的非容器化进程,包括:
- 自行托管的或托管 Kubernetes 非容器化进程。
- 容器运行时进程。
- Kubelet。
- 节点上运行的系统进程。
- 其他在节点硬件或 VM 上运行的非 Kubernetes 工作负载。
其计算方法为:CAdvisor 中的总用量容器化进程的用量 - 。
在选择器中,选择“控制器”。
可以在此处查看控制器和容器实例虚拟节点控制器或未连接到控制器的虚拟节点 Pod 的性能运行状况。
行层次结构以控制器开始。 展开控制器时,可以查看一个或多个 Pod。 展开 Pod,最后一行显示分组到 Pod 的容器。 从扩展的控制器中,您可以深入查看它运行所在的节点,以及针对该节点过滤后的性能数据。 未连接到控制器的容器实例 Pod 在列表中最后列出。
选择特定控制器的“节点”列下的值。
下表描述了查看控制器时显示的信息:
列 | 说明 |
---|---|
名称 | 控制器的名称。 |
状态 | 容器完成运行并处于“正常”、“已终止”、“已失败”、“已停止”或“已暂停”等状态时的汇总状态。 如果容器仍在运行,但是状态未正确显示或者未被代理选择并且超出 30 分钟后仍未响应,则状态为“未知”。 下表提供了状态图标的更多详细信息。 |
Min %、Avg %、50th %、90th %、95th %、Max % | 每个实体在选定指标和百分位的平均百分比的汇总平均值。 |
最小值、平均值、第50百分位数、第90百分位数、第95百分位数、最大值 | 容器在选定百分位的平均 CPU millicore 或内存性能汇总。 平均值根据为 Pod 设置的 CPU/内存限制进行计算。 |
容器 | 控制器或 Pod 的容器总数。 |
重启数 | 容器重启计数汇总。 |
运行时间 | 表示容器启动后的时间。 |
节点 | 仅适用于容器和 Pod。 它显示驻留的控制器。 |
趋势 Min %、Avg %、50th %、90th %、95th %、Max % | 条形图趋势表示控制器的平均百分位指标。 |
状态字段中的图标指示容器的联机状态。
图标 | 状态 |
---|---|
![]() |
跑步 |
![]() |
“正在等待”或“已暂停” |
![]() |
上次报告正在运行但已超过 30 分钟未响应 |
![]() |
成功停止或无法停止 |
状态图标显示的计数基于 Pod 提供的数据。 它显示最差的两个状态。 将鼠标悬停在状态上时,它显示容器中所有 Pod 的汇总状态。 如果没有就绪状态,状态值会显示 (0) 。
在选择器中,选择“容器”。
在此处可查看 AKS 和容器实例容器的性能运行状况。
从容器中,可以向下钻取到某个 pod 或节点来查看针对该对象筛选的性能数据。 选择特定容器的“Pod”或“节点”列下的值。
下表描述了查看容器时显示的信息。
列 | 说明 |
---|---|
名称 | 控制器的名称。 |
状态 | 容器状态(如果有)。 接下来的表中提供状态图标的更多详细信息。 |
Min %、Avg %、50th %、90th %、95th %、Max % | 每个实体在选定指标和百分位的平均百分比汇总。 |
最小值、平均值、第50百分位数、第90百分位数、第95百分位数、最大值 | 容器在选定百分位的平均 CPU millicore 或内存性能汇总。 平均值根据为 Pod 设置的 CPU/内存限制进行计算。 |
Pod | Pod 驻留的容器。 |
节点 | 容器驻留的节点。 |
重启数 | 表示容器启动后的时间。 |
运行时间 | 表示容器启动或重启后的时间。 |
趋势 Min %、Avg %、50th %、90th %、95th %、Max % | 条形图趋势表示容器的平均百分位指标百分比。 |
其他进程
“节点”视图中的“其他进程”项旨在帮助你清楚地了解节点上资源使用率较高的根本原因。 此信息有助于区分容器化进程与非容器化进程的使用情况。 这些是在节点上运行的非容器化进程,包括以下各项:
- 自托管或托管 Kubernetes 非容器化进程。
- 容器运行时进程。
- Kubelet。
- 节点上运行的系统进程。
- 其他在节点硬件或 VM 上运行的非 Kubernetes 工作负载。
其他进程的值为 Total usage from CAdvisor - Usage from containerized process
。
状态
状态字段中的图标指示 Pod 的联机状态,如下表所述。
图标 | 状态 |
---|---|
![]() |
|
![]() |
“正在等待”或“已暂停” |
![]() |
上次报告正在运行但已超过 30 分钟未响应 |
![]() |
成功停止或无法停止 |
![]() |
“已失败”状态 |
监视和可视化网络配置
Azure 网络策略管理器包含信息丰富的 Prometheus 指标,可用于监视和更好地了解网络配置。 它在 Azure 门户或 Grafana 实验室中提供了内置的可视化效果。 有关详细信息,请参阅使用 Azure NPM 监视和可视化网络配置。
后续步骤
- 请参阅使用容器见解创建性能警报,了解如何创建在 CPU 和内存使用率过高时会发出的警报,为 DevOps 或操作进程和过程提供支持。
- 请参阅日志查询示例,以查看预定义的查询,以及有关群集警报、可视化或分析的评估或自定义示例。
- 请参阅监视器群集运行状况,了解如何查看 Kubernetes 群集的运行状况状态。