This guide shows you how to switch from sending telemetry data directly from your application to SigNoz to routing it through an OpenTelemetry Collector.
Prerequisites
- Your application is already instrumented with OpenTelemetry and sending data to SigNoz
- Access to modify your application's environment variables or configuration
- An OpenTelemetry Collector deployed in your environment — see get started with collection agents
Not sure if you need a Collector? See Why use the OpenTelemetry Collector?
Step 1. Configure the Collector to forward to SigNoz
Update your Collector's configuration file to forward data to SigNoz.
Please follow the configuration guide to configure your OpenTelemetry Collector. You will need to update the endpoint with your Ingestion Endpoint and add your Ingestion Key to the headers.
Step 2. Update your application environment variables
Update your application to send to the Collector instead of directly to SigNoz:
Before (direct to SigNoz Cloud):
export OTEL_EXPORTER_OTLP_ENDPOINT="https://ingest.<region>.signoz.cloud:443"
export OTEL_EXPORTER_OTLP_HEADERS="signoz-ingestion-key=<your-ingestion-key>"
After (via Collector):
export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318"
# Remove the ingestion key - the Collector handles it now
unset OTEL_EXPORTER_OTLP_HEADERS
If your Collector runs on a different host, replace localhost with the Collector's hostname or IP. For Kubernetes, use the Service name (e.g., http://otel-collector.observability.svc.cluster.local:4318).
Step 3. Restart and validate
- Restart your application with the updated configuration.
- Check the Collector logs to verify it's receiving and exporting data.
- In SigNoz, navigate to Traces or Metrics and verify new data is appearing.
Troubleshooting
No data appears in SigNoz after switching
Verify Collector is receiving data:
Add a debug exporter to see data flowing through:
exporters:
debug:
verbosity: detailed
otlphttp:
endpoint: https://ingest.<region>.signoz.cloud:443
headers:
signoz-ingestion-key: <your-ingestion-key>
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [debug, otlphttp]
Check logs for data. If you see spans/metrics in debug output but not in SigNoz, the issue is with the exporter configuration.
Verify application is sending to Collector:
echo $OTEL_EXPORTER_OTLP_ENDPOINT
# Should output: http://localhost:4318 (or your Collector host)
Application can't connect to Collector
Check Collector is listening:
netstat -tuln | grep -E '4317|4318'
Should show ports 4317 and 4318 in LISTEN state.
For Kubernetes:
Verify the Service endpoints:
kubectl get svc otel-collector -n observability
kubectl get endpoints otel-collector -n observability
Next steps
Now that data flows through the Collector, you can add processors for:
- Filtering — Drop health checks or debug data. See drop spans, drop logs, drop metrics
- PII scrubbing — Remove sensitive data. See PII scrubbing for logs and traces
- Enrichment — Add resource attributes. See resource detection processor
- Advanced configuration — Explore all options in the Collector configuration guide
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.