Files
rippled/docker/telemetry/docker-compose.grafanacloud.yaml
Pratik Mankawde 3860c93db2 refactor(telemetry): route dashboards, runbook and collector work to phase-9
These changes were developed on the phase-10 branch but belong to content this
branch and its upstreams introduced. Carrying them on phase-10 made its PR diff
report churn in files phase-10 does not own, and left each PR claiming a scope
that did not match its contents.

Moved here from phase-10 (identical content, no functional change):

- Dashboards: all 14 existing boards plus the new log-derived-insights board.
- Docs: telemetry-runbook.md (minus the workload/benchmark sections, which
  describe phase-10 tooling) and the new telemetry-glossary.md.
- Grafana Cloud + Alloy export path: collector config, compose override, the
  two .env examples and alloy/config.alloy.
- Local stack: otel-collector-config.yaml gains sub-millisecond and
  second-scale spanmetrics buckets, pins unit=ms, and promotes
  close_time_correct; integration-test.sh and TESTING.md follow.
- Node configs: exported_instance -> service_instance_id in comments; the
  mainnet sample now logs at warning to bound log volume.
- Metrics code: Telemetry.cpp builds the metrics pipeline in the constructor
  via initMetrics() so the global MeterProvider is published before any
  subsystem creates a beast::insight instrument, and the histogram view keeps
  each instrument's own name instead of collapsing them under one series.
  MetricsRegistry gains a last_close_time gauge and skips negative job-queue
  durations. OTelCollector drops an unused accessor.
- Naming CI: xrpl_work_item joins EXTERNAL_INFRA_LABELS and Rule E accepts the
  dotted perf-iac resource-attribute form. This must travel with the
  dashboards and runbook that reference those labels, or the rules fail.
- Doxygen input glob no longer recurses dot-directories.

Sections describing phase-10 tooling stay on phase-10 and keep their
"Future Enhancement" / "Planned, not yet implemented" markers here; phase-10
removes those markers when it lands the tooling.
2026-08-04 16:10:04 +01:00

29 lines
1.3 KiB
YAML

# Compose override — enable Grafana Cloud export at runtime.
#
# Layer this on top of the base stack to swap the collector onto the
# Grafana Cloud dual-export config and inject the OTLP credentials. The
# base docker-compose.yml is unchanged, so plain `up` stays local-only.
#
# Usage:
# 1. Put your three Grafana Cloud values in docker/telemetry/.env.grafanacloud
# (template: .env.grafanacloud.example). That file is gitignored.
# 2. Bring the stack up with BOTH compose files:
# docker compose -f docker/telemetry/docker-compose.yml \
# -f docker/telemetry/docker-compose.grafanacloud.yaml up -d
# 3. To go back to local-only, bring the stack up with just the base file.
#
# Log mount: inherited from the base compose (./data/logs -> /var/log/xrpld).
# Both nodes' xrpld cfgs write to docker/telemetry/data/logs/<net>/debug.log,
# so no per-box remap is needed here.
services:
otel-collector:
volumes:
# 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
# Secrets from the env file, injected as container env and
# resolved by the collector via ${env:...}.
env_file:
- .env.grafanacloud