Status | |
---|---|
Stability | beta |
Supported pipeline types | logs |
Distributions | contrib |
Exports data via HTTP to Loki.
The following settings are required:
endpoint
(no default): The target URL to send Loki log streams to (e.g.:http:https://loki:3100/loki/api/v1/push
).
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 Labels section for more information.format
Deprecated without replacement. If you rely on this, let us know by opening an issue before v0.59.0 and we'll assist you in finding a solution.
Example:
receivers:
otlp:
exporters:
loki:
endpoint: https://loki.example.com:3100/loki/api/v1/push
processors:
attributes:
actions:
- action: insert
key: event_domain
from_attribute: event.domain
- action: insert
key: loki.attribute.labels
value: event_domain
resource:
attributes:
- action: insert
key: service_name
from_attribute: service.name
- action: insert
key: service_namespace
from_attribute: service.namespace
- action: insert
key: loki.resource.labels
value: service_name, service_namespace
extensions:
service:
extensions:
pipelines:
logs:
receivers: [otlp]
processors: [resource, attributes]
exporters: [loki]
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
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: event_domain
from_attribute: event.domain
- action: insert
key: loki.attribute.labels
value: event_domain
resource:
attributes:
- action: insert
key: service_name
from_attribute: service.name
- action: insert
key: loki.resource.labels
value: service_name
Currently, Loki does not support labels with dots.
That’s why to add Loki label based on event.domain
OTLP attribute we need to specify two actions. The first one inserts a new attribute event_domain
from the OTLP attribute event.domain
. The second one is a hint for Loki, specifying that the event_domain
attribute should be placed as a Loki label.
The same approach is applicable to placing Loki labels from resource attribute service.name
.
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:https://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
- action: insert
key: host_name
from_attribute: 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.
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.
Several helper files are leveraged to provide additional capabilities automatically: