diff --git a/deploy/observability/otel-collector-config.yaml b/deploy/observability/otel-collector-config.yaml index e7b7dc4..d62b574 100644 --- a/deploy/observability/otel-collector-config.yaml +++ b/deploy/observability/otel-collector-config.yaml @@ -26,7 +26,7 @@ processors: send_batch_size: 1024 exporters: - # Forward everything to the OpenObserve OTLP/HTTP endpoint. + # Forward logs and traces to the OpenObserve OTLP/HTTP endpoint. otlphttp/openobserve: endpoint: http://openobserve:5080/api/default headers: @@ -34,6 +34,14 @@ exporters: tls: insecure: true + # OpenObserve metrics are ingested via Prometheus remote-write. + prometheusremotewrite/openobserve: + endpoint: http://openobserve:5080/api/default/prometheus/api/v1/write + headers: + Authorization: Basic ${env:OPENOBSERVE_AUTH_TOKEN} + tls: + insecure: true + # Echo pipeline data to the collector's own logs (useful for debugging). debug: verbosity: detailed @@ -47,7 +55,7 @@ service: metrics: receivers: [otlp, prometheus] processors: [batch] - exporters: [otlphttp/openobserve] + exporters: [prometheusremotewrite/openobserve] logs: receivers: [otlp] processors: [batch] diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 6c87244..687847b 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -1395,8 +1395,11 @@ enforcing the adapter boundary even in dependency ordering. (`OTEL_EXPORTER_OTLP_ENDPOINT`). - The collector also scrapes Prometheus `/metrics` from `api:9100` and each worker (`:9101`/`:9102`/`:9104`/`:9105`/`:9103`). -- A dedicated `otlphttp/openobserve` exporter forwards all signals to +- `otlphttp/openobserve` exporter forwards logs and traces to `http://openobserve:5080/api/default` using `OPENOBSERVE_AUTH_TOKEN`. +- `prometheusremotewrite/openobserve` exporter forwards metrics to + `http://openobserve:5080/api/default/prometheus/api/v1/write` because + OpenObserve ingests metrics through the Prometheus remote-write path. - OpenObserve UI is exposed under `/openobserve/` via nginx. ### OpenTelemetry (`core/telemetry.py`)