Istio收集的监控指标(metrics)包括以下六类:
·请求计数(Request Count):这是一个COUNTER,随Istio代理处理的每个请求递增。
·请求持续时间(Request Duration):这是一个DISTRIBUTION,测量请求的持续时间。
·请求大小(Request Size):这是一个DISTRIBUTION,测量HTTP请求的body大小。
·响应大小(Response Size):这是一个DISTRIBUTION,测量HTTP响应body的大小。
·Tcp发送字节数(Tcp Byte Sent):这是一个COUNTER,测量在TCP连接场景下响应期间发送的总字节数,由服务端代理测量。
·Tcp接收字节数(Tcp Byte Received):这是一个COUNTER,测量在TCP连接场景下请求期间接收的总字节数,由服务端代理测量。
其中,每个指标包含了以下维度:
1)报告者(Reporter):这是请求报告者的标识符。当报告来自服务端Istio代理时设置为destination,来自客户端Istio代理时设置为source,如下所示:
reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")
2)源工作负载(Source Workload):标识了控制源的源工作负载名称,如下所示:
source_workload: source.workload.name | "unknown"
3)源工作负载命名空间(Source Workload Namespace):标志了源工作负载的命名空间,如下所示:
source_workload_namespace: source.workload.namespace | "unknown"
4)源主体(Source Principal):标识了流量来源的对等主体。在使用对等身份验证时设置,如下所示:
source_principal: source.principal | "unknown"
5)源应用(Source App):标识了源应用(基于源工作负载的app标签),如下所示:
source_app: source.labels["app"] | "unknown"
6)源版本(Source Version):标识了源工作负载的版本,如下所示:
source_version: source.labels["version"] | "unknown"
7)目的工作负载(Destination Workload):标识了目的工作负载的名称,如下所示:
destination_workload: destination.workload.name | "unknown"
8)目的工作负载命名空间(Destination Workload Namespace):标识了目的工作负载的命名空间,如下所示:
destination_workload_namespace: destination.workload.namespace | "unknown"
9)目的主体(Destination Principal):标识了流量目的对等主体。当使用对等身份认证时设置,如下所示:
destination_principal: destination.principal | "unknown"
10)目的应用(Destination App):标识了目的应用(基于目的工作负载的app标签),如下所示:
destination_app: destination.labels["app"] | "unknown"
11)目的版本(Destination Version):标识了目的工作负载的版本,如下所示:
destination_version: destination.labels["version"] | "unknown"
12)目的服务(Destination Service):标识了负责处理传入请求的目的服务,如下所示:例如:details.default.svc.cluster.local。
destination_service: destination.service.name | "unknown"
13)目的服务名称(Destination Service Name):标识了目的服务的名称,如下所示:
destination_service_name: destination.service.name | "unknown"
14)目的服务命名空间(Destination Service Namespace):标识了目的服务命名空间,如下所示:
destination_service_namespace: destination.service.namespace | "unknown"
15)请求协议(Request Protocol):标识了请求协议。当提供了API协议时设置为该值,否则设置为请求或连接协议,如下所示:
request_protocol: api.protocol | context.protocol | "unknown"
16)响应码(Response Code):标识了请求的响应码。该标签仅在HTTP metrics中存在,如下所示:
response_code: response.code | 200
17)连接安全策略:这标识了请求的服务身份验证策略。当Istio用于通信安全并且报告来自目的地时,它被设置为mutual_tls。报告来自源时设置为unknown,因为无法正确填充安全策略,如下所示:
connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))