Commit Graph

363 Commits

Author SHA1 Message Date
Pratik Mankawde
99458be8eb Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation 2026-07-06 16:50:31 +01:00
Pratik Mankawde
f64f4b35e7 config(telemetry): use generic /var/log/xrpld path, drop personal home dir
Replace the hardcoded /home/pratik/xrpld-logs path with the conventional
/var/log/xrpld in the mainnet config's [debug_logfile], the docker-compose
log volume mount, and the collector-config comment. Removes a personal home
directory from shipped config.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 16:50:21 +01:00
Pratik Mankawde
dff12da632 Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation 2026-07-06 16:46:37 +01:00
Pratik Mankawde
b5d7e3984f docs(telemetry): add Alerting section, drop phase label, expand alerting task
- Add an operator-facing Alerting section to the runbook covering the six
  provisioned Grafana rules and how to point them at a real receiver.
- Strip the "(Phase 9)" suffix from the MetricsRegistry Gauges heading.
- ALERTING.md: drop the internal dev-phase reference from the intro.
- Phase9_taskList.md: expand Task 9.9 to describe the provisioned alerting
  (rules, contact point, policy, ALERTING.md runbook).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 16:46:14 +01:00
Pratik Mankawde
4c055473e7 Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation 2026-07-06 16:25:41 +01:00
Pratik Mankawde
7cabf91a0d feat(telemetry): add provisioned Grafana alert rules for phase-9 metrics
Add operator-facing alerting on the health-critical metrics phase 9 emits,
completing the "alerting rules" deliverable already listed in the phase-9
task list and Jira story.

Provisioned YAML under grafana/provisioning/alerting/ (auto-loaded by the
Grafana container; no docker-compose change needed):
- rules.yaml: 6 alerts in 3 groups — consensus/ledger health, validator
  health, job queue. Each is a query(A, 5m rate/quantile by exported_instance)
  -> reduce(B, last) -> threshold(C) on the Prometheus datasource.
- contactpoints.yaml: xrpld-default webhook receiver (local-dev placeholder).
- policies.yaml: flat routing to xrpld-default, grouped by
  alertname + exported_instance.

Also adds docker/telemetry/ALERTING.md runbook (per-alert meaning, causes,
threshold tuning, how to point alerts at a real receiver) and the design spec.

Verified live: Grafana 11.5.2 provisioned all 6 rules with no rule in error
health; contact point loaded.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 16:25:15 +01:00
Pratik Mankawde
58973bc18b fix(telemetry): wire datasource variable through all panels and filters
Filter dropdowns were empty on Grafana Cloud: template query-variables
referenced uid ${DS_PROMETHEUS} (a datasource variable that had no value
and was hidden), while panels used the bare default datasource. So panels
rendered but Service/Environment/Network/Node variables resolved against
nothing.

Wire DS_PROMETHEUS (and DS_TEMPO where used) through every panel, target,
annotation, and query-variable, and make the pickers visible. Empty
current value means each instance auto-selects its default datasource of
that type, so one dashboard set works on both the local stack and Grafana
Cloud without per-instance uids.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 03:50:54 +01:00
Pratik Mankawde
61649a3fab fix(telemetry): make dashboard filters work on Grafana Cloud + strip SDK attrs
Grafana Cloud ingests metrics via OTLP with no Prometheus scrape, so the
tier/instance resource attributes never became series labels the way the
local prometheus exporter promotes them. Dashboard $node,
$deployment_environment, and $xrpl_network_type filters therefore matched
nothing on Cloud (only service_name existed).

Split the metrics pipeline: metrics/local keeps the Prometheus exporter
(unchanged label promotion), metrics/cloud adds a transform that copies
service.instance.id -> exported_instance, deployment.environment ->
deployment_environment, and xrpl.network.type -> xrpl_network_type onto
datapoint labels so the same dashboards filter correctly on both backends.
Also strip telemetry.sdk.* on all pipelines. Validated against
otel-collector-contrib 0.121.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 03:26:55 +01:00
Pratik Mankawde
b30e11b6c1 Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation 2026-07-04 03:25:49 +01:00
Pratik Mankawde
e1ef515671 Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill 2026-07-04 03:25:41 +01:00
Pratik Mankawde
be50ecda06 Merge branch 'pratik/otel-phase7-native-metrics' into pratik/otel-phase8-log-correlation
# Conflicts:
#	docker/telemetry/otel-collector-config.yaml
2026-07-04 03:25:32 +01:00
Pratik Mankawde
f600660364 Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
# Conflicts:
#	docker/telemetry/otel-collector-config.yaml
2026-07-04 03:24:45 +01:00
Pratik Mankawde
5cf22a9758 Merge branch 'pratik/otel-phase5-docs-deployment' into pratik/otel-phase6-statsd
# Conflicts:
#	docker/telemetry/otel-collector-config.yaml
2026-07-04 03:24:02 +01:00
Pratik Mankawde
4e21aefe74 Merge branch 'pratik/otel-phase3-tx-tracing' into pratik/otel-phase4-consensus-tracing 2026-07-04 03:22:59 +01:00
Pratik Mankawde
bb0df16c90 Merge branch 'pratik/otel-phase2-rpc-tracing' into pratik/otel-phase3-tx-tracing 2026-07-04 03:22:59 +01:00
Pratik Mankawde
5031ab2b4e Merge branch 'pratik/otel-phase1c-rpc-integration' into pratik/otel-phase2-rpc-tracing 2026-07-04 03:22:59 +01:00
Pratik Mankawde
80d33662e4 feat(telemetry): strip SDK-injected resource attributes at the collector
Add a resource/stripsdk processor that deletes telemetry.sdk.language,
telemetry.sdk.name, and telemetry.sdk.version (auto-added by the OTel SDK
to every Resource). Wire it into the traces pipeline; the metrics and
logs pipelines pick it up on the branches that introduce them.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 03:22:47 +01:00
Pratik Mankawde
9631075634 docs(telemetry): fix stale system-node-health refs and dashboard count in validator
Update comments to the renamed node-health uid and correct the dashboard
count to 14 (was 13).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 03:01:42 +01:00
Pratik Mankawde
dbd2c7ad1b refactor(telemetry): update phase-10 refs to bare dashboard uids
Point the workload validation uid list and implementation-phases doc at
the renamed bare dashboard uids.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 02:50:27 +01:00
Pratik Mankawde
21bcedfd4a Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation 2026-07-04 02:49:47 +01:00
Pratik Mankawde
83f8fb7063 Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
# Conflicts:
#	docker/telemetry/grafana/dashboards/consensus-health.json
#	docker/telemetry/grafana/dashboards/ledger-operations.json
#	docker/telemetry/grafana/dashboards/node-health.json
#	docker/telemetry/grafana/dashboards/peer-network.json
#	docker/telemetry/grafana/dashboards/rpc-pathfinding.json
#	docker/telemetry/grafana/dashboards/rpc-performance.json
#	docker/telemetry/grafana/dashboards/transaction-overview.json
2026-07-04 02:49:39 +01:00
Pratik Mankawde
85ce6467d0 Merge branch 'pratik/otel-phase7-native-metrics' into pratik/otel-phase8-log-correlation 2026-07-04 02:47:50 +01:00
Pratik Mankawde
1ea7bb5252 Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
# Conflicts:
#	OpenTelemetryPlan/09-data-collection-reference.md
2026-07-04 02:47:42 +01:00
Pratik Mankawde
25868f2740 refactor(telemetry): rename xrpld-* dashboards to bare names, bare uids across all dashboards
Rename the 4 xrpld-* dashboard files to bare names and set every
dashboard uid to its bare filename stem; update doc/plan references.
Removes the redundant xrpld-/system- prefixes now that titles are clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 02:46:37 +01:00
Pratik Mankawde
2c590a47c5 refactor(telemetry): rename system-* dashboards to bare names, drop redundant prefix
Rename the 5 system-* dashboard files to bare domain names (uid ==
filename stem) and update all doc references. The system- prefix was
redundant now that titles no longer carry a recorder-pipeline suffix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 02:45:39 +01:00
Pratik Mankawde
d5d9d1d8da refactor(telemetry): drop redundant xrpld- prefix from dashboard uids
Make dashboard uids bare domain names (uid == filename stem) and update
doc references. Grafana links/bookmarks to the old uids will need
refreshing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 02:44:54 +01:00
Pratik Mankawde
3c4e67b33f Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation 2026-07-04 02:33:03 +01:00
Pratik Mankawde
6ff90a2892 Merge branch 'pratik/otel-phase7-native-metrics' into pratik/otel-phase8-log-correlation 2026-07-04 02:32:55 +01:00
Pratik Mankawde
1839fa15e6 docs(telemetry): dashboard-level descriptions to plain text
Grafana renders the dashboard-level description as plain text (not
markdown), so the h6 headings/italics showed as literal characters.
Convert to plain 'What this shows:' / 'Use it to:' labeled lines. Panel
descriptions (which DO render markdown) are unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 02:32:37 +01:00
Pratik Mankawde
78fb08ef38 docs(telemetry): dashboard-level descriptions to plain text
Grafana renders the dashboard-level description as plain text (not
markdown), so the h6 headings/italics showed as literal characters.
Convert to plain 'What this shows:' / 'Use it to:' labeled lines. Panel
descriptions (which DO render markdown) are unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 02:32:23 +01:00
Pratik Mankawde
797d9449f3 Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation 2026-07-04 02:22:32 +01:00
Pratik Mankawde
ca5637e1d2 Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill 2026-07-04 02:22:26 +01:00
Pratik Mankawde
324b58d38f Merge branch 'pratik/otel-phase7-native-metrics' into pratik/otel-phase8-log-correlation 2026-07-04 02:22:20 +01:00
Pratik Mankawde
3abf7086a3 docs(telemetry): reformat dashboard descriptions to structured markdown; fix inaccurate/broken panels from review
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 02:20:56 +01:00
Pratik Mankawde
9f8a4c9561 docs(telemetry): reformat system dashboard descriptions to structured markdown; fix malformed traffic-category query
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 02:17:28 +01:00
Pratik Mankawde
f6cbc8d4e7 fix(telemetry): drop deleted RPC OTel dashboard uid from workload validation
The separate xrpld-rpc-perf-otel dashboard was merged into xrpld-rpc-perf,
so the validation harness must no longer expect it to exist.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 22:33:37 +01:00
Pratik Mankawde
628726b51b Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
# Conflicts:
#	docker/telemetry/grafana/dashboards/rpc-performance.json
#	docker/telemetry/grafana/dashboards/xrpld-rpc-perf-otel.json
2026-07-03 22:31:15 +01:00
Pratik Mankawde
36e4056869 feat(telemetry): merge native per-method RPC panels into RPC Performance
Fold the 7 panels from the separate RPC Performance (OTel) dashboard into
RPC Performance as a labelled 'Per-Method Detail' section, and retire the
duplicate dashboard. The two showed the same subject (RPC) from two data
sources; one dashboard with two sections is clearer and loses no panel.
Adds the $method template variable for per-method filtering.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 22:26:19 +01:00
Pratik Mankawde
adb4c7cdb4 docs(telemetry): re-clean 5 reworked dashboards on phase9 structure, retag, strip suffixes
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 22:23:25 +01:00
Pratik Mankawde
cc3cb31cd9 docs(telemetry): drop pipeline prefixes from node-health section headers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 22:14:07 +01:00
Pratik Mankawde
10499f9f1a docs(telemetry): re-clean consensus and node-health descriptions on phase9 structure
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 22:12:51 +01:00
Pratik Mankawde
42abeb70a7 Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
# Conflicts:
#	docker/telemetry/grafana/dashboards/consensus-health.json
#	docker/telemetry/grafana/dashboards/ledger-operations.json
#	docker/telemetry/grafana/dashboards/peer-network.json
#	docker/telemetry/grafana/dashboards/rpc-performance.json
#	docker/telemetry/grafana/dashboards/system-ledger-data-sync.json
#	docker/telemetry/grafana/dashboards/system-network-traffic.json
#	docker/telemetry/grafana/dashboards/system-node-health.json
#	docker/telemetry/grafana/dashboards/system-overlay-traffic-detail.json
#	docker/telemetry/grafana/dashboards/system-rpc-pathfinding.json
#	docker/telemetry/grafana/dashboards/transaction-overview.json
2026-07-03 22:06:39 +01:00
Pratik Mankawde
958e379e0a docs(telemetry): retag and rewrite native dashboard descriptions to describe data not pipeline
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 22:02:05 +01:00
Pratik Mankawde
e86c1adc5d Merge branch 'pratik/otel-phase7-native-metrics' into pratik/otel-phase8-log-correlation 2026-07-03 21:57:45 +01:00
Pratik Mankawde
b0d46af0ca Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics 2026-07-03 21:57:27 +01:00
Pratik Mankawde
50377df271 docs(telemetry): rewrite dashboard descriptions and tags to describe data not pipeline
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 21:56:08 +01:00
Pratik Mankawde
7befb16705 docs(telemetry): drop (System Metrics) suffix, retag, rewrite descriptions to describe data not pipeline
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 21:54:07 +01:00
Pratik Mankawde
9a4a97cdec docs(telemetry): add dashboard-level descriptions for the info button
Consensus Health, Ledger Operations, and Transaction Overview had no
top-level description, so Grafana showed no info button. Add a one-line
summary of what each dashboard shows and its data source.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 21:24:36 +01:00
Pratik Mankawde
6f47a7ab77 Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation 2026-07-03 21:18:47 +01:00
Pratik Mankawde
55712c1388 Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill 2026-07-03 21:18:47 +01:00