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

Log export methods

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 SituationRecommended PathWhy
Need trace-log correlationSDK OTLP ExportAutomatic trace_id and span_id injection when logging within active spans
Need reliability over in-app SDKFile + OTel CollectorLogs persist even if app crashes
Collect from external log sourcesOTel Collector ReceiversNative receivers for many sources
Already using FluentBit/FluentdLog ProcessorsUse existing infrastructure
Custom HTTP integrationHTTP APILanguage-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_id and span_id injection
  • ✅ 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

LanguageGuide
PythonPython Logs
Node.jsConsole, Pino, Winston, Bunyan
JavaJava Logs
GoZap, 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)

HTTP Logs API Guide


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

PlatformGuide
KubernetesK8s Pod Logs — DaemonSet auto-collects all pod logs
DockerDocker Logs
VM / Bare MetalCollect 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

SourceReceiverGuide
CloudWatchawscloudwatchCloudWatch Logs
SyslogsyslogSyslogs Guide
Systemd/JournaldjournaldSystemd Logs
Windows EventswindowseventlogWindows Event Logs
KafkakafkaReceives logs from Kafka topics
MongoDB Atlasmongodb_atlasCollects 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/VectorOTLP   │                     │
└─────────────────────┘         └─────────────────────┘         └─────────────────────┘

Benefits:

  • ✅ Use existing log infrastructure
  • ✅ No changes to current logging setup

Trade-offs:

  • ❌ Extra hop in the pipeline
  • ❌ No automatic trace correlation

Forwarder Guides


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

Info

SigNoz Cloud users: One-Click AWS Integrations provide the fastest setup with auto-discovery and pre-built dashboards. See the comparison guide to choose.

ScenarioAvailable PathsRecommended
EKS (Kubernetes)Path 1 (SDK), Path 3 (k8s-infra), Path 4 (CloudWatch), One-Clickk8s-infra for pod logs, SDK for trace correlation
ECSPath 1 (SDK), Path 3 (Firelens sidecar), Path 4 (CloudWatch), One-ClickECS Logs Guide
EC2Path 1 (SDK), Path 3 (file collection), Path 4 (CloudWatch), One-ClickEC2 Guide
LambdaPath 1 (SDK with OTel layer), Path 4 (CloudWatch), One-ClickLambda Logs, Lambda Traces
CloudWatch LogsPath 4 (awscloudwatch receiver)CloudWatch Logs Guide
S3 LogsS3 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
💡 Tip

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

ScenarioAvailable PathsRecommended
AKS (Kubernetes)Path 1 (SDK), Path 3 (k8s-infra)AKS Guide
Virtual MachinesPath 1 (SDK), Path 3 (file collection)Azure VMs Guide
App ServicePath 1 (SDK)App Service Guide
FunctionsPath 1 (SDK)Azure Functions Guide
Event HubPath 4 (azure_event_hub receiver)Azure Monitoring Overview

GCP

ScenarioAvailable PathsRecommended
GKE (Kubernetes)Path 1 (SDK), Path 3 (k8s-infra)GKE Guide
Compute EnginePath 1 (SDK), Path 3 (file collection)Compute Engine Guide
Cloud RunPath 1 (SDK)Cloud Run Guide
Cloud FunctionsPath 1 (SDK)Cloud Functions Guide
Pub/SubPath 4 (googlecloudpubsub receiver)GCP Monitoring Overview

PaaS Platforms

PlatformCollection MethodGuide
HerokuLog drain (HTTP)Heroku Logs
VercelLog drain (HTTP)Vercel Logs
Cloudflare WorkersPath 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

PathTrace CorrelationReliabilityCode ChangesBest For
SDK OTLPAutomaticIn-processRequiredApps needing trace correlation
HTTPManualIn-processRequiredCustom integrations
File + CollectorManualDisk-persistedNoneK8s, Docker, VMs
OTel ReceiversManualManagedNoneCloudWatch, Kafka, Journald
Log ProcessorsManualDependsNoneExisting FluentBit/Fluentd

Next Steps

Once logs are flowing to SigNoz:

  1. Explore logs in the Logs Explorer
  2. Set up log-based alerts
  3. 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.

Last updated: February 6, 2026

Edit on GitHub

Was this page helpful?