在 Azure 托管的 Prometheus 中收集 Azure Kubernetes 服务 的 Istio 服务网格加载项工作负载指标

本指南介绍如何设置并使用 Azure 托管 Prometheus,从 Azure Kubernetes 集群上的 Istio 服务网格加载项工作负载中收集指标。

先决条件

启用适用于 Prometheus 的 Azure Monitor 托管服务

Azure Monitor 的 Prometheus 托管服务从 Azure Kubernetes 群集收集数据。 若要为 Prometheus 启用Azure Monitor托管服务,必须创建Azure Monitor工作区来存储指标:

export AZURE_MONITOR_WORKSPACE=<azure-monitor-workspace-name>

export AZURE_MONITOR_WORKSPACE_ID=$(az monitor account create \
    --name $AZURE_MONITOR_WORKSPACE \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --query id -o tsv)

启用 Prometheus 加载项

若要从 Kubernetes 群集收集 Prometheus 指标,请启用 Prometheus 加载项

az aks update --enable-azure-monitor-metrics --name $CLUSTER --resource-group $RESOURCE_GROUP --azure-monitor-workspace-resource-id $AZURE_MONITOR_WORKSPACE_ID

在 Azure Monitor 托管服务中自定义抓取 Prometheus 指标

在名为 prometheus-config 的文件中创建抓取配置,参照下面提供的示例。 此配置支持基于 Pod 注释的抓取,这允许 Prometheus 使用特定批注从 Pod 中自动发现和抓取指标。

重要

下面的抓取配置仅作示例。 我们 强烈建议 根据你的需求自定义它。 如果未进行调整,可能会导致频繁的指标收集以及增加数据存储产生的意外成本。

global: 
  scrape_interval: 30s
scrape_configs: 
- job_name: workload
  scheme: http
  kubernetes_sd_configs:
    - role: endpoints
  relabel_configs:
    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
      action: keep
      regex: true
    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
      action: replace
      target_label: __metrics_path__
      regex: (.+)
    - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
      action: replace
      regex: ([^:]+)(?::\d+)?;(\d+)
      replacement: $1:$2
      target_label: __address__ 

若要启用基于 Pod 注解的抓取,请创建 ConfigMapama-metrics-prometheus-config,以引用prometheus-config命名空间中的kube-system文件。

kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system

验证指标集合

  1. 配置访问权限:在Azure门户中导航到Azure Monitor工作区,并为自己创建角色分配,以授予工作区资源的“监视数据读取者”角色。

  2. 生成示例流量:向之前创建的产品页发送一些请求,例如:

    curl -s "http://${GATEWAY_URL_EXTERNAL}/productpage" | grep -o "<title>.*</title>"
    
  3. 在 Azure 门户中查看/查询指标:导航到 Azure Monitor 工作区下的 Prometheus 资源管理器,并查询指标。 下面的示例显示了查询 istio_requests_total结果。

    展示在 Prometheus 浏览器中执行示例查询的示意图。

删除资源

如果要清理 Istio 服务网格和入口(留下群集),请运行以下命令:

az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}

如果要清理根据 Istio 操作指南文档创建的所有资源,请运行以下命令:

az group delete --name ${RESOURCE_GROUP} --yes --no-wait