2022年10月,微软在全球Ignite大会上发布了Azure上Prometheus托管服务,即 Azure Monitor managed service for Prometheus。通过Azure上托管的Prometheus+Grafana,可以近一步提升Azure Kubernetes Service的可观测性。本文通过分享将Azure Monitor集成Azure托管的Prometheus+Grafana提升运维AKS的监控体验,从而有效提升企业AKS运维的高可用性、可靠性和性能。
如果您已经有了AKS集群及已经在其之上部署了可供测试的容器应用,可以跳过此段,直接进入
-
使用Azure CLI命令行工具登陆Azure
az cloud set --name AzureCloud az login
- 设置Azure 默认订阅并创建实验所需Azure资源组
az account set --subscription xxxxxxxxxxxx-xxxx-xxxx-xxxxxxxxx
-
验证是否已在订阅中注册了 Microsoft.OperationsManagement,Microsoft.OperationalInsights和Microsoft.Insights提供程序。 这些是支持容器简介所需的 Azure Resource Provider。 若要检查注册状态,请运行以下命令:
az provider show -n Microsoft.OperationsManagement -o table az provider show -n Microsoft.OperationalInsights -o table az provider show -n Microsoft.Insights -o table
-
如果未注册,请使用以下命令注册:
az provider register --namespace Microsoft.OperationsManagement az provider register --namespace Microsoft.OperationalInsights az provider register --namespace Microsoft.Insights
- 通过以下命令创建AKS集群,并带有 --enable-addons monitoring 和--enable-msi-auth-for-monitoring 参数,目的是启用带有托管标识身份验证的 Azure Monitor容器见解(预览版)
az aks create -g rg-aksmonitoringtest -n aksmonitoringtest --enable-managed-identity --node-count 1 --enable-addons monitoring --enable-msi-auth-for-monitoring --generate-ssh-keys
- 使用 az aks get-credentials 命令将 kubectl 配置为连接到你的Kubernetes群集
az aks get-credentials --resource-group rg-aksmonitoringtest --name aksmonitoringtest
- 通过使用 kubectl get 命令验证与群集之间的连接。
kubectl get nodes
- 部署测试应用(也可以随意部署其他容器样例)
kubectl apply -f https://raw.githubusercontent.com/microsoft/gps-csa-tech-stack/main/Monitoring-AKS-with-Azure%20Managed%20Prometheus-and-Grafana/yaml/azure-vote.yaml
- 使用带有 --watch 参数的 kubectl get service 命令来监视K8Sservice创建进度进度。观测输出的External-IP
kubectl get service azure-vote-front --watch
- 复制EXTERNAL-IP的IP地址到浏览器,将显示该应用网页。到目前为止,AKS集群和一个简单的应用均创建部署成功。
- 首先通过Azure门户创建Azur Grafana托管服务
- 根据向导输入相关的参数,然后点击 "审阅+创建"
- 在创建好的Grafana托管服务的"概述"界面上,查看Grafana终结点,点击进去,查看Dashboard
- 目前还没有集成Prometheus,还不能观察AKS指标。
- 在Azure门户里,进入AKS集群管理界面的"见解"项,点击 "启用Prometheus"
- 根据向导继续输入参数并集成之前创建的 "Grafana工作区",之后点击 "配置"
- 为收集AKS集群的监控指标,Prometheus会生成一个基于K8SDeamonSet的守护资源workload,即ama-metrics-node。通过以下命令验证该DeamonSet是否部署成功。
kubectl get ds ama-metrics-node --namespace=kube-system
- 到目前为止,Prometheus与Grafana在该AKS集群的集成、配置及启用已经完成。接下来从AKS监视页面点击"查看Grafana工作区"查看监控指标。
- 点击 "浏览仪表板",之后根据您的Azure身份管理策略可能需要进行认证。
- 默认情况下,Managed Prometheus已经显示在Grafana Dashboards上,无需近一步配置数据源。在Managed Prometheus列点击"Go to folder ".
- 可监控的AKS资源类别列了出来,点击Pod来查看一下指标。
- Pod相关指标列了出来。Grafana可视化监控功能非常强大,可以近一步设置Grafana Dashboards,来客户化显示所需的指标。
Prometheus与Grafana集成监控方案在云原生领域非常流行,功能非常丰富,本文仅仅通过简单的配置实现两者集成,技术爱好者们如果感兴趣的话,可以客户化监控更多的指标,进阶了解功能体系和技术内容,可以访问以下文档: