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

Send Logs from Vector to SigNoz

Overview

Vector collects, transforms, and ships logs from various sources (syslog, files, Docker, Kubernetes) to SigNoz. SigNoz Cloud uses Vector's http sink; self-hosted SigNoz uses the opentelemetry sink.

Prerequisites

  • Vector installed and running on your system
  • An instance of SigNoz (Cloud or Self-Hosted)

Configure Vector

To send logs from Vector to SigNoz Cloud, you need to use the http sink.

Step 1: Install Vector

Install Vector on your VM or bare metal server. See the official Vector installation guide for your platform.

Step 2: Configure Vector

Open your Vector configuration file (usually /etc/vector/vector.yaml):

sudo nano /etc/vector/vector.yaml

Add the following configuration to collect logs from system log files and send them to SigNoz:

vector.yaml
sources:
  system_logs:
    type: file
    include:
      - /var/log/syslog
      - /var/log/messages
      - /var/log/*.log
    read_from: end

sinks:
  signoz_sink:
    type: http
    inputs:
      - system_logs
    uri: "https://ingest.<region>.signoz.cloud/logs/vector"
    encoding:
      codec: json
    request:
      headers:
        signoz-ingestion-key: "<your-ingestion-key>"

Verify these values:

The http sink sends log events as JSON to SigNoz Cloud's ingestion endpoint. The signoz-ingestion-key header authenticates each request. Vector batches events before sending.

Step 3: Restart Vector

sudo systemctl restart vector

Verify Vector is running:

sudo systemctl status vector

Log Mapping for SigNoz

SigNoz expects logs in a specific JSON format. You can either transform logs at the Vector level or use SigNoz pipelines later.

Supported Fields

FieldTypeDescription
timestampint64Nanoseconds since Unix epoch (e.g., 1704061984975797000)
bodystringLog message (also accepts message)
trace_idstring32-character hex string
span_idstring16-character hex string
trace_flagsintInteger (0 or 1 for sampled)
severity_textstringLog level: TRACE, DEBUG, INFO, WARN, ERROR, FATAL
severity_numberintOTel severity number: TRACE=1-4, DEBUG=5-8, INFO=9-12, WARN=13-16, ERROR=17-20, FATAL=21-24
attributesobjectCustom attributes
resourcesobjectResource attributes

Example

{
  "timestamp": 1704061984975797000,
  "body": "Request processed successfully",
  "trace_id": "000000000000000018c51935df0b93b9",
  "span_id": "18c51935df0b93b9",
  "trace_flags": 0,
  "severity_text": "info",
  "severity_number": 9,
  "attributes": {
    "method": "GET",
    "path": "/api/users"
  },
  "resources": {
    "host": "myhost",
    "namespace": "prod"
  }
}

Note: Any fields not in this schema are automatically added to log attributes.

Self-Hosted

The Vector remap transform in the config above already maps fields to OTel format. Resource attributes (like host.name, k8s.pod.name) follow OTel semantic conventions.

Validate

After configuring Vector, navigate to Logs → Logs Explorer in SigNoz. You should see incoming log entries within a few minutes. Filter by source_type to confirm the logs are from Vector.

Vector logs in SigNoz Logs Explorer
Vector logs in SigNoz Logs Explorer

For more details on querying logs, see the Logs Explorer documentation.

Setup OpenTelemetry Collector (Optional)

What is the OpenTelemetry Collector?

Think of the OTel Collector as a middleman between your app and SigNoz. Instead of your application sending data directly to SigNoz, it sends everything to the Collector first, which then forwards it along.

Why use it?

  • Cleaning up data — Filter out noisy traces you don't care about, or remove sensitive info before it leaves your servers.
  • Keeping your app lightweight — Let the Collector handle batching, retries, and compression instead of your application code.
  • Adding context automatically — The Collector can tag your data with useful info like which Kubernetes pod or cloud region it came from.
  • Future flexibility — Want to send data to multiple backends later? The Collector makes that easy without changing your app.

See Switch from direct export to Collector for step-by-step instructions to convert your setup.

For more details, see Why use the OpenTelemetry Collector? and the Collector configuration guide.

Troubleshooting

Logs are not appearing in SigNoz

  • Symptom: No log entries in Logs Explorer after configuring Vector.
  • Likely cause: Vector is not running, or endpoint/key is misconfigured.
  • Fix:
    1. Check Vector status: sudo systemctl status vector (VM) or docker ps (Docker)
    2. Check Vector logs: sudo journalctl -u vector -f (VM) or docker logs vector (Docker)
    3. Verify endpoint and credentials (see below)
  • Verify: After fixing, confirm new logs appear in Logs → Logs Explorer within a few minutes.

Endpoint and credentials check:

  • Cloud: https://ingest.<region>.signoz.cloud/logs/vector with valid <your-ingestion-key>
  • Self-Hosted: http://<signoz-host>:4318/v1/logs with collector reachable on port 4318
  • Ensure no firewall is blocking the connection.

Self-Hosted: OTLP serialization error

If Vector logs show:

Failed serializing frame. error=Log event does not contain OTLP top-level fields (resourceLogs or resourceMetrics)

The remap transform is missing or its inputs field does not match the source name. Verify the transform's inputs matches the source component ID in your config.

Vector configuration validation

Validate your Vector configuration before restarting:

vector validate --config-yaml /etc/vector/vector.yaml

Next Steps

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: April 22, 2026

Edit on GitHub

Was this page helpful?

Your response helps us improve this page.