NGINX metrics

This document provides an explains how to monitor NGINX metrics using OTel Collector and SigNoz.

Pre-requisites

  • NGINX with stub_status module enabled

Setup

Step 1: Setup OTel Collector

OpenTelemetry Collector is required to collect metrics from NGINX. Please refer to this documentation to setup the agent.

Step 2: Preparing NGINX

For the OpenTelemetry Collector to collect NGINX metrics, you need to enable the stub_status module and configure a status endpoint. The stub_status module in NGINX provides real-time server health metrics like active connections, handled requests, and connection states. Refer to this doc for setting up the NGINX stub_status module.

Step 3: Collecting NGINX metrics

You will need to configure the nginx receiver for collecting NGINX metrics. The receiver queries the NGINX status endpoint to collect performance metrics.

Step 4: Configuring the receiver

Edit the OTel Collector config file to configure the nginx receiver as shown below:

config.yaml
receivers:
  nginx:
    endpoint: "<nginx-status-endpoint>" # Example -> http://localhost:80/nginx_status
    collection_interval: 10s
    initial_delay: 1s
    timeout: 60s

Configuration parameters:

  • endpoint: The URL to the NGINX status page (required)
  • collection_interval: How often to collect metrics (default: 1m)
  • initial_delay: Delay before starting collection (default: 1s)
  • timeout: Request timeout (default: 10s)

You can find more details about the NGINX receiver configuration in the receiver documentation.

Step 5: Configuring the pipelines

Once the receiver and processor is configured, make sure to also enable them in the pipelines section of the OTel Collector config file:

config.yaml
service:
  pipelines:
    metrics:
      receivers: [nginx]
      processors: [resourcedetection, attributes]

Visualizing NGINX Metrics

Once you have configured OTel Collector to send MySQL metrics to SigNoz, you can start visualizing the metrics in the metrics explorer.

You can also use the pre-configured NGINX dashboard to monitor critical MySQL metrics.

NGINX Dashboard
NGINX Dashboard

Dashboards → + New dashboard → Import JSON

Troubleshooting

Common Issues

  1. No metrics appearing in SigNoz

    • Verify NGINX status endpoint is accessible
    • Check OTel Collector logs for connection errors
    • Ensure firewall allows access to the status endpoint
  2. Permission denied errors

    • Check NGINX access restrictions on the status endpoint
    • Verify the IP address of OTel Collector is allowed
  3. Metrics showing zero values

    • Confirm NGINX is receiving traffic
    • Verify the status endpoint shows non-zero values
    • Check if NGINX was recently restarted (counters reset)

Last updated: July 19, 2025

Edit on GitHub

Was this page helpful?