Configure the OpenTelemetry Collector to scrape the NGINX Ingress Controller's Prometheus endpoint and send metrics to SigNoz.
Prerequisites
- ingress-nginx installed in your Kubernetes cluster with metrics enabled
- OpenTelemetry Collector deployed in the same cluster. See OpenTelemetry Collector on Kubernetes to get started
- A SigNoz account (Cloud or Self-Hosted)
How NGINX Ingress Controller exposes metrics
The ingress-nginx controller exposes Prometheus metrics on port 10254 at /metrics on each controller pod.
For a new ingress-nginx release, enable the metrics service during install:
helm install ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx --create-namespace \
--set controller.metrics.enabled=true \
--set controller.metrics.service.servicePort=10254
For an existing release, preserve your current Helm values while enabling metrics:
helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--reuse-values \
--set controller.metrics.enabled=true \
--set controller.metrics.service.servicePort=10254
If you manage ingress-nginx with a values file, pass that same file during the upgrade so your existing controller settings are retained.
For metric names and labels, see the ingress-nginx monitoring reference.
Send Metrics to SigNoz
Step 1. Configure the OpenTelemetry Collector
Merge the following into your existing Collector config. It adds a Prometheus scrape job that uses pod discovery to find ingress-nginx controller pods and scrape port 10254.
receivers:
prometheus:
config:
scrape_configs:
- job_name: ingress-nginx
scrape_interval: 30s
scrape_timeout: 10s
metrics_path: /metrics
kubernetes_sd_configs:
- role: pod
namespaces:
names: [ingress-nginx]
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
action: keep
regex: ingress-nginx
- source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component]
action: keep
regex: controller
- source_labels: [__meta_kubernetes_pod_container_port_number]
action: keep
regex: "10254"
- source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
target_label: pod
- source_labels: [__meta_kubernetes_pod_node_name]
target_label: node
processors:
resource:
attributes:
- key: service.name
value: ingress-nginx
action: upsert
batch: {}
exporters:
otlphttp:
endpoint: 'https://ingest.<region>.signoz.cloud:443'
headers:
signoz-ingestion-key: '<your-ingestion-key>'
service:
pipelines:
metrics:
receivers: [prometheus]
processors: [resource, batch]
exporters: [otlphttp]
Verify these values:
<region>: Your SigNoz Cloud region<your-ingestion-key>: Your ingestion key
The Collector needs ClusterRole permissions for Kubernetes pod 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
nginx_ingress_controller_requeststo verify metrics are flowing.
SigNoz shows metrics within the first scrape interval (default: 30 seconds).

Troubleshooting
No metrics appearing
Verify the Collector pod has RBAC permissions to discover Kubernetes pods. Run:
kubectl logs deployment/otel-collector -n <collector-namespace>
Look for scrape errors or permission-denied messages.
Metrics present but no ingress label on panels
Verify the controller pod has the labels app.kubernetes.io/name=ingress-nginx and app.kubernetes.io/component=controller. Check with:
kubectl get pods -n ingress-nginx --show-labels
Metrics delayed
The scrape interval is set to 30 seconds. Reduce it in the scrape_configs section for faster feedback during testing.
Next steps
- Ingress Nginx - Request Handling Performance Dashboard: per-request latency percentiles, error ratios, and upstream response times by path
- Ingress Nginx - Controller Overview Dashboard: controller connections, config reload status, CPU/memory, and per-ingress success rates
- 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.