你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何使用 Azure Monitor 中的控制平面指标监视 Azure Kubernetes 服务(AKS)控制平面。
AKS 支持通过 Azure Monitor 平台指标免费获取的控制平面指标子集。 借助控制平面指标功能,可以查看关键控制平面组件(如 API 服务器等)、计划程序、自动缩放程序以及 AKS 中的控制器管理器的可用性和性能。 此功能还与 Prometheus 和 Azure Managed Grafana 的托管服务完全兼容。 可以使用这些指标最大程度地提高整体可观测性,并维护 AKS 群集的卓越运营。
控制平面平台指标
AKS 提供一些免费的控制平面指标,用于监视 API 服务器等。 所有 AKS 群集都会自动收集这些指标,不收取任何费用。 可以使用 Azure 门户中的 指标资源管理器分析指标 。 还可以使用指标数据创建基于指标的警报。
若要查看支持的控制平面平台指标的完整列表,请参阅 AKS 监视参考。
先决条件和限制
- 控制平面指标(预览版)功能仅支持 Azure Monitor 中适用于 Prometheus 的托管服务。
- 不支持 Azure 专用链接。
- 只能自定义默认
ama-metrics-settings-configmap.yaml的 configmap 文件。 不支持其他自定义。 - AKS 群集必须使用托管标识身份验证。
安装 aks-preview 扩展
重要说明
AKS 预览功能是可选择启用的自助功能。 预览功能是“按现状”和“按可用”提供的,不包括在服务级别协议和有限保证中。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
使用
aks-preview或az extension add命令安装或更新az extension updateAzure CLI 扩展:# Install the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension az extension update --name aks-preview
注册 AzureMonitorMetricsControlPlanePreview 功能标志
使用
AzureMonitorMetricsControlPlanePreview命令注册az feature register功能标志:az feature register --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"要过几分钟,状态才会显示为已注册。
使用
az feature show命令验证注册状态:az feature show --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"状态为 “已注册”时,使用
az provider register以下命令刷新 Microsoft.ContainerService 资源提供程序的注册:az provider register --namespace "Microsoft.ContainerService"
在 AKS 集群上启用控制平面指标
创建新集群或更新现有集群时,使用 Prometheus 插件的托管服务来启用控制平面指标。
注意
与从群集节点收集的指标不同,控制平面指标由不属于加载项的 ama-metrics 组件收集。 为 Prometheus 加载项启用 AzureMonitorMetricsControlPlanePreview 功能标志和托管服务可确保收集控制平面指标。 启用指标收集后,数据可能需要几分钟才能显示在工作区中。
新建 AKS 群集
若要了解如何从 AKS 群集收集 Prometheus 指标的托管服务,请参阅 为 AKS 群集启用 Prometheus 和 Grafana。 对于 AKS 群集,请完成 CLI 选项卡上所述的步骤。
现有 AKS 群集
如果群集已经安装了 Prometheus 加载项的托管服务,请更新群集,以确保它使用 az aks update 命令收集控制平面指标。
az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
查询控制平面指标
控制平面指标存储在群集区域的 Azure Monitor 工作区中。 可以直接在工作区中查询指标,也可以使用连接到工作区的 Azure 托管 Grafana 实例来查询指标。
在 Azure 门户中,转到 AKS 群集资源。
在左侧菜单中,选择“ 监视>监视器设置”。
转到链接到群集的 Azure Monitor 工作区。
在 Azure Monitor 工作区的“托管 Prometheus”下,使用 Prometheus 资源管理器查询指标。
自定义控制平面指标
AKS 包含一组为每个组件收集和存储的预配置指标。 默认情况下收集 API 服务器和 etcd 的指标。 可以通过修改 configmap 文件自定义所收集的指标列表。
默认目标包括以下值:
controlplane-apiserver = true
controlplane-cluster-autoscaler = false
controlplace-node-auto-provisioning = false
controlplane-kube-scheduler = false
controlplane-kube-controller-manager = false
controlplane-etcd = true
所有 configmap 文件都应应用于任何群集的 kube-system 命名空间。
自定义引入配置文件
可以为收集的指标自定义引入文件。 有关详细信息,请参阅适用于 Prometheus 的托管服务中控制平面指标的最小引入配置文件。
仅从默认目标引入最小指标
- 设置为
default-targets-metrics-keep-list.minimalIngestionProfiletrue,因此它只引入每个默认目标的最小指标集:controlplane-apiserver和controlplane-etcd。
从所有目标引入所有指标
下载
ama-metrics-settings-configmap.yamlconfigmap 文件。重命名 configmap 文件
configmap-controlplane.yaml。将
minimalingestionprofile设置为false。在
default-scrape-settings-enabled下,验证你要抓取的目标是否设置为true。可以设置的目标包括:
controlplane-apiservercontrolplane-cluster-autoscalercontrolplace-node-auto-provisioningcontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd
使用
kubectl apply命令应用 configmap 文件:kubectl apply -f configmap-controlplane.yaml
应用配置后,从控制平面中抓取的指定目标的指标需要几分钟时间才能显示在 Azure Monitor 工作区中。
引入超过最小量的指标
minimalingestionprofile使用此设置有助于减少指标的引入量。 如果设置为 true,则仅收集默认记录规则、默认警报和默认仪表板中显示的指标。
下载
ama-metrics-settings-configmap.yamlconfigmap 文件。重命名 configmap 文件
configmap-controlplane.yaml。将
minimalingestionprofile设置为true。在
default-scrape-settings-enabled下,验证你要抓取的目标是否设置为true。可以设置的目标包括:
controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-node-auto-provisioningcontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd
在
default-targets-metrics-keep-list下,指定true目标的指标列表。例如:
controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds|apiserver_longrunning_requests"使用
kubectl apply命令应用 configmap 文件:kubectl apply -f configmap-controlplane.yaml
应用配置后,从控制平面中抓取的指定目标的指标需要几分钟时间才能显示在 Azure Monitor 工作区中。
从特定目标引入特定指标
下载
ama-metrics-settings-configmap.yamlconfigmap 文件。重命名 configmap 文件
configmap-controlplane.yaml。将
minimalingestionprofile设置为false。在
default-scrape-settings-enabled下,核实要抓取的目标是否已设置为true。可以设置的目标包括:
controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-node-auto-provisioningcontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd
在
default-targets-metrics-keep-list下,指定true目标的指标列表。例如:
controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds|apiserver_longrunning_requests"应用 configmap 文件:
kubectl apply -f configmap-controlplane.yaml
应用配置后,从控制平面中抓取的指定目标的指标需要几分钟时间才能显示在 Azure Monitor 工作区中。
排查控制平面指标问题
确保已启用 AzureMonitorMetricsControlPlanePreview 功能标志,并确保 ama-metrics Pod 正在运行。
注意
Prometheus 托管服务的 故障排除方法 在此方案中不直接应用。 抓取控制平面的组件不包括在适用于 Prometheus 加载项的托管服务中。
Configmap 文件格式:请确保在 configmap 文件中使用正确的格式。 验证字段
default-targets-metrics-keep-listminimal-ingestion-profile、default-scrape-settings-enabled字段和其他字段是否已正确填充其预期值。将控制平面与数据平面隔离:首先将一些与节点相关的指标
true设置为,然后验证指标是否已转发到工作区。 完成这些步骤有助于确定问题是否是由抓取控制平面指标引起的。引入的事件数发生更改:应用更改后,可以在 Azure 门户中打开指标资源管理器。 转到群集的 Azure Monitor 概述窗格,或转到所选群集的 “监视 ”部分。 检查每分钟引入的事件数是否增加或减少。 此信息可以帮助你确定特定指标是否缺失,或者是否缺少所有指标。
未公开特定指标:在某些情况下,会记录指标,但不会从目标公开指标,也不会转发到 Azure Monitor 工作区。 在这种情况下,必须验证是否将其他指标转发到工作区。
注意
如果要收集
apiserver_request_duration_seconds指标或其他 Bucket 指标,必须在直方图系列中设置整个系列:controlplane-apiserver = "apiserver_request_duration_seconds_bucket|apiserver_request_duration_seconds_sum|apiserver_request_duration_seconds_count"无法访问 Azure Monitor 工作区:启用加载项时,可以指定无法访问的现有工作区。 在这种情况下,似乎不会收集和转发指标。 确保在启用加载项或创建群集时创建用于收集指标的新工作区。
在 AKS 群集上禁用控制平面指标
可以通过禁用适用于 Prometheus 加载项的托管服务并取消注册 AzureMonitorMetricsControlPlanePreview 功能标志,随时禁用控制平面指标。
使用
az aks update命令删除抓取 Prometheus 指标的指标加载项:az aks update --disable-azure-monitor-metrics --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP若要禁止 AKS 群集抓取控制平面指标,请通过
AzureMonitorMetricsControlPlanePreview命令取消注册az feature unregister功能标志:az feature unregister "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"
常见问题
是否可以使用自承载 Prometheus 来抓取控制平面指标?
否。 目前无法使用自承载 Prometheus 来抓取控制平面指标。 自承载 Prometheus 只能抓取单个实例,具体取决于负载均衡器,因此指标不可靠。 通常,控制平面指标的多个副本只能通过 Prometheus 的托管服务可见。
为什么控制平面指标中不提供用户代理?
在 AKS 中, 控制平面指标 没有用户代理。 用户代理只能通过在 诊断设置中访问的控制平面日志使用。