在服务网格ASM开启采集Prometheus监控指标后,Envoy会输出默认的监控指标。ASM支持使用自定义Metric的功能针对性输出监控指标,支持自定义网格级别、命名空间级别、工作负载级别的监控指标。本文介绍如何在服务网格ASM中自定义Metrics。

背景信息

Istio会默认生成监控指标,每个监控指标包含标签。以下介绍Istio会生成的指标:
  • 对于HTTP、HTTP/2和GRPC流量,Istio会生成以下指标:
    Request Count (istio_requests_total): This is a COUNTER incremented for every request handled by an Istio proxy.
    Request Duration (istio_request_duration_milliseconds): This is a DISTRIBUTION which measures the duration of requests.
    Request Size (istio_request_bytes): This is a DISTRIBUTION which measures HTTP request body sizes.
    Response Size (istio_response_bytes): This is a DISTRIBUTION which measures HTTP response body sizes.
    gRPC Request Message Count (istio_request_messages_total): This is a COUNTER incremented for every gRPC message sent from a client.
    gRPC Response Message Count (istio_response_messages_total): This is a COUNTER incremented for every gRPC message sent from a server.
  • 对于TCP流量,Istio生成以下指标:
    Tcp Bytes Sent (istio_tcp_sent_bytes_total): This is a COUNTER which measures the size of total bytes sent during response in case of a TCP connection.
    Tcp Bytes Received (istio_tcp_received_bytes_total): This is a COUNTER which measures the size of total bytes received during request in case of a TCP connection.
    Tcp Connections Opened (istio_tcp_connections_opened_total): This is a COUNTER incremented for every opened connection.
    Tcp Connections Closed (istio_tcp_connections_closed_total): This is a COUNTER incremented for every closed connection.
每个指标都会包含标签,以下为每个Istio指标默认包含的标签:
DefaultStatTags=["reporter","source_namespace","source_workload","source_workload_namespace","source_principal","source_app","source_version","source_app","source_version","source_cluster",destination_namespace","destination_principal","destination_app","destination_version","destination_service","destination_service_name","destination_service_namespace","destination_port","destination_cluster","request_protocol","request_operation","request_host","response_flags","grpc_response_status","connection_security_policy","source_canonical_service","destination_canonical_service","source_canonical_revision","destination_canonical_revision"]

标签含义

标签 含义
reporter 请求的上报者,不同的上报者标签值不同:
  • 如果上报者来自服务器Istio代理,则标签值为destination
  • 如果上报者来自客户端Istio代理或网关,则标签值为source
source_workload 控制源的源工作负载的名称。如果没有采集到标签值,则标签值为unknown
source_workload_namespace 源工作负载的名称空间。如果没有采集到标签值,则标签值为unknown
source_principal 流量源的对等主体。只有创建了对等身份验证时,才可以采集到该标签的值。
source_app 根据源工作负载的应用程序标签标识源应用程序。如果没有采集到标签值,则标签值为unknown
source_version 源工作负载的版本。如果没有采集到标签值,则标签值为unknown
source_cluster 源工作负载的集群。
destination_namespace 目标工作负载的名称空间。如果没有采集到标签值,则标签值为unknown
destination_workload 目标工作负载的名称。如果没有采集到标签值,则标签值为unknown
destination_workload_namespace 目标工作负载的名称空间。如果没有采集到标签值,则标签值为unknown
destination_principal 通信目的地的对等主体。只有创建了对等身份验证时,才可以采集到该标签的值。
destination_app 根据目标工作负载的应用程序标签标识目标应用程序。如果没有采集到标签值,则标签值为unknown
destination_version 目标工作负载的版本。如果没有采集到标签值,则标签值为unknown
destination_service 负责传入请求的目标服务主机。
destination_service_name 目标服务名称。
destination_service_namespace 目标服务的名称空间。
destination_port 目标端口。
destination_cluster 目标工作负载的集群。
request_protocol 请求的协议。
request_operation 请求的操作。
request_host 请求的主机。
response_flags 有关来自代理的响应或连接的其它详细信息。
grpc_response_status GRPC返回状态。
connection_security_policy 请求的服务身份验证策略。

按照网格级别自定义监控指标

按照网格级别自定义监控指标将会对网格全局进行生效。

  1. 开启Prometheus监控。
    说明 如果您已开启Prometheus监控,无需执行此步骤。
    1. 登录ASM控制台
    2. 在左侧导航栏,选择服务网格 > 网格管理
    3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理
    4. 在网格管理页面选择网格实例 > 基本信息
    5. 基本信息页面单击右上角的功能设置
    6. 功能设置更新面板选中开启采集Prometheus监控指标,选中启用已有Prometheus,然后单击确定
  2. 在网格管理页面选择可观测性管理 > 自定义Metrics,在右侧页面单击创建
  3. 创建页面设置命名空间为istio-system。
  4. 单击inboundSidecar右侧的展开图标,单击新增指标
  5. 设置指标名称为空,单击新增指标维度,输入标签表达式,以及您想删除的标签。
    设置指标名称为空,表示所有指标都将采集指定的标签。
  6. 参考步骤4和步骤5设置outboundSidecar和gateway,然后单击创建
    如果您设置了inboundSidecar,没有设置outboundSidecargateway,表示仅入口流量采用自定义标签,出口流量和网关仍然使用默认的方式生成指标。

按照命名空间级别自定义监控指标

仅指定的命名空间会按照设置采集监控指标,其他命名空间仍然按照默认设置进行采集。

  1. 关闭Prometheus监控。
    如果您开启了Prometheus监控,然后再自定义监控指标,将会产生两条重复的指标。
    说明 如果您未开启Prometheus监控,无需执行此步骤。
    1. 登录ASM控制台
    2. 在左侧导航栏,选择服务网格 > 网格管理
    3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理
    4. 在网格管理页面选择网格实例 > 基本信息
    5. 基本信息页面单击右上角的功能设置
    6. 功能设置更新面板取消选中开启采集Prometheus监控指标,然后单击确定
  2. 在网格管理页面选择可观测性管理 > 自定义Metrics,在右侧页面单击创建
  3. 创建页面选择命名空间,设置名称
  4. 单击inboundSidecar右侧的展开图标,单击新增指标
  5. 设置指标名称,单击新增指标维度,输入标签表达式,以及您想删除的标签。
  6. 参考步骤4和步骤5设置outboundSidecar,然后单击创建
    如果您设置了inboundSidecar,没有设置outboundSidecar,表示仅入口流量采用自定义标签,出口流量仍然使用默认的方式生成指标。

按照工作负载级别自定义监控指标

仅指定的工作负载会按照设置采集监控指标,其他工作负载仍然按照默认设置进行采集。

  1. 关闭Prometheus监控。
    如果您开启了Prometheus监控,然后再自定义监控指标,将会产生两条重复的指标。
    说明 如果您未开启Prometheus监控,无需执行此步骤。
    1. 登录ASM控制台
    2. 在左侧导航栏,选择服务网格 > 网格管理
    3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理
    4. 在网格管理页面选择网格实例 > 基本信息
    5. 基本信息页面单击右上角的功能设置
    6. 功能设置更新面板取消选中开启采集Prometheus监控指标,然后单击确定
  2. 在网格管理页面选择可观测性管理 > 自定义Metrics,在右侧页面单击创建
  3. 创建页面选择命名空间,设置名称,单击新增匹配标签,设置名称为app,为应用的名称。
    ASM将会根据设置的值匹配应用,表示自定义指标仅对该应用生效。
  4. 单击inboundSidecar右侧的展开图标,单击新增指标
  5. 设置指标名称,单击新增指标维度,输入标签表达式,以及您想删除的标签。
  6. 参考步骤4和步骤5设置outboundSidecar,然后单击创建
    如果您设置了inboundSidecar,没有设置outboundSidecar,表示仅入口流量采用自定义标签,出口流量仍然使用默认的方式生成指标。