From 45ffe8e2eced4f8769011346ccf0f3b532860271 Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Tue, 31 Mar 2026 14:03:19 +0100 Subject: [PATCH] fix(telemetry): add missing counters, fix dashboard metric name, clean dead code - Add rippled_validation_agreements_total and rippled_validation_missed_total counter declarations and creation (wiring to ValidationTracker pending rebase) - Fix peer-quality dashboard: query rippled_server_info{metric="peer_disconnects_resources"} instead of non-existent rippled_Overlay_Peer_Disconnects_Charges - Remove dead getCountsJson() call in storageDetail callback Co-Authored-By: Claude Opus 4.6 (1M context) --- .../grafana/dashboards/rippled-peer-quality.json | 2 +- src/xrpld/telemetry/MetricsRegistry.cpp | 8 ++++---- src/xrpld/telemetry/MetricsRegistry.h | 7 +++++++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/docker/telemetry/grafana/dashboards/rippled-peer-quality.json b/docker/telemetry/grafana/dashboards/rippled-peer-quality.json index a611aad549..036fd3bb13 100644 --- a/docker/telemetry/grafana/dashboards/rippled-peer-quality.json +++ b/docker/telemetry/grafana/dashboards/rippled-peer-quality.json @@ -250,7 +250,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_Overlay_Peer_Disconnects_Charges{exported_instance=~\"$node\"}", + "expr": "rippled_server_info{metric=\"peer_disconnects_resources\",exported_instance=~\"$node\"}", "legendFormat": "Disconnects [{{exported_instance}}]" } ], diff --git a/src/xrpld/telemetry/MetricsRegistry.cpp b/src/xrpld/telemetry/MetricsRegistry.cpp index b3708ccac6..60172c7ed3 100644 --- a/src/xrpld/telemetry/MetricsRegistry.cpp +++ b/src/xrpld/telemetry/MetricsRegistry.cpp @@ -148,6 +148,10 @@ MetricsRegistry::start(std::string const& endpoint, std::string const& instanceI meter_->CreateUInt64Counter("rippled_state_changes_total", "Total operating mode changes"); jqTransOverflowCounter_ = meter_->CreateUInt64Counter( "rippled_jq_trans_overflow_total", "Total job queue transaction overflows"); + validationAgreementsCounter_ = meter_->CreateUInt64Counter( + "rippled_validation_agreements_total", "Total validation agreements"); + validationMissedCounter_ = + meter_->CreateUInt64Counter("rippled_validation_missed_total", "Total validation misses"); // Register all observable (async) gauges. registerAsyncGauges(); @@ -951,10 +955,6 @@ MetricsRegistry::registerAsyncGauges() try { - // Use getCountsJson which includes backend-reported sizes. - Json::Value obj(Json::objectValue); - app.getNodeStore().getCountsJson(obj); - auto observe = [&](char const* name, int64_t value) { opentelemetry::nostd::get>>(result) diff --git a/src/xrpld/telemetry/MetricsRegistry.h b/src/xrpld/telemetry/MetricsRegistry.h index f0536aad12..8028e98602 100644 --- a/src/xrpld/telemetry/MetricsRegistry.h +++ b/src/xrpld/telemetry/MetricsRegistry.h @@ -372,6 +372,13 @@ private: /// Counter: rippled_jq_trans_overflow_total — incremented on job queue transaction overflows. opentelemetry::nostd::unique_ptr> jqTransOverflowCounter_; + /// Counter: rippled_validation_agreements_total — incremented by ValidationTracker on + /// agreement. + opentelemetry::nostd::unique_ptr> + validationAgreementsCounter_; + /// Counter: rippled_validation_missed_total — incremented by ValidationTracker on miss. + opentelemetry::nostd::unique_ptr> + validationMissedCounter_; /** Register all observable gauge callbacks with the OTel SDK. Called once during start().