文档

Mesh 对接 Prometheus 解决方案

更新时间:
一键部署

Mesh 的各项监控指标支持对接到 Prometheus 等开源组件,您在使用 Mesh 产品时,可以通过自运维监控方案捕获监控指标。

方案概述

MOSN 及 DSRConsole、DRM、OpenAPI、Pilot、Citadel、ACVIP、intelliproxy、OSP 等控制面组件均遵照 Prometheus 的规范格式暴露监控指标(包括自身运行状况的指标),例如 JVM、CPU、内存、协程等信息,以及与自身组件功能相关的自定义指标。

您在使用 Prometheus 时,可以采用单独部署 Prometheus 及 Grafana 的形式,然后在 Prometheus 的配置文件里配置各个组件的 Job。只要 Job 中的 relabel 能够与各个要监控的组件的 annotation、label 等匹配上,就能正确将监控指标收集上来。您也可以采用 Operator 的方式部署,监控指标的获取是利用 PodMonitor 或 ServiceMonitor 形式,之后配置 Grafana 大盘对监控指标进行展示。

方案实现

Prometheus 改造点

Mesh 能很好地支持 Prometheus,无需改造。

Mesh 改造点

Mesh 各个控制面组件已经暴露了如下监控指标:

  • 控制面监控指标

    控制面组件

    metrics 指标 - 资源监控

    metrics 指标 - 应用监控

    Pilot

    • process_resident_memory_bytes

    • process_virtual_memory_bytes

    • go_memstats_alloc_bytes

    • go_memstats_heap_inuse_bytes

    • go_memstats_stack_inuse_bytes

    • process_cpu_seconds_totalgo_goroutines

    • pilot_xds_new:Sidecar 连接数

    • pilot_total_xds_internal_errors:XDS 错误总数

    • pilot_xds_write_timeout:XDS 写入超时

    • pilot_xds_push_timeout:XDS 推送超时

    • pilot_xds_push_errors_new:推送到 Sidecar 的错误数

      支持的类型如下:

      {type="push_abort"}
      {type="retry"}
      {type="unrecoverable"}
    • pilot_xds_pushes_new:XDS 推送总数

      支持的类型如下:

      {type="cds"}
      {type="cds_senderr"}
      {type="eds"} 
      {type="eds_senderr"}
      {type="lds"} 
      {type="lds_senderr"} 
      {type="rds"} 
      {type="rds_senderr"}

    Citadel

    • process_resident_memory_bytes

    • process_virtual_memory_bytes

    • go_memstats_alloc_bytes

    • go_memstats_heap_inuse_bytes

    • go_memstats_stack_inuse_bytes

    • process_cpu_seconds_totalgo_goroutines

    • citadel_server_authentication_failure_count:认证失败的次数

    • citadel_server_csr_count:CSR 请求的次数

    • citadel_server_success_cert_issuance_count:正确签证书的次数

    operator、operator-VM

    • process_resident_memory_bytes

    • process_virtual_memory_bytes

    • go_memstats_alloc_bytes

    • go_memstats_heap_inuse_bytes

    • go_memstats_stack_inuse_bytes

    • process_cpu_seconds_totalgo_goroutines

    • operator:

      • Sidecar 注入请求数

      • Sidecar 注入成功数

      • Sidecar 注入失败数

      • Sidecar 注入失败原因

    • operator-vm:

      • 虚拟机 Sidecar 注入请求数

      • 虚拟机 Sidecar 注入成功数

      • 虚拟机 Sidecar 注入失败数

      • 虚拟机 Sidecar 注入失败原因

      • agent 注册数

      • 当前持有 agent 节点个数

    DSRConsole

    • CPU

    • 内存

    • JVM 线程数量

    • GC 数量统计

    • HTTP 请求总数

    • HTTP 请求成功数

    • HTTP 请求失败数

    • RPC 调用数

    • RPC 调用成功数

    • RPC 调用失败数

    • 服务治理规则下发数

    • 服务治理规则下发成功数

    • 服务治理规则下发失败数

    DRM

    • CPU

    • 内存

    • JVM 线程数量

    • GC 数量统计

    • DRM 推送指标

      drm_push{dataId=,target_ip=,instance_id=,status=}
    • DRM 客户端连接数

    • 下发配置时间

    OpenAPI

    • CPU

    • 内存

    • JVM 线程数量

    • GC 数量统计

    • HTTP 请求总数

    • HTTP 请求成功数

    • HTTP 请求失败数

    • 服务治理规则下发数

    • 服务治理规则下发成功数

    • 服务治理规则下发失败数

    • 与 k8s 连接状况

    • OpenAPI 调用次数

    OSP

    • CPU

    • 内存

    • JVM 线程数量

    • GC 数量统计

    • HTTP 请求总数

    • HTTP 请求成功数

    • HTTP 请求失败数

    • RPC 调用数

    • RPC 调用成功数

    • RPC 调用失败数

    • 服务治理规则下发数

    • 服务治理规则下发成功数

    • 服务治理规则下发失败数

    intelliproxy

    • CPU

    • 内存

    • JVM 线程数量

    • GC 数量统计

    • 请求总量(支持按域名筛选)

      http_server_requests_seconds_count
    • 请求成功量

      http_server_requests_seconds_count - tomcat_global_error_total
    • 请求失败量

      tomcat_global_error_total
    • 请求平均耗时

      http_server_requests_seconds_sum / http_server_requests_seconds_count

    ACVIP

    • CPU

    • 内存

    • JVM 线程数量

    • GC 数量统计

    • 每个节点的健康状态

      acvip_nodes_health{host_ip=}
    • 每个节点负责的域名个数

      acvip_nodes_domains{host_ip=}
    • 每个域名的 IP 总数(已经开启的)

      acvip_domain_config_ips{domain=}
    • 健康的 IP 总数

      acvip_domain_healthy_ips{domain=}
    • 不健康的 IP 总数

      acvip_domain_unhealthy_ips{domain=}

  • 数据面监控指标

    监控指标

    说明

    MOSN 应用接入数

    展示接入的 MOSN 应用数量。

    MOSN 服务器数量

    展示 MOSN 的服务器数量。

    错误码分类

    展示所有的错误码分类。

    不同应用错误码分类

    根据不同应用展示错误码分类。

    应用 MOSN 系统指标

    展示 MOSN 系统指标,例如 CPU、内存、TCP 连接数、UDP 连接数等。

    CPU Util 使用率

    展示 MOSN 的 CPU 使用率。

    应用 MOSN MEM_UTIL TOP 实例

    展示 MOSN 的内存使用排名。

    应用 MOSN_RT TOP 实例

    展示 MOSN 的响应时间排名。

    MOSN GoRoutine Top

    展示 MOSN 进程的 GoRoutine 数量排名。

    MOSN thread Top

    展示 MOSN 进程的 thread 数量排名。

使用步骤

  1. 在 Prometheus 中修改配置文件。

    Prometheus 使用 PodMonitor 形式进行监控,各个组件需要适应各自的 PodMonitor YAML。在 Prometheus 的配置文件里也需要配置 PodMonitorselector 来发现 PodMonitor。示例如下:

    #DsrConsole:Prometheus 端口为 8080
    
    apiVersion: monitoring.coreos.com/v1
    kind: PodMonitor
    metadata:
      name: dsrconsole
      labels:
        team: frontend
      namespace: monitoring
    spec:
      namespaceSelector:
        any: true
      podMetricsEndpoints:
        - port: metrics #请根据行内实际情况修改
          path: /actuator/prometheus
      selector:
        matchLabels:
          app: dsrconsole
    
    
  2. 在 Grafana 中配置数据源。

    1. 登录 Grafana 控制台。

    2. 在左侧导航栏,选择 配置 > Data Sources,然后单击 Add Data Sources

    3. 选择数据源为 Prometheus,然后按照实际环境配置数据源。

      配置示例如下:Image 8

    4. 单击 Save & Test

效果展示

  • 数据面监控大盘Image 1

  • 服务治理监控大盘Image 2

  • Pilot 监控大盘Image 3

  • Citadel 监控大盘Image 4

  • OpenAPI 监控大盘Image 5

  • sidecar-operator 监控大盘Image 6

  • intelliproxy 监控大盘

    Image 7

  • 本页导读 (0)
文档反馈