在ASM中自定义监控指标

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

前提条件

已添加集群到ASM实例。具体操作,请参见添加集群到ASM实例

背景信息

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

请求的服务身份验证策略。

操作步骤

ASM实例版本为1.15.3.65以下

  1. 可选:开启Prometheus监控。

    说明

    如果您已开启Prometheus监控,无需执行此步骤。

    1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

    2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格实例 > 基本信息

    3. 基本信息页面,单击右上角的功能设置

    4. 功能设置更新面板,选中开启采集 Prometheus 监控指标,按需选择开启方式,然后单击确定

  2. 自定义指标。

    1. 在网格管理页面左侧导航栏,选择可观测性管理中心 > 自定义Metrics,然后单击创建

    2. 创建页面,进行相关配置,然后单击创建

      配置项

      说明

      匹配标签

      配置名称为标签的名称,为应用的名称。ASM将会根据配置的值匹配应用,自定义指标仅对该应用生效。

      inboundSidecar

      单击inboundSidecar,然后单击新增指标,配置入口流量的自定义标签。

      • 指标名称:配置为空,表示对所有指标生效。

      • 指标维度:单击新增指标维度,配置标签表达式

      • 删除指标纬度的标签:配置需要删除指标维度的标签。

      outboundSidecar

      单击outboundSidecar,然后单击新增指标,配置出口流量的自定义标签。

      • 指标名称:配置为空,表示对所有指标生效。

      • 指标维度:单击新增指标维度,配置标签表达式

      • 删除指标纬度的标签:配置需要删除指标维度的标签。

      gateway

      单击gateway,然后单击新增指标,配置网关的自定义标签。

      • 指标名称:配置为空,表示对所有指标生效。

      • 指标维度:单击新增指标维度,配置标签表达式

      • 删除指标纬度的标签:配置需要删除指标维度的标签。

      配置inboundSidecar
      说明

      如果您只配置了inboundSidecar,没有配置outboundSidecargateway,表示仅入口流量采用自定义标签,出口流量和网关仍然使用默认的方式生成指标。

ASM实例版本为1.15.3.65及以上,1.17.2.35以下

ASM对原有的自定义Metrics页面进行了升级,更名为监控指标,提供更便捷的UI界面,提高您的配置效率。使用此功能需要您的ASM实例版本为v1.15.3.65-g97cc18dd-aliyun及以上。关于升级实例的具体操作,请参见升级ASM实例

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择可观测管理中心 > 监控指标

  3. 监控指标页面,单击指标设置页签,按需配置全局自定义指标。

    • 配置全局指标

      ASM默认提供了一些全局指标,默认为开启状态。您可以按需选择是否启用相关指标,或对指标的维度进行修改。关于指标的说明,请参见指标说明

      操作

      说明

      开启或关闭全局指标

      • 开启全局指标:单击全局页签,在目标指标右侧,选中CLIENT侧指标SERVER侧指标列下的启用,然后单击保存

      • 关闭全局指标:单击全局页签,在目标指标右侧,取消选中CLIENT侧指标SERVER侧指标列下的启用,然后单击保存

      修改指标维度

      1. 单击全局页签,在目标指标右侧,单击CLIENT侧指标SERVER侧指标列下的编辑维度

      2. 自定义CLIENT 维度配置对话框,按需选中目标维度,单击确认,然后单击保存

      全局指标
    • 配置自定义指标

      单击自定义页签,单击创建,进行相关配置,然后在页面下方,单击创建。关于指标的说明,请参见指标说明

      配置项

      说明

      命名空间

      选择自定义监控指标生效的命名空间。

      名称

      输入自定义标签的名称。

      工作负载选择

      单击新增匹配标签,配置标签的名称和工作负载的名称。ASM将会根据配置项匹配应用,自定义指标仅对该应用生效。

      指标设置

      ASM默认提供了一些全局指标,默认为开启状态。您可以选择是否启用相关指标,或对指标的维度进行修改。

      • 开启或关闭全局指标:

        • 开启全局指标:在目标指标右侧,选中CLIENT侧指标SERVER侧指标列下的启用

        • 关闭全局指标:在目标指标右侧,取消选中CLIENT侧指标SERVER侧指标列下的启用

      • 修改维度:

        1. 在目标指标右侧,单击CLIENT侧指标SERVER侧指标列下的编辑维度

        2. 自定义CLIENT 维度配置对话框,按需选中目标维度,然后单击确认

      自定义指标
重要
  • 通过选择器可以选择一个命名空间内的单个工作负载的指标配置。该选择器支持基于标签选择工作负载。

  • 同一命名空间下,以下配置无效:

    • 使用选择器,为同一个工作负载创建多个自定义指标(Telemetry CR)。

    • 创建多个自定义指标,但未指定选择器。

更多信息,请参见Workload Selection

ASM实例版本为1.17.2.35及以上

具体操作,请参见可观测配置

指标说明

ASM监控指标的说明如下。更多信息,请参见MetricSelector.IstioMetric

说明

ASM网关仅支持导出CLIENT侧指标,Sidecar可以导出CLIENT侧和SERVER侧指标。

指标

说明

在Prometheus下对应的指标

ALL_METRICS

表示所有Istio默认指标。

-

REQUEST_COUNT

为HTTP、HTTP/2和GRPC流量生成的应用程序请求计数器。

istio_requests_total

REQUEST_DURATION

为HTTP、HTTP/2和GRPC流量生成的请求持续时间直方图。

istio_request_duration_milliseconds

REQUEST_SIZE

为HTTP、HTTP/2和GRPC流量生成的请求Body大小的直方图。

istio_request_bytes

RESPONSE_SIZE

为HTTP、HTTP/2和GRPC流量生成的响应Body大小的直方图。

istio_response_bytes

TCP_OPENED_CONNECTIONS

在工作负载的生命周期内打开的TCP连接计数器。

istio_tcp_connections_opened_total

TCP_CLOSED_CONNECTIONS

在工作负载的生命周期内关闭的TCP连接计数器。

istio_tcp_connections_closed_total

TCP_SENT_BYTES

在通过TCP连接进行响应期间发送的字节计数器。

istio_tcp_sent_bytes_total

TCP_RECEIVED_BYTES

通过TCP连接请求期间接收的字节数。

istio_tcp_received_bytes_total

GRPC_REQUEST_MESSAGES

从客户端发送的每条gRPC消息,计数器都会递增。

istio_request_messages_total

GRPC_RESPONSE_MESSAGES

从服务器发送的每条gRPC消息,计数器都会递增。

istio_response_messages_total