otelcol.exporter.file
otelcol.exporter.file accepts metrics, logs, and traces telemetry data from other otelcol components and writes it to files on disk.
You can write data in JSON or Protocol Buffers proto format.
You can optionally enable file rotation, compression, and separate output files based on a resource attribute.
Note
otelcol.exporter.fileis a wrapper over the upstream OpenTelemetry Collector Contribfileexporterexporter. Bug reports or feature requests will be redirected to the upstream repository, if necessary.
You can specify multiple otelcol.exporter.file components by giving them different labels.
Usage
otelcol.exporter.file "<LABEL>" {
path = "<PATH>"
}Arguments
You can use the following arguments with otelcol.exporter.file:
You can’t enable append and compression together.
Note
The upstream
encodingargument isn’t supported. Useformatinstead.
Blocks
You can use the following blocks with otelcol.exporter.file:
You can’t enable append and rotation together.
debug_metrics
The debug_metrics block configures the metrics that this component generates to monitor its state.
The following arguments are supported:
disable_high_cardinality_metrics is the Alloy equivalent to the telemetry.disableHighCardinalityMetrics feature gate in the OpenTelemetry Collector.
It removes attributes that could cause high cardinality metrics.
For example, attributes with IP addresses and port numbers in metrics about HTTP and gRPC connections are removed.
Note
If configured,
disable_high_cardinality_metricsonly applies tootelcol.exporter.*andotelcol.receiver.*components.
group_by
The group_by block writes telemetry to separate files based on a resource attribute.
When group_by.enabled is true:
pathmust contain exactly one*character.- The exporter replaces the
*with theresource_attributevalue. rotationsettings don’t apply.
rotation
The rotation block configures rolling log file behavior.
Exported fields
otelcol.exporter.file doesn’t export any fields.
Component health
otelcol.exporter.file is only reported as unhealthy if given an invalid configuration.
Debug information
otelcol.exporter.file doesn’t expose any component-specific debug information.
Examples
The following examples demonstrate how you can use otelcol.exporter.file.
Basic file export
otelcol.exporter.file "default" {
path = "/tmp/traces.json"
}File export with rotation
otelcol.exporter.file "rotated" {
path = "/var/log/telemetry.json"
format = "json"
rotation {
max_megabytes = 50
max_days = 7
max_backups = 10
localtime = true
}
}File export with compression
otelcol.exporter.file "compressed" {
path = "/tmp/traces.jsonl"
format = "proto"
compression = "zstd"
}Group by resource attribute
otelcol.exporter.file "grouped" {
path = "/tmp/logs/*/service.log"
group_by {
enabled = true
resource_attribute = "service.name"
max_open_files = 50
}
}Complete pipeline
otelcol.receiver.otlp "default" {
grpc {
endpoint = "0.0.0.0:4317"
}
http {
endpoint = "0.0.0.0:4318"
}
output {
metrics = [otelcol.exporter.file.default.input]
logs = [otelcol.exporter.file.default.input]
traces = [otelcol.exporter.file.default.input]
}
}
otelcol.exporter.file "default" {
path = "/tmp/telemetry.json"
format = "json"
flush_interval = "5s"
rotation {
max_megabytes = 100
max_backups = 5
}
}Technical details
The otelcol.exporter.file component writes telemetry data to files on disk in either JSON or Protocol Buffers format.
It supports:
- File rotation: Automatically rotate files based on size, age, or number of backups
- Compression: Compress output files using
zstdalgorithm - Group by attributes: Write to different files based on resource attribute values
- Flushing: Configurable flush intervals to control write frequency
File formats
- JSON format: Each telemetry record is written as a separate line in JSON format (JSONL)
protoformat: Binary Protocol Buffers format with length-prefixed messages
File naming with rotation
When rotation is enabled, rotated files are renamed with a timestamp:
- Original:
data.json - Rotated:
data-2023-09-20T10-30-00.123.json
Group by functionality
When group_by is enabled, files are created dynamically based on resource attribute values:
- Path template:
/logs/*/app.log - Resource attribute
service.name=frontend - Resulting file:
/logs/frontend/app.log
Compatible components
otelcol.exporter.file 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.