otelcol.exporter.loki
otelcol.exporter.loki accepts OTLP-formatted logs from other otelcol components, converts them to Loki-formatted log entries, and forwards them to loki components.
Note
otelcol.exporter.lokiis a custom component unrelated to thelokiexporterfrom the OpenTelemetry Collector.
The attributes of the OTLP log aren’t converted to Loki attributes by default. To convert them, the OTLP log should contain special “hint” attributes:
- To convert OTLP resource attributes to Loki labels, use the
loki.resource.labelshint attribute. - To convert OTLP log attributes to Loki labels, use the
loki.attribute.labelshint attribute.
Labels will be translated to a Prometheus format, which is more constrained than the OTLP format. For examples on label translation, see the Convert OTLP attributes to Loki labels section.
Multiple otelcol.exporter.loki components can be specified by giving them different labels.
Usage
otelcol.exporter.loki "<LABEL>" {
forward_to = [...]
}Arguments
You can use the following argument with otelcol.exporter.loki:
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
forward_to | list(receiver) | Where to forward converted Loki logs. | yes |
Blocks
The otelcol.exporter.loki component doesn’t support any blocks. You can configure this component with arguments.
Exported fields
The following fields are exported and can be referenced by other components:
| Name | Type | Description |
|---|---|---|
input | otelcol.Consumer | A value that other components can use to send telemetry data to. |
input accepts otelcol.Consumer data for logs. Other telemetry signals are ignored.
Logs sent to input are converted to Loki-compatible log entries and are forwarded to the forward_to argument in sequence.
Component health
otelcol.exporter.loki is only reported as unhealthy if given an invalid configuration.
Debug information
otelcol.exporter.loki doesn’t expose any component-specific debug
information.
Examples
Basic usage
This example accepts OTLP logs over gRPC, transforms them and forwards the converted log entries to loki.write:
otelcol.receiver.otlp "default" {
grpc {}
output {
logs = [otelcol.exporter.loki.default.input]
}
}
otelcol.exporter.loki "default" {
forward_to = [loki.write.local.receiver]
}
loki.write "local" {
endpoint {
url = "loki:3100"
}
}Convert OTLP attributes to Loki labels
This example converts the following attributes to Loki labels:
- The
service.nameandservice.namespaceOTLP resource attributes. - The
event.domainandevent.nameOTLP log attributes.
Labels will be translated to a Prometheus format. For example:
| OpenTelemetry Attribute | Prometheus Label |
|---|---|
name | name |
host.name | host_name |
host_name | host_name |
name (of the host) | name__of_the_host_ |
2 cents | key_2_cents |
__name | __name |
_name | key_name |
_name | _name (if PermissiveLabelSanitization is enabled) |
otelcol.receiver.otlp "default" {
grpc {}
output {
logs = [otelcol.processor.attributes.default.input]
}
}
otelcol.processor.attributes "default" {
action {
key = "loki.attribute.labels"
action = "insert"
value = "event.domain, event.name"
}
action {
key = "loki.resource.labels"
action = "insert"
value = "service.name, service.namespace"
}
output {
logs = [otelcol.exporter.loki.default.input]
}
}
otelcol.exporter.loki "default" {
forward_to = [loki.write.local.receiver]
}
loki.write "local" {
endpoint {
url = "loki:3100"
}
}Compatible components
otelcol.exporter.loki can accept arguments from the following components:
- Components that export Loki
LogsReceiver
otelcol.exporter.loki has exports that can be consumed by the following components:
- Components that consume OpenTelemetry
otelcol.Consumer
Note
Connecting some components may not be sensible or components may require further configuration to make the connection work correctly. Refer to the linked documentation for more details.



