Configure the OpenTelemetry Collector to scrape Istio's Prometheus endpoints and send metrics to SigNoz. This covers both the istiod control plane and Envoy sidecar data plane.
Prerequisites
- Istio installed in your Kubernetes cluster
- OpenTelemetry Collector deployed in the same cluster. See OpenTelemetry Collector on Kubernetes to get started
- An instance of SigNoz (either Cloud or Self-Hosted)
How Istio exposes metrics
Istio exposes Prometheus-format metrics on two sets of endpoints:
- istiod (control plane): port
15014, scraped via Kubernetes endpoint discovery in theistio-systemnamespace - Envoy sidecars and gateways (data plane): port
15090, path/stats/prometheus, scraped via pod discovery using the port name.*-envoy-prom
For metric names and labels, see the official Istio standard metrics reference.
Send Metrics to SigNoz
Step 1. Configure the OpenTelemetry Collector
Merge the following into your existing Collector config. It adds two Prometheus scrape jobs (one for istiod, one for Envoy proxies) and an OTLP exporter pointing to SigNoz.
receivers:
prometheus:
config:
scrape_configs:
- job_name: 'istiod'
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- istio-system
relabel_configs:
- source_labels:
- __meta_kubernetes_service_name
- __meta_kubernetes_endpoint_port_name
action: keep
regex: istiod;http-monitoring
- job_name: 'envoy-stats'
metrics_path: /stats/prometheus
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_container_port_name]
action: keep
regex: '.*-envoy-prom'
exporters:
otlphttp:
endpoint: 'https://ingest.<region>.signoz.cloud:443'
headers:
signoz-ingestion-key: '<your-ingestion-key>'
service:
pipelines:
metrics:
receivers: [prometheus]
exporters: [otlphttp]
Verify these values:
<region>: Your SigNoz Cloud region<your-ingestion-key>: Your ingestion key
The Collector needs ClusterRole permissions for Kubernetes pod and endpoint discovery. The OpenTelemetry Collector on Kubernetes guide covers the required RBAC setup.
Step 2. Restart the Collector
kubectl rollout restart deployment/otel-collector -n <collector-namespace>
Step 3. Validate
After the Collector restarts:
- In SigNoz, go to Metrics > Metrics Explorer.
- Search for
istio_requests_totalto verify data plane metrics are flowing. - Search for
pilot_xdsto verify control plane metrics are flowing.
SigNoz shows metrics within the first scrape interval (default: 60 seconds).

Troubleshooting
No metrics appearing
Verify the Collector pod has RBAC permissions to discover Kubernetes endpoints and pods. Run:
kubectl logs deployment/otel-collector -n <collector-namespace>
Look for scrape errors or permission-denied messages.
Only istiod metrics, no sidecar metrics
Verify your pods have Istio injection enabled (istio-injection: enabled on the namespace) and that the sidecar container port is named with the -envoy-prom suffix.
Metrics delayed
The default Prometheus scrape interval is 60 seconds. Reduce it for faster feedback:
scrape_configs:
- job_name: 'istiod'
scrape_interval: 15s
# ...
Next steps
- Istio Metrics dashboard
- Set up alerts on your metrics
Get Help
If you need help with the steps in this topic, please reach out to us on SigNoz Community Slack.
If you are a SigNoz Cloud user, please use in product chat support located at the bottom right corner of your SigNoz instance or contact us at cloud-support@signoz.io.