Default Metrics
We will describe metrics first and then the labels for each metric.
For HTTP, HTTP/2, and GRPC traffic, Istio generates the following metrics:
Request Count (): This is a
COUNTER
incremented for every request handled by an Istio proxy.Request Duration (
istio_request_duration_seconds
): This is aDISTRIBUTION
which measures the duration of requests.Request Size (
istio_request_bytes
): This is aDISTRIBUTION
which measures HTTP request body sizes.Response Size (
istio_response_bytes
): This is aDISTRIBUTION
which measures HTTP response body sizes.
For TCP traffic, Istio generates the following metrics:
Tcp Byte Sent (
istio_tcp_sent_bytes_total
): This is aCOUNTER
which measures the size of total bytes sent during response in case of a TCP connection.Tcp Byte Received (
istio_tcp_received_bytes_total
): This is aCOUNTER
which measures the size of total bytes received during request in case of a TCP connection.Tcp Connections Closed (
istio_tcp_connections_closed_total
): This is aCOUNTER
incremented for every closed connection.
Labels
Reporter: This identifies the reporter of the request. It is set to
destination
if report is from a server Istio proxy andsource
if report is from a client Istio proxy.Source Workload: This identifies the name of source workload which controls the source.
source_workload: source.workload.name | "unknown"
Source Principal: This identifies the peer principal of the traffic source. It is set when peer authentication is used.
source_principal: source.principal | "unknown"
Source App: This identifies the source app based on
app
label of the source workload.source_app: source.labels["app"] | "unknown"
Source Version: This identifies the version of the source workload.
source_version: source.labels["version"] | "unknown"
Destination Workload: This identifies the name of destination workload.
Destination Workload Namespace: This identifies the namespace of the destination workload.
destination_workload_namespace: destination.workload.namespace | "unknown"
-
destination_principal: destination.principal | "unknown"
Destination App: This identifies the destination app based on label of the destination workload.
Destination Version: This identifies the version of the destination workload.
destination_version: destination.labels["version"] | "unknown"
Destination Service: This identifies destination service host responsible for an incoming request. Ex:
details.default.svc.cluster.local
.destination_service: destination.service.host | "unknown"
Destination Service Name: This identifies the destination service name. Ex: “details”.
Destination Service Namespace: This identifies the namespace of destination service.
destination_service_namespace: destination.service.namespace | "unknown"
Request Protocol: This identifies the protocol of the request. It is set to API protocol if provided, otherwise request or connection protocol.
request_protocol: api.protocol | context.protocol | "unknown"
Response Code: This identifies the response code of the request. This label is present only on HTTP metrics.
response_code: response.code | 200
Connection Security Policy: This identifies the service authentication policy of the request. It is set to
mutual_tls
when Istio is used to make communication secure and report is from destination. It is set tounknown
when report is from source since security policy cannot be properly populated.connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))