receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
exporters:
debug:
verbosity: detailed
sampling_initial: 5
sampling_thereafter: 200
service:
pipelines:
logs:
receivers: [otlp]
exporters: [debug]
// stability: experimental — start Alloy with --stability.level=experimental,
// or it exits at startup instead of running without the component.
otelcol.receiver.otlp "default" {
grpc {
endpoint = "0.0.0.0:4317"
}
output {
logs = [otelcol.exporter.debug.default.input]
}
}
otelcol.exporter.debug "default" {
verbosity = "detailed"
sampling_initial = 5
sampling_thereafter = 200
}
Alloy runs components below generally-available only when you ask it to, so start it with --stability.level=experimental. Without the flag Alloy exits at startup instead of running with the component disabled.
Complete config files, each checked with the tool's own validate command (otelcol-contrib v0.161.0, Grafana Alloy v1.19.2).
The gotcha
The logging exporter that older blog posts still show is deprecated in favour of debug. Keep the sampling settings: detailed verbosity on a busy pipeline floods the collector log otherwise.
Manage this across a fleet
LinkMesh manages collector configuration across a fleet from one self-hosted control plane, so a change like this is made once rather than host by host. The first 25 Collectors are free after a no-card registration in the OpenSight Customer Portal (5 without one).