在服务网格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 | 请求的上报者,不同的上报者标签值不同:
|
source_workload | 源工作负载的名称。如果没有采集到标签值,则标签值为 |
source_workload_namespace | 源工作负载的名称空间。如果没有采集到标签值,则标签值为 |
source_principal | 流量源的对等主体。只有创建了对等身份验证时,才可以采集到该标签的值。 |
source_app | 根据源工作负载的应用程序标签标识源应用程序。如果没有采集到标签值,则标签值为 |
source_version | 源工作负载的版本。如果没有采集到标签值,则标签值为 |
source_cluster | 源工作负载的集群。 |
destination_namespace | 目标工作负载的名称空间。如果没有采集到标签值,则标签值为 |
destination_workload | 目标工作负载的名称。如果没有采集到标签值,则标签值为 |
destination_workload_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 | GRPC返回状态。 |
connection_security_policy | 请求的服务身份验证策略。 |
操作步骤
ASM实例版本为1.15.3.65以下
可选:开启Prometheus监控。
说明如果您已开启Prometheus监控,无需执行此步骤。
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在基本信息页面,单击右上角的功能设置。
在功能设置更新面板,选中开启采集 Prometheus 监控指标,按需选择开启方式,然后单击确定。
自定义指标。
在网格管理页面左侧导航栏,选择 ,然后单击创建。
在创建页面,进行相关配置,然后单击创建。
配置项
说明
匹配标签
配置名称为标签的名称,值为应用的名称。ASM将会根据配置的值匹配应用,自定义指标仅对该应用生效。
inboundSidecar
单击inboundSidecar,然后单击新增指标,配置入口流量的自定义标签。
指标名称:配置为空,表示对所有指标生效。
指标维度:单击新增指标维度,配置标签和表达式。
删除指标纬度的标签:配置需要删除指标维度的标签。
outboundSidecar
单击outboundSidecar,然后单击新增指标,配置出口流量的自定义标签。
指标名称:配置为空,表示对所有指标生效。
指标维度:单击新增指标维度,配置标签和表达式。
删除指标纬度的标签:配置需要删除指标维度的标签。
gateway
单击gateway,然后单击新增指标,配置网关的自定义标签。
指标名称:配置为空,表示对所有指标生效。
指标维度:单击新增指标维度,配置标签和表达式。
删除指标纬度的标签:配置需要删除指标维度的标签。
说明如果您只配置了inboundSidecar,没有配置outboundSidecar和gateway,表示仅入口流量采用自定义标签,出口流量和网关仍然使用默认的方式生成指标。
ASM实例版本为1.15.3.65及以上,1.17.2.35以下
ASM对原有的自定义Metrics页面进行了升级,更名为监控指标,提供更便捷的UI界面,提高您的配置效率。使用此功能需要您的ASM实例版本为v1.15.3.65-g97cc18dd-aliyun及以上。关于升级实例的具体操作,请参见升级ASM实例。
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在监控指标页面,单击指标设置页签,按需配置全局或自定义指标。
配置全局指标
ASM默认提供了一些全局指标,默认为开启状态。您可以按需选择是否启用相关指标,或对指标的维度进行修改。关于指标的说明,请参见指标说明。
操作
说明
开启或关闭全局指标
开启全局指标:单击全局页签,在目标指标右侧,选中CLIENT侧指标或SERVER侧指标列下的启用,然后单击保存。
关闭全局指标:单击全局页签,在目标指标右侧,取消选中CLIENT侧指标或SERVER侧指标列下的启用,然后单击保存。
修改指标维度
单击全局页签,在目标指标右侧,单击CLIENT侧指标或SERVER侧指标列下的编辑维度。
在自定义CLIENT 维度配置对话框,按需选中目标维度,单击确认,然后单击保存。
配置自定义指标
单击自定义页签,单击创建,进行相关配置,然后在页面下方,单击创建。关于指标的说明,请参见指标说明。
配置项
说明
命名空间
选择自定义监控指标生效的命名空间。
名称
输入自定义标签的名称。
工作负载选择
单击新增匹配标签,配置标签的名称和工作负载的名称。ASM将会根据配置项匹配应用,自定义指标仅对该应用生效。
指标设置
ASM默认提供了一些全局指标,默认为开启状态。您可以选择是否启用相关指标,或对指标的维度进行修改。
开启或关闭全局指标:
开启全局指标:在目标指标右侧,选中CLIENT侧指标或SERVER侧指标列下的启用。
关闭全局指标:在目标指标右侧,取消选中CLIENT侧指标或SERVER侧指标列下的启用。
修改维度:
在目标指标右侧,单击CLIENT侧指标或SERVER侧指标列下的编辑维度。
在自定义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 |