集成自建Prometheus实现网格监控

Prometheus是一款面向云原生应用程序的开源监控工具。本文介绍如何在ASM集成自建Prometheus实现网格监控。

前提条件

步骤一:配置网格数据指标

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Helm

  3. Helm页面的操作列,单击ack-prometheus-operator对应的更新

  4. 更新发布面板的YAML文本框中,修改additionalScrapeConfigs字段,然后单击确定

    YAML文件较长,您可以使用快捷键Ctrl+F搜索additionalScrapeConfigs字段进行修改。修改后的additionalScrapeConfigs字段如下:

    additionalScrapeConfigs:
    # Scrape config for envoy stats
    - job_name: 'envoy-stats'
      metrics_path: /stats/prometheus
      kubernetes_sd_configs:
      - role: pod
      relabel_configs:
      - source_labels: [__meta_kubernetes_pod_container_port_name]
        action: keep
        regex: '.*-envoy-prom'
      - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
        action: replace
        regex: ([^:]+)(?::\d+)?;(\d+)
        replacement: $1:15090
        target_label: __address__
      - action: labeldrop
        regex: __meta_kubernetes_pod_label_(.+)
      - source_labels: [__meta_kubernetes_namespace]
        action: replace
        target_label: namespace
      - source_labels: [__meta_kubernetes_pod_name]
        action: replace
        target_label: pod_name

步骤二:开启Prometheus

具体操作,请参见将监控指标采集到可观测监控Prometheus版

步骤三:产生监控数据

请求数据平面的服务,此处以Bookinfo为例,详细介绍请参见入门概述。进入Productpage页面,多次刷新页面,以产生监控数据。监控数据

结果验证

验证Envoy是否采集监控指标数据。

执行以下命令,返回监控指标数据,表示Envoy采集监控指标数据。若没有数据,则Envoy没有在采集监控指标数据。

details=$(kubectl get pod -l app=details -o jsonpath={.items..metadata.name})
kubectl exec $details -c istio-proxy -- curl -s localhost:15090/stats/prometheus |grep istio

查看Prometheus网格监控指标数据

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择网络 > 服务

  3. 服务页面找到Prometheus,单击Prometheus对应的External IP

  4. Prometheus页面输入istio_requests_total,单击Execute,显示以下页面所示结果。peomethus

查看Grafana网格监控指标数据

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择网络 > 服务

  3. 服务页面搜索找到Grafana,单击Grafana对应的External IP

  4. 在Grafana页面选择Istio Workload Dashboard,显示以下页面所示结果。3