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=10254For 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=10254If 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
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-labelsMetrics 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.