VictoriaLogs supports both client open-telemetry SDK and collector.

Client SDK #

Specify EndpointURL for http-exporter builder.

Consider the following example for golang SDK:

 // Create the OTLP log exporter that sends logs to configured destination
 logExporter, err := otlploghttp.New(ctx,
  otlploghttp.WithEndpointURL("http://victorialogs:9428/insert/opentelemetry/v1/logs"),
 )

Optionally, stream fields could be defined via headers:

 // Create the OTLP log exporter that sends logs to configured destination
 logExporter, err := otlploghttp.New(ctx,
  otlploghttp.WithEndpointURL("http://victorialogs:9428/insert/opentelemetry/v1/logs"),
   otlploghttp.WithHeaders(map[string]string{"VL-Stream-Fields": "telemetry.sdk.language,severity"}),
 )

Given config defines 2 stream fields - severity and telemetry.sdk.language.

See also HTTP headers

Collector configuration #

VictoriaLogs supports given below OpenTelemetry collector exporters:

Elasticsearch #

exporters:
  elasticsearch:
    endpoints:
      - http://victorialogs:9428/insert/elasticsearch
    headers:
      VL-Msg-Field: "Body" # Optional.
receivers:
  filelog:
    include: [/tmp/logs/*.log]
    resource:
      region: us-east-1
service:
  pipelines:
    logs:
      receivers: [filelog]
      exporters: [elasticsearch]

Please note that every ingested log entry must contain at least a _msg field with the actual log message. By default, the Elasticsearch exporter may place the log message in the Body field. In this case, you can specify the field mapping via:

    headers:
      VL-Msg-Field: "Body"

VictoriaLogs also support specify AccountID, ProjectID, log timestamp and other fields via HTTP headers.

Loki #

exporters:
  loki:
    endpoint: http://victorialogs:9428/insert/loki/api/v1/push
receivers:
  filelog:
    include: [/tmp/logs/*.log]
    resource:
      region: us-east-1
service:
  pipelines:
    logs:
      receivers: [filelog]
      exporters: [loki]

OpenTelemetry #

Specify logs endpoint for OTLP/HTTP exporter in configuration file for sending the collected logs to VictoriaLogs:

exporters:
  otlphttp:
    logs_endpoint: http://localhost:9428/insert/opentelemetry/v1/logs

Optionally, stream fields could be defined via headers:

exporters:
  otlphttp:
    logs_endpoint: http://localhost:9428/insert/opentelemetry/v1/logs
    headers:
      VL-Stream-Fields: telemetry.sdk.language,severity

See also HTTP headers

Substitute localhost:9428 address inside exporters.otlphttp.logs_endpoint with the real address of VictoriaLogs.

The ingested log entries can be queried according to these docs.

See also: