Stop the filelog-storage overlay disabling cloud auth

The collector exits at startup whenever the Grafana Cloud stack is brought up:

  cannot start pipelines: failed to start "otlphttp/grafanacloud" exporter:
  failed to resolve authenticator "basicauth/grafanacloud": authenticator not found

The developer stack passes otel-collector-filestorage.yaml as a second --config to
persist filelog read offsets. The collector replaces lists on merge rather than
appending them, which that file notes, and it repeats the BASE config's
service.extensions -- [health_check, file_storage/filelog]. Layer the cloud
overlay on top and the base config is swapped for the cloud one, whose list also
carries basicauth/grafanacloud; the storage overlay still comes last, so the
authenticator is dropped and the exporter that needs it cannot start.

Nothing degrades: the collector refuses to start at all, so a host brought up this
way exports no telemetry anywhere, local or cloud.

Adds a cloud variant of the overlay naming all three extensions, mounted by
docker-compose.grafanacloud.yaml over the base one so the command line is
unchanged. The base variant stays as it is for stacks that do not use the cloud
exporter.
This commit is contained in:
Pratik Mankawde
2026-08-17 20:59:23 +01:00
parent 1933b34334
commit eefadf43fd
2 changed files with 30 additions and 0 deletions

View File

@@ -22,6 +22,10 @@ services:
# Mount the Grafana Cloud collector config over the default path
# (replaces local-only config for this run; file on disk untouched).
- ./otel-collector-config.grafanacloud.yaml:/etc/otel-collector-config.yaml:ro
# Override the base filelog-storage overlay with the cloud variant. The
# collector replaces service.extensions on merge, and the base variant
# omits basicauth/grafanacloud, which stops the cloud exporter starting.
- ./otel-collector-filestorage.grafanacloud.yaml:/etc/otel-collector-filestorage.yaml:ro
# Secrets from the env file, injected as container env and
# resolved by the collector via ${env:...}.
env_file:

View File

@@ -0,0 +1,26 @@
# Filelog offset persistence for the Grafana Cloud stack.
#
# Same purpose as otel-collector-filestorage.yaml, and needed for the same
# reason, but it cannot be reused as-is. The collector replaces lists on merge
# rather than appending, so whichever config is passed last decides
# service.extensions outright. The base variant repeats the base config's list,
# [health_check, file_storage/filelog], which drops basicauth/grafanacloud and
# leaves the cloud exporter unable to resolve its authenticator -- the collector
# then exits at startup with "authenticator not found" rather than degrading.
#
# Applied by docker-compose.grafanacloud.yaml, which mounts it over the base
# variant so the command line stays unchanged.
extensions:
file_storage/filelog:
directory: /var/lib/otelcol/file_storage
create_directory: true
receivers:
filelog:
storage: file_storage/filelog
# Must name every extension the cloud config needs, not just this file's own:
# lists are replaced, so anything omitted here is omitted from the collector.
service:
extensions: [health_check, file_storage/filelog, basicauth/grafanacloud]