SigNoz Cloud - This page is relevant for SigNoz Cloud editions.
Self-Host - This page is relevant for self-hosted SigNoz editions.

Send StatsD Metrics to SigNoz using OpenTelemetry Collector

StatsD is a popular network daemon that listens for statistics (like counters, timers, and gauges) sent over UDP or TCP and aggregates them before forwarding to a backend. You can send custom metrics from your applications using StatsD clients to SigNoz by configuring the OpenTelemetry Collector's statsd receiver.

This guide explains how to set up the OpenTelemetry Collector to listen for StatsD metrics and send them to SigNoz.

Prerequisites

Send StatsD Metrics to SigNoz

Step 1: Configure the StatsD receiver

The OpenTelemetry Collector uses the StatsD receiver to ingest metrics in the StatsD format.

Add the statsd receiver to your otel-collector-config.yaml file. Make sure it listens on the desired address (default for StatsD is UDP port 8125):

otel-collector-config.yaml
receivers:
  statsd:
    endpoint: "0.0.0.0:8125"

Explanation of the fields:

  • endpoint: The address (host:port) where the receiver will listen for UDP StatsD packets. Use 0.0.0.0 to listen on all interfaces.

Step 2: Configure the exporter to SigNoz Cloud

If you haven't already configured your Collector to send data to SigNoz Cloud, add an otlp exporter:

otel-collector-config.yaml
exporters:
  otlp/signoz:
    endpoint: ingest.<region>.signoz.cloud:443
    tls:
      insecure: false
    headers:
      "signoz-ingestion-key": "<your-ingestion-key>"

Verify these values:

Step 3: Enable the receiver and exporter in your pipeline

Enable both the statsd receiver and the otlp/signoz exporter in your metrics pipeline. Add them to service.pipelines.metrics. Append the receiver and exporter to your configuration like:

otel-collector-config.yaml
service:
  pipelines:
    metrics:
      receivers: [otlp, statsd] # Append statsd to your existing receivers
      exporters: [otlp/signoz]  # Ensure your exporter is included here

Step 4: Expose the StatsD port

Depending on how you deploy the OpenTelemetry Collector, you need to ensure the StatsD UDP port (8125) is accessible to your applications.

No additional port mapping is required, just ensure your firewall allows incoming UDP traffic on port 8125.

Check if the collector is listening on the port:

sudo netstat -ulnp | grep 8125

Step 5: Restart the OpenTelemetry Collector

After modifying the configuration file and exposing the necessary ports, restart the OpenTelemetry Collector for the changes to take effect.

Depending on your environment, you can restart the collector using the following commands:

  • Docker: docker restart otel-collector
  • VM: sudo systemctl restart signoz-otel-collector (or the respective service name)

Validate

To test if the OpenTelemetry Collector successfully receives your StatsD metrics, you can send a dummy metric using nc (netcat):

echo "custom.test.metric:1|c" | nc -w 1 -u 127.0.0.1 8125

This command sends a StatsD counter metric named custom.test.metric with a value of 1. (Make sure you replace 127.0.0.1 with your Collector instance IP if testing remotely).

Wait for the aggregation interval (e.g., 60 seconds) to pass. Then, navigate to the SigNoz UI to verify:

  1. Navigate to Metrics Explorer.
  2. Search for custom.test.metric.
  3. You should see the metric data in the chart.
Custom StatsD metric in Metrics Explorer
Custom StatsD metric in Metrics Explorer

Troubleshooting

If you don't see your metrics in SigNoz, check the following:

Port Configuration

Ensure that port 8125/UDP is open and accessible from your application to the OpenTelemetry Collector.

  • Docker: Did you map the port when starting the container? Ensure your docker run command or docker-compose.yaml includes -p 8125:8125/udp.
  • Kubernetes: If your Collector runs in K8s, ensure the UDP port is exposed in the Service definition and properly mapped in your otel-agent daemonset. See Configure K8s Infra for exposing additional receiver ports.
  • Firewall: Check if firewalls (e.g., AWS Security Groups) are allowing UDP traffic on port 8125.

Check Collector Logs

Enable debug logging on your OpenTelemetry Collector to see if it receives the stats. Merge this setting with your existing service.telemetry configuration rather than replacing it:

otel-collector-config.yaml
service:
  telemetry:
    logs:
      level: debug

Check the Collector's output for any errors related to parsing StatsD messages.

Metrics Export Errors

If metrics are received but not exported downstream, there might be an issue with your exporter configuration (keys, endpoints). Look for exporting failed errors in the OTel Collector logs. Ensure your otlp/signoz exporter is correctly pointing to your SigNoz cloud region endpoint with the valid ingestion key.

Next Steps

Now that you have your StatsD metrics flowing into SigNoz, you can use them to build custom visualizations and trigger alerts when things go wrong:

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.

Last updated: March 9, 2026

Edit on GitHub