Skip to main content

Loki Exporter

Status Source: opentelemetry-collector-contrib

Overview

Status
Stabilitybeta
Supported pipeline typeslogs
Distributionscontrib
Exports data via HTTP to Loki.

Getting Started

The following settings are required:
  • endpoint (no default): The target URL to send Loki log streams to (e.g.: http://loki:3100/loki/api/v1/push).
Example:
exporters:
  loki:
    endpoint: https://loki.example.com:3100/loki/api/v1/push

Configuration via attribute hints

Labels

The Loki exporter can convert OTLP resource and log attributes into Loki labels, which are indexed. For that, you need to configure hints, specifying which attributes should be placed as labels. The hints are themselves attributes and will be ignored when exporting to Loki. The following example uses the attributes processor to hint the Loki exporter to set the event.domain attribute as label and the resource processor to give a hint to the Loki exporter to set the service.name as label.
processors:
  attributes:
    actions:
      - action: insert
        key: loki.attribute.labels
        value: event.domain

  resource:
    attributes:
      - action: insert
        key: loki.resource.labels
        value: service.name
Currently, Loki does not support label names with dots. That’s why lokiexporter normalizes label names to follow Prometheus label names standard before sending requests to Loki. More information on label normalization could be found here Default labels:
  • job=service.namespace/service.name
  • instance=service.instance.id
  • exporter=OTLP
exporter=OTLP is always set. If service.name and service.namespace are present then job=service.namespace/service.name is set If service.name is present and service.namespace is not present then job=service.name is set If service.name is not present and service.namespace is present then job label is not set If service.instance.id is present then instance=service.instance.id is set If service.instance.id is not present then instance label is not set The full list of settings exposed for this exporter are documented here with detailed sample configurations here. More information on how to send logs to Grafana Loki using the OpenTelemetry Collector could be found here

Tenant information

It is recommended to use the header_setter extension to configure the tenant information to send to Loki. In case a static tenant should be used, you can make use of the headers option for regular HTTP client settings, like the following:
exporters:
  loki:
    endpoint: http://localhost:3100/loki/api/v1/push
    headers:
      "X-Scope-OrgID": acme
It is also possible to provide the loki.tenant attribute hint that specifies which resource or log attributes value should be used as a tenant. For example:
processors:
  resource:
    attributes:
    - action: insert
      key: loki.tenant
      value: host.name
In this case the value of the host.name resource attribute is used to group logs by tenant and send requests with the X-Scope-OrgID header set to relevant tenants. If the loki.tenant hint attribute is present in both resource or log attributes, then the look-up for a tenant value from resource attributes takes precedence.

Format

To choose the format used for writing log lines by the exporter use the loki.format hint. For example:
processors:
  resource:
    attributes:
    - action: insert
      key: loki.format
      value: logfmt
The following formats are supported:
  • logfmt: Write logs as logfmt lines.
  • json: Write logs as JSON objects. It is the default format if no hint is present.
  • raw: Write the body of the log message as string representation.

Severity

OpenTelemetry uses record.severity to track log levels where loki uses record.attributes.level for the same. The exporter automatically maps the two, except if a “level” attribute already exists.

Deprecated configuration

The following options are now deprecated:
  • labels.{attributes/resource}. Deprecated and will be removed by v0.59.0. See the Labels section for more information.
  • labels.record. Deprecated and will be removed by v0.59.0. See the Labels section for more information.
  • tenant: Deprecated and will be removed by v0.59.0. See the Tenant information section for more information.
  • format Deprecated without replacement. See the Format section for more information.

Advanced Configuration

Several helper files are leveraged to provide additional capabilities automatically:

Configuration

Example Configuration

loki:
  endpoint: "https://loki:3100/loki/api/v1/push"
loki/allsettings:
  endpoint: "https://loki:3100/loki/api/v1/push"
  tls:
    insecure: true
    ca_file: /var/lib/mycert.pem
    cert_file: certfile
    key_file: keyfile
  timeout: 10s
  read_buffer_size: 123
  write_buffer_size: 345
  sending_queue:
    enabled: true
    num_consumers: 2
    queue_size: 10
  retry_on_failure:
    enabled: true
    initial_interval: 10s
    max_interval: 60s
    max_elapsed_time: 10m
  headers:
    "X-Custom-Header": "loki_rocks"

Last generated: 2026-04-14