Telemetry API
Metrics/logs/traces per workload or namespace. Replaces
EnvoyFilter telemetry mods and the old
values.telemetry.v2.* settings.
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata: {name: trace-prod, namespace: prod}
spec:
tracing:
- providers: [{name: tempo}]
randomSamplingPercentage: 5.0
metrics:
- providers: [{name: prometheus}]
overrides:
- match: {metric: REQUEST_COUNT}
tagOverrides:
request_protocol: {operation: REMOVE}
accessLogging:
- providers: [{name: otel}]
filter:
expression: "response.code >= 400"
Metrics & tracing
RED counter: istio_requests_total, latency:
istio_request_duration_milliseconds_bucket. The
reporter label = source/destination, in
dashboards always aggregate on destination
(otherwise double counting). Ambient: L7 metrics
come only from the waypoint (reporter="waypoint",
aggregate on that); without one, only istio_tcp_*.
Envoy creates spans and trace headers but cannot
link an inbound request to the app’s outbound calls. The app
must copy incoming trace headers (x-request-id,
x-b3-*, traceparent) onto its outgoing
requests.