SigNoz accepts logs via OTLP (OpenTelemetry Protocol) or HTTP. This doc explains the different paths your logs can take to reach SigNoz and helps you understand the trade-offs of each approach.
For step-by-step setup guides, see Send Logs to SigNoz.
Quick Decision Guide
| Your Situation | Recommended Path | Why |
|---|---|---|
| Need trace-log correlation | SDK OTLP Export | Automatic trace_id and span_id injection when logging within active spans |
| Need reliability over in-app SDK | File + OTel Collector | Logs persist even if app crashes |
| Collect from external log sources | OTel Collector Receivers | Native receivers for many sources |
| Already using FluentBit/Fluentd | Log Processors | Use existing infrastructure |
| Custom HTTP integration | HTTP API | Language-agnostic, simple |
Path 1: SDK OTLP Export
Your application uses an OpenTelemetry SDK to send logs directly to SigNoz via OTLP.
┌─────────────────────┐ OTLP ┌─────────────────────┐
│ Your Application │ ───────────────────▶ │ SigNoz │
│ (OTel SDK) │ │ │
└─────────────────────┘ └─────────────────────┘
Benefits:
- ✅ Trace-log correlation — Automatic
trace_idandspan_idinjection - ✅ Structured logs with rich application context
- ✅ No additional infrastructure needed
Trade-offs:
- ❌ Logs are in-process — if app crashes, buffered logs may be lost
- ❌ Requires code changes or runtime configuration
Language Guides
| Language | Guide |
|---|---|
| Python | Python Logs |
| Node.js | Console, Pino, Winston, Bunyan |
| Java | Java Logs |
| Go | Zap, Zerolog, Logrus |
Path 2: HTTP API
Send logs directly to SigNoz over HTTP using a simple JSON payload.
┌─────────────────────┐ HTTP ┌─────────────────────┐
│ Your Application │ ───────────────────▶ │ SigNoz │
│ (HTTP Client) │ │ │
└─────────────────────┘ └─────────────────────┘
Benefits:
- ✅ Language-agnostic — works with any language that can make HTTP requests
- ✅ Simple integration for custom log sources
Trade-offs:
- ❌ Manual implementation required
- ❌ No automatic trace correlation (include trace context fields manually if needed)
Path 3: Write to File + OTel Collector
Your application writes logs to stdout/file. The OpenTelemetry Collector reads these files and sends logs to SigNoz.
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ Your Application │ ──────▶ │ Log File/stdout │ ──────▶ │ OTel Collector │ ──────▶ SigNoz
│ (any language) │ write │ │ read │ (filelog recv) │ OTLP
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
Benefits:
- ✅ More reliable than SDK — logs persist to disk even if app crashes
- ✅ Preprocessing — filter, enrich, and transform logs before sending
- ✅ Add metadata — inject Kubernetes labels, host info, etc.
- ✅ No code changes to your application
- ✅ Common pattern for Kubernetes and Docker environments
Trade-offs:
- ❌ No automatic trace correlation (unless you include trace context fields in log output)
- ❌ Requires running an OTel Collector
Platform Guides
| Platform | Guide |
|---|---|
| Kubernetes | K8s Pod Logs — DaemonSet auto-collects all pod logs |
| Docker | Docker Logs |
| VM / Bare Metal | Collect from File |
Path 4: OTel Collector Receivers
The OpenTelemetry Collector has native receivers for many log sources. These receivers connect directly to services and pull logs without needing file-based collection.
┌─────────────────────┐ ┌─────────────────────┐
│ Log Source │ ───────────────────▶ │ OTel Collector │ ──────▶ SigNoz
│ (CloudWatch, │ Native receiver │ │ OTLP
│ Kafka, etc.) │ └─────────────────────┘
└─────────────────────┘
Benefits:
- ✅ Native integration with many services
- ✅ No intermediate file storage needed
- ✅ Preprocessing and filtering in the collector
Available Receivers
| Source | Receiver | Guide |
|---|---|---|
| CloudWatch | awscloudwatch | CloudWatch Logs |
| Syslog | syslog | Syslogs Guide |
| Systemd/Journald | journald | Systemd Logs |
| Windows Events | windowseventlog | Windows Event Logs |
| Kafka | kafka | Receives logs from Kafka topics |
| MongoDB Atlas | mongodb_atlas | Collects MongoDB Atlas logs |
The OpenTelemetry Collector supports many more receivers. See the full list in the OpenTelemetry Collector Contrib repository.
Path 5: Log Processors
If you already have FluentBit, Fluentd, Logstash, or Vector in your infrastructure, you can forward logs to SigNoz.
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ Your Application │ ──────▶ │ FluentBit/Fluentd │ ──────▶ │ SigNoz │
│ │ │ Logstash/Vector │ OTLP │ │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
Benefits:
- ✅ Use existing log infrastructure
- ✅ No changes to current logging setup
Trade-offs:
- ❌ Extra hop in the pipeline
- ❌ No automatic trace correlation
Forwarder Guides
| Forwarder | Guide |
|---|---|
| FluentBit | FluentBit to SigNoz |
| Fluentd | Fluentd to SigNoz |
| Logstash | Logstash to SigNoz |
| Vector | Vector to SigNoz |
Cloud & Platform Scenarios
Different cloud platforms and deployment models support multiple collection paths. This section helps you understand which paths apply to your specific scenario.
AWS
SigNoz Cloud users: One-Click AWS Integrations provide the fastest setup with auto-discovery and pre-built dashboards. See the comparison guide to choose.
| Scenario | Available Paths | Recommended |
|---|---|---|
| EKS (Kubernetes) | Path 1 (SDK), Path 3 (k8s-infra), Path 4 (CloudWatch), One-Click | k8s-infra for pod logs, SDK for trace correlation |
| ECS | Path 1 (SDK), Path 3 (Firelens sidecar), Path 4 (CloudWatch), One-Click | ECS Logs Guide |
| EC2 | Path 1 (SDK), Path 3 (file collection), Path 4 (CloudWatch), One-Click | EC2 Guide |
| Lambda | Path 1 (SDK with OTel layer), Path 4 (CloudWatch), One-Click | Lambda Logs, Lambda Traces |
| CloudWatch Logs | Path 4 (awscloudwatch receiver) | CloudWatch Logs Guide |
| S3 Logs | S3 Sync (One-Click), Path 4 (S3 Lambda forwarder) | S3 Sync (Cloud), S3 Manual |
| RDS, DynamoDB, etc. | One-Click, Path 4 (CloudWatch receiver) | AWS Service Guides |
Need trace-log correlation on AWS? Use the SDK approach (Path 1) within your application code. CloudWatch-based collection (Path 4) doesn't provide automatic trace correlation.
Azure
| Scenario | Available Paths | Recommended |
|---|---|---|
| AKS (Kubernetes) | Path 1 (SDK), Path 3 (k8s-infra) | AKS Guide |
| Virtual Machines | Path 1 (SDK), Path 3 (file collection) | Azure VMs Guide |
| App Service | Path 1 (SDK) | App Service Guide |
| Functions | Path 1 (SDK) | Azure Functions Guide |
| Event Hub | Path 4 (azure_event_hub receiver) | Azure Monitoring Overview |
GCP
| Scenario | Available Paths | Recommended |
|---|---|---|
| GKE (Kubernetes) | Path 1 (SDK), Path 3 (k8s-infra) | GKE Guide |
| Compute Engine | Path 1 (SDK), Path 3 (file collection) | Compute Engine Guide |
| Cloud Run | Path 1 (SDK) | Cloud Run Guide |
| Cloud Functions | Path 1 (SDK) | Cloud Functions Guide |
| Pub/Sub | Path 4 (googlecloudpubsub receiver) | GCP Monitoring Overview |
PaaS Platforms
| Platform | Collection Method | Guide |
|---|---|---|
| Heroku | Log drain (HTTP) | Heroku Logs |
| Vercel | Log drain (HTTP) | Vercel Logs |
| Cloudflare Workers | Path 1 (SDK - native OTLP) | Cloudflare Logs |
Why Use the OTel Collector?
The OpenTelemetry Collector is a key component in Paths 3 and 4. It provides:
- Filtering — Drop noisy logs or sensitive data before they reach SigNoz
- Enrichment — Add Kubernetes metadata, host info, or custom attributes
- Batching & Compression — Efficient network usage
- Reliability — Buffer logs during network issues
Learn more: OTel Collector Configuration
Combining Multiple Paths
Many teams use multiple collection methods:
- SDK OTLP for application services where trace correlation matters
- OTel Collector (File or Receivers) for infrastructure logs, databases, and third-party software
If you're on Kubernetes and use both approaches, disable automatic log collection for pods using SDK export to avoid duplicates.
Comparison Summary
| Path | Trace Correlation | Reliability | Code Changes | Best For |
|---|---|---|---|---|
| SDK OTLP | Automatic | In-process | Required | Apps needing trace correlation |
| HTTP | Manual | In-process | Required | Custom integrations |
| File + Collector | Manual | Disk-persisted | None | K8s, Docker, VMs |
| OTel Receivers | Manual | Managed | None | CloudWatch, Kafka, Journald |
| Log Processors | Manual | Depends | None | Existing FluentBit/Fluentd |
Next Steps
Once logs are flowing to SigNoz:
- Explore logs in the Logs Explorer
- Set up log-based alerts
- Use log pipelines for parsing and enrichment
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.