From 859bd21ca5aa21e990922fa95b563b144065acac Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Thu, 4 Jun 2026 12:16:48 +0100 Subject: [PATCH 1/3] only render p100. Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> --- .../grafana/dashboards/xrpld-job-queue.json | 44 ++-------- .../dashboards/xrpld-rpc-perf-otel.json | 24 ++---- src/xrpld/telemetry/MetricsRegistry.cpp | 82 +++++++++++++++++-- 3 files changed, 89 insertions(+), 61 deletions(-) diff --git a/docker/telemetry/grafana/dashboards/xrpld-job-queue.json b/docker/telemetry/grafana/dashboards/xrpld-job-queue.json index b237501aed..0f206eff82 100644 --- a/docker/telemetry/grafana/dashboards/xrpld-job-queue.json +++ b/docker/telemetry/grafana/dashboards/xrpld-job-queue.json @@ -169,7 +169,7 @@ } }, { - "title": "Job Queue Wait Time (P50, P95, P99)", + "title": "Job Queue Wait Time", "description": "Histogram quantiles for time jobs spend waiting in the queue before execution starts. High values indicate thread pool saturation.", "type": "timeseries", "gridPos": { @@ -189,22 +189,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.50, sum by (le, exported_instance) (rate(xrpld_job_queued_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "P50 [{{exported_instance}}]" - }, - { - "datasource": { - "type": "prometheus" - }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(xrpld_job_queued_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "P95 [{{exported_instance}}]" - }, - { - "datasource": { - "type": "prometheus" - }, - "expr": "histogram_quantile(0.99, sum by (le, exported_instance) (rate(xrpld_job_queued_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "P99 [{{exported_instance}}]" + "expr": "histogram_quantile(1.0, sum by (le, exported_instance) (rate(xrpld_job_queued_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", + "legendFormat": "Wait [{{exported_instance}}]" } ], "fieldConfig": { @@ -228,7 +214,7 @@ } }, { - "title": "Job Execution Time (P50, P95, P99)", + "title": "Job Execution Time", "description": "Histogram quantiles for actual job execution time. High values indicate expensive operations or resource contention.", "type": "timeseries", "gridPos": { @@ -248,22 +234,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.50, sum by (le, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "P50 [{{exported_instance}}]" - }, - { - "datasource": { - "type": "prometheus" - }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "P95 [{{exported_instance}}]" - }, - { - "datasource": { - "type": "prometheus" - }, - "expr": "histogram_quantile(0.99, sum by (le, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "P99 [{{exported_instance}}]" + "expr": "histogram_quantile(1.0, sum by (le, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", + "legendFormat": "Exec [{{exported_instance}}]" } ], "fieldConfig": { @@ -287,7 +259,7 @@ } }, { - "title": "Per-Job-Type Execution Time (P95)", + "title": "Per-Job-Type Execution Time", "description": "95th percentile execution time broken down by job type. Identifies the slowest job types.", "type": "timeseries", "gridPos": { @@ -312,7 +284,7 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, histogram_quantile(0.95, sum by (le, job_type, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m]))))", + "expr": "topk(10, histogram_quantile(1.0, sum by (le, job_type, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m]))))", "legendFormat": "{{job_type}} [{{exported_instance}}]" } ], diff --git a/docker/telemetry/grafana/dashboards/xrpld-rpc-perf-otel.json b/docker/telemetry/grafana/dashboards/xrpld-rpc-perf-otel.json index 319dd56313..b1ce4a1941 100644 --- a/docker/telemetry/grafana/dashboards/xrpld-rpc-perf-otel.json +++ b/docker/telemetry/grafana/dashboards/xrpld-rpc-perf-otel.json @@ -169,7 +169,7 @@ } }, { - "title": "RPC Latency (P50, P95, P99) - All Methods", + "title": "RPC Latency - All Methods", "description": "Histogram quantiles for RPC execution time across all methods. Sourced from rpc_method_duration_us histogram.", "type": "timeseries", "gridPos": { @@ -189,22 +189,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.50, sum by (le, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m])))", - "legendFormat": "P50 [{{exported_instance}}]" - }, - { - "datasource": { - "type": "prometheus" - }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m])))", - "legendFormat": "P95 [{{exported_instance}}]" - }, - { - "datasource": { - "type": "prometheus" - }, - "expr": "histogram_quantile(0.99, sum by (le, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m])))", - "legendFormat": "P99 [{{exported_instance}}]" + "expr": "histogram_quantile(1.0, sum by (le, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m])))", + "legendFormat": "Latency [{{exported_instance}}]" } ], "fieldConfig": { @@ -228,7 +214,7 @@ } }, { - "title": "Per-Method Latency P95 (Top 10 Slowest)", + "title": "Per-Method Latency (Top 10 Slowest)", "description": "95th percentile execution time per method. Identifies the slowest RPC endpoints.", "type": "timeseries", "gridPos": { @@ -253,7 +239,7 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, histogram_quantile(0.95, sum by (le, method, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m]))))", + "expr": "topk(10, histogram_quantile(1.0, sum by (le, method, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m]))))", "legendFormat": "{{method}} [{{exported_instance}}]" } ], diff --git a/src/xrpld/telemetry/MetricsRegistry.cpp b/src/xrpld/telemetry/MetricsRegistry.cpp index 97708e2255..79e76ea737 100644 --- a/src/xrpld/telemetry/MetricsRegistry.cpp +++ b/src/xrpld/telemetry/MetricsRegistry.cpp @@ -50,9 +50,14 @@ #include #include #include +#include #include #include +#include #include +#include +#include +#include #include #include #include @@ -73,6 +78,64 @@ namespace metric_sdk = opentelemetry::sdk::metrics; namespace otlp_http = opentelemetry::exporter::otlp; namespace resource = opentelemetry::sdk::resource; +namespace { + +// Microsecond-valued duration histogram instrument names. Each is +// referenced twice — once to register the explicit-bucket view and once +// to create the instrument — so they are named constants to keep the two +// sites in sync (a mismatch would silently drop the bucket override). +constexpr char kJobQueuedDurationUs[] = "xrpld_job_queued_duration_us"; +constexpr char kJobRunningDurationUs[] = "xrpld_job_running_duration_us"; +constexpr char kRpcMethodDurationUs[] = "xrpld_rpc_method_duration_us"; + +/** Register an explicit-bucket histogram view for a microsecond-valued + * instrument. + * + * The SDK's default histogram buckets top out at 10,000 (10 ms when the + * values are microseconds), so any duration above 10 ms saturates and + * every quantile reads as 10 ms. Job wait/run times and RPC latencies + * routinely exceed that, so we install boundaries spanning 100 µs to + * 60 s to capture the real distribution. + * + * @param views The registry to add the view to. + * @param name Instrument name to match (e.g. "xrpld_job_running_duration_us"). + */ +void +addMicrosecondHistogramView(metric_sdk::ViewRegistry& views, std::string const& name) +{ + // Boundaries in microseconds: 100µs, 500µs, 1ms, 5ms, 10ms, 25ms, 50ms, + // 100ms, 250ms, 500ms, 1s, 2.5s, 5s, 10s, 30s, 60s. Covers sub-millisecond + // jobs through multi-second stalls without saturating. + auto config = std::make_shared(); + config->boundaries_ = { + 100.0, + 500.0, + 1'000.0, + 5'000.0, + 10'000.0, + 25'000.0, + 50'000.0, + 100'000.0, + 250'000.0, + 500'000.0, + 1'000'000.0, + 2'500'000.0, + 5'000'000.0, + 10'000'000.0, + 30'000'000.0, + 60'000'000.0}; + + auto selector = metric_sdk::InstrumentSelectorFactory::Create( + metric_sdk::InstrumentType::kHistogram, name, ""); + auto meterSelector = metric_sdk::MeterSelectorFactory::Create("xrpld", "1.0.0", ""); + auto view = + metric_sdk::ViewFactory::Create(name, "", metric_sdk::AggregationType::kHistogram, config); + + views.AddView(std::move(selector), std::move(meterSelector), std::move(view)); +} + +} // namespace + #endif // XRPL_ENABLE_TELEMETRY namespace xrpl::telemetry { @@ -124,9 +187,16 @@ MetricsRegistry::start(std::string const& endpoint, std::string const& instanceI attrs[opentelemetry::semconv::service::kServiceInstanceId] = instanceId; auto resourceAttrs = resource::Resource::Create(attrs); + // Build a view registry with explicit microsecond buckets for the + // duration histograms. Without this they use the SDK default buckets + // (max 10,000 = 10 ms), saturating every quantile at 10 ms. + auto views = std::make_unique(); + addMicrosecondHistogramView(*views, kJobQueuedDurationUs); + addMicrosecondHistogramView(*views, kJobRunningDurationUs); + addMicrosecondHistogramView(*views, kRpcMethodDurationUs); + // Create MeterProvider with resource, then attach the metric reader. - provider_ = metric_sdk::MeterProviderFactory::Create( - std::make_unique(), resourceAttrs); + provider_ = metric_sdk::MeterProviderFactory::Create(std::move(views), resourceAttrs); provider_->AddMetricReader(std::move(reader)); // Get a meter for all xrpld instruments. @@ -142,7 +212,7 @@ MetricsRegistry::start(std::string const& endpoint, std::string const& instanceI rpcErroredCounter_ = meter_->CreateUInt64Counter( "xrpld_rpc_method_errored_total", "Total RPC method calls that errored"); rpcDurationHistogram_ = meter_->CreateDoubleHistogram( - "xrpld_rpc_method_duration_us", "RPC method execution time in microseconds"); + kRpcMethodDurationUs, "RPC method execution time in microseconds"); // Job queue per-type counters and histograms. jobQueuedCounter_ = @@ -152,9 +222,9 @@ MetricsRegistry::start(std::string const& endpoint, std::string const& instanceI jobFinishedCounter_ = meter_->CreateUInt64Counter("xrpld_job_finished_total", "Total jobs completed"); jobQueuedDurationHistogram_ = meter_->CreateDoubleHistogram( - "xrpld_job_queued_duration_us", "Time jobs spent waiting in the queue (microseconds)"); - jobRunningDurationHistogram_ = meter_->CreateDoubleHistogram( - "xrpld_job_running_duration_us", "Job execution time in microseconds"); + kJobQueuedDurationUs, "Time jobs spent waiting in the queue (microseconds)"); + jobRunningDurationHistogram_ = + meter_->CreateDoubleHistogram(kJobRunningDurationUs, "Job execution time in microseconds"); // --- External dashboard parity counters (Task 7.14) --- ledgersClosedCounter_ = meter_->CreateUInt64Counter( From 10b41123824e17479b9a1657a72e5c625d1d6686 Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Thu, 4 Jun 2026 12:46:58 +0100 Subject: [PATCH 2/3] fix(telemetry): use p75/p99 quantiles and add gauge panels for job/rpc latency MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit P100 from a histogram is degenerate — it always returns the upper bound of the highest populated bucket (a single slow outlier pins it to the top boundary), producing a flat line. Revert to meaningful quantiles: - Job Queue Wait Time / Job Execution Time: p75 (typical) + p99 (tail) - Per-Job-Type / Per-Method: p99 - Added gauge panels showing current p99 with green/yellow/red thresholds Co-Authored-By: Claude Opus 4.6 --- .../grafana/dashboards/xrpld-job-queue.json | 93 +++++++++++++++++-- .../dashboards/xrpld-rpc-perf-otel.json | 73 +++++++++++++-- 2 files changed, 151 insertions(+), 15 deletions(-) diff --git a/docker/telemetry/grafana/dashboards/xrpld-job-queue.json b/docker/telemetry/grafana/dashboards/xrpld-job-queue.json index 0f206eff82..e99ae06f22 100644 --- a/docker/telemetry/grafana/dashboards/xrpld-job-queue.json +++ b/docker/telemetry/grafana/dashboards/xrpld-job-queue.json @@ -170,7 +170,7 @@ }, { "title": "Job Queue Wait Time", - "description": "Histogram quantiles for time jobs spend waiting in the queue before execution starts. High values indicate thread pool saturation.", + "description": "Job queue wait time distribution (p75 typical, p99 tail). How long jobs sit in the queue before a worker picks them up.", "type": "timeseries", "gridPos": { "h": 8, @@ -189,8 +189,15 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(1.0, sum by (le, exported_instance) (rate(xrpld_job_queued_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "Wait [{{exported_instance}}]" + "expr": "histogram_quantile(0.75, sum by (le, exported_instance) (rate(xrpld_job_queued_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", + "legendFormat": "p75 Wait [{{exported_instance}}]" + }, + { + "datasource": { + "type": "prometheus" + }, + "expr": "histogram_quantile(0.99, sum by (le, exported_instance) (rate(xrpld_job_queued_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", + "legendFormat": "p99 Wait [{{exported_instance}}]" } ], "fieldConfig": { @@ -215,7 +222,7 @@ }, { "title": "Job Execution Time", - "description": "Histogram quantiles for actual job execution time. High values indicate expensive operations or resource contention.", + "description": "Job execution time distribution (p75 typical, p99 tail). How long jobs run once started.", "type": "timeseries", "gridPos": { "h": 8, @@ -234,8 +241,15 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(1.0, sum by (le, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "Exec [{{exported_instance}}]" + "expr": "histogram_quantile(0.75, sum by (le, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", + "legendFormat": "p75 Exec [{{exported_instance}}]" + }, + { + "datasource": { + "type": "prometheus" + }, + "expr": "histogram_quantile(0.99, sum by (le, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", + "legendFormat": "p99 Exec [{{exported_instance}}]" } ], "fieldConfig": { @@ -259,8 +273,8 @@ } }, { - "title": "Per-Job-Type Execution Time", - "description": "95th percentile execution time broken down by job type. Identifies the slowest job types.", + "title": "Per-Job-Type Execution Time (p99)", + "description": "Top 10 slowest job types by p99 execution time.", "type": "timeseries", "gridPos": { "h": 8, @@ -284,7 +298,7 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, histogram_quantile(1.0, sum by (le, job_type, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m]))))", + "expr": "topk(10, histogram_quantile(0.99, sum by (le, job_type, exported_instance) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m]))))", "legendFormat": "{{job_type}} [{{exported_instance}}]" } ], @@ -368,6 +382,67 @@ }, "overrides": [] } + }, + { + "title": "Current Job Latency (p99 Gauge)", + "description": "At-a-glance p99 job queue wait and execution time over the last 5 minutes. Green < 100ms, yellow 100ms-1s, red > 1s.", + "type": "gauge", + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "options": { + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "orientation": "auto", + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "targets": [ + { + "datasource": { + "type": "prometheus" + }, + "expr": "histogram_quantile(0.99, sum by (le) (rate(xrpld_job_queued_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", + "legendFormat": "p99 Wait" + }, + { + "datasource": { + "type": "prometheus" + }, + "expr": "histogram_quantile(0.99, sum by (le) (rate(xrpld_job_running_duration_us_bucket{exported_instance=~\"$node\", job_type=~\"$job_type\"}[5m])))", + "legendFormat": "p99 Exec" + } + ], + "fieldConfig": { + "defaults": { + "unit": "\u00b5s", + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "yellow", + "value": 100000 + }, + { + "color": "red", + "value": 1000000 + } + ] + } + }, + "overrides": [] + } } ], "schemaVersion": 39, diff --git a/docker/telemetry/grafana/dashboards/xrpld-rpc-perf-otel.json b/docker/telemetry/grafana/dashboards/xrpld-rpc-perf-otel.json index b1ce4a1941..a6686de72c 100644 --- a/docker/telemetry/grafana/dashboards/xrpld-rpc-perf-otel.json +++ b/docker/telemetry/grafana/dashboards/xrpld-rpc-perf-otel.json @@ -170,7 +170,7 @@ }, { "title": "RPC Latency - All Methods", - "description": "Histogram quantiles for RPC execution time across all methods. Sourced from rpc_method_duration_us histogram.", + "description": "RPC method latency distribution (p75 typical, p99 tail) across all methods.", "type": "timeseries", "gridPos": { "h": 8, @@ -189,8 +189,15 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(1.0, sum by (le, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m])))", - "legendFormat": "Latency [{{exported_instance}}]" + "expr": "histogram_quantile(0.75, sum by (le, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m])))", + "legendFormat": "p75 [{{exported_instance}}]" + }, + { + "datasource": { + "type": "prometheus" + }, + "expr": "histogram_quantile(0.99, sum by (le, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m])))", + "legendFormat": "p99 [{{exported_instance}}]" } ], "fieldConfig": { @@ -214,8 +221,8 @@ } }, { - "title": "Per-Method Latency (Top 10 Slowest)", - "description": "95th percentile execution time per method. Identifies the slowest RPC endpoints.", + "title": "Per-Method Latency (p99, Top 10 Slowest)", + "description": "Top 10 slowest RPC methods by p99 latency.", "type": "timeseries", "gridPos": { "h": 8, @@ -239,7 +246,7 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, histogram_quantile(1.0, sum by (le, method, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m]))))", + "expr": "topk(10, histogram_quantile(0.99, sum by (le, method, exported_instance) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m]))))", "legendFormat": "{{method}} [{{exported_instance}}]" } ], @@ -330,6 +337,60 @@ }, "overrides": [] } + }, + { + "title": "Current RPC Latency (p99 Gauge)", + "description": "At-a-glance p99 RPC method latency over the last 5 minutes. Green < 100ms, yellow 100ms-1s, red > 1s.", + "type": "gauge", + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 32 + }, + "options": { + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "orientation": "auto", + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "targets": [ + { + "datasource": { + "type": "prometheus" + }, + "expr": "histogram_quantile(0.99, sum by (le) (rate(xrpld_rpc_method_duration_us_bucket{exported_instance=~\"$node\", method=~\"$method\"}[5m])))", + "legendFormat": "p99 Latency" + } + ], + "fieldConfig": { + "defaults": { + "unit": "\u00b5s", + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "yellow", + "value": 100000 + }, + { + "color": "red", + "value": 1000000 + } + ] + } + }, + "overrides": [] + } } ], "schemaVersion": 39, From 9b46a343fc44a821327eae2a22d89f3f6e0587f0 Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Thu, 4 Jun 2026 14:01:13 +0100 Subject: [PATCH 3/3] fix(telemetry): migrate system dashboards from dead rippled_ to xrpld_ metrics The system-* dashboards queried the legacy StatsD rippled_ prefix, but the node now emits beast::insight metrics via native OTLP under the xrpld_ prefix (config: [insight] server=otel, prefix=xrpld). All queries returned no data. Migration (names derived from C++ beast::insight registrations, not live Prometheus, since a syncing node does not emit every metric yet): - rippled_ -> xrpld_ prefix across all panel queries and template variables (including the $node variable query, which broke the whole dashboard filter) - Histogram Event instruments export with unit ms, so bare _bucket becomes _milliseconds_bucket: ios_latency, rpc_time, rpc_size, pathfind_fast/full - Job-type metrics were StatsD summaries (label quantile="$quantile"); on the OTLP path they are histograms. Converted those queries to histogram_quantile($quantile, rate(xrpld__milliseconds_bucket[5m])) and added the previously-undefined $quantile template variable - Per-job-type detail panels: __name__ regex now matches _milliseconds_bucket No panels removed. Panels for metrics not yet emitted (e.g. warn/drop, or job types the syncing node has not run) show no data until the path executes. Co-Authored-By: Claude Opus 4.6 --- .../dashboards/system-ledger-data-sync.json | 80 +++++------ .../dashboards/system-network-traffic.json | 98 ++++++------- .../dashboards/system-node-health.json | 132 +++++++++++------- .../system-overlay-traffic-detail.json | 74 +++++----- .../dashboards/system-rpc-pathfinding.json | 32 ++--- 5 files changed, 225 insertions(+), 191 deletions(-) diff --git a/docker/telemetry/grafana/dashboards/system-ledger-data-sync.json b/docker/telemetry/grafana/dashboards/system-ledger-data-sync.json index e1cc088dc1..3af8764dcc 100644 --- a/docker/telemetry/grafana/dashboards/system-ledger-data-sync.json +++ b/docker/telemetry/grafana/dashboards/system-ledger-data-sync.json @@ -30,56 +30,56 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_data_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_data_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Ledger Data Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_data_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_data_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Ledger Data Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_data_Transaction_Set_candidate_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_data_Transaction_Set_candidate_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "TX Set Candidate Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_data_Transaction_Set_candidate_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_data_Transaction_Set_candidate_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "TX Set Candidate Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_data_Transaction_Node_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_data_Transaction_Node_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "TX Node Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_data_Transaction_Node_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_data_Transaction_Node_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "TX Node Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_data_Account_State_Node_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_data_Account_State_Node_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Account State Node Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_data_Account_State_Node_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_data_Account_State_Node_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Account State Node Share [{{exported_instance}}]" } ], @@ -118,56 +118,56 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Ledger Share In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Ledger Get In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_Transaction_Set_candidate_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_Transaction_Set_candidate_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "TX Set Candidate Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_Transaction_Set_candidate_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_Transaction_Set_candidate_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "TX Set Candidate Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_Transaction_node_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_Transaction_node_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "TX Node Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_Transaction_node_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_Transaction_node_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "TX Node Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_Account_State_node_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_Account_State_node_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Account State Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledger_Account_State_node_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_ledger_Account_State_node_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Account State Get [{{exported_instance}}]" } ], @@ -206,56 +206,56 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Ledger_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Ledger_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Ledger Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Ledger_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Ledger_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Ledger Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Transaction_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Transaction_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Transaction Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Transaction_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Transaction_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Transaction Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Transaction_node_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Transaction_node_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "TX Node Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Transaction_node_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Transaction_node_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "TX Node Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Account_State_node_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Account_State_node_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Account State Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Account_State_node_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Account_State_node_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Account State Share [{{exported_instance}}]" } ], @@ -294,49 +294,49 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_CAS_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_CAS_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "CAS Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_CAS_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_CAS_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "CAS Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Fetch_Pack_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Fetch_Pack_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Fetch Pack Share [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Fetch_Pack_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Fetch_Pack_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Fetch Pack Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Transactions_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Transactions_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Transactions Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Aggregate Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Aggregate Share [{{exported_instance}}]" } ], @@ -375,49 +375,49 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Ledger_get_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Ledger_get_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Ledger Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Transaction_get_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Transaction_get_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Transaction Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Transaction_node_get_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Transaction_node_get_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "TX Node Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Account_State_node_get_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Account_State_node_get_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Account State Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_CAS_get_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_CAS_get_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "CAS Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Fetch_Pack_get_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Fetch_Pack_get_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Fetch Pack Get [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_getobject_Transactions_get_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_getobject_Transactions_get_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Transactions Get [{{exported_instance}}]" } ], @@ -463,7 +463,7 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(20, {exported_instance=~\"$node\", __name__=~\"rippled_.*_Bytes_In\", __name__!~\"rippled_total_.*\"})", + "expr": "topk(20, {exported_instance=~\"$node\", __name__=~\"xrpld_.*_Bytes_In\", __name__!~\"xrpld_total_.*\"})", "legendFormat": "{{__name__}} [{{exported_instance}}]" } ], @@ -501,7 +501,7 @@ "label": "Node", "description": "Filter by rippled node (service.instance.id)", "type": "query", - "query": "label_values(rippled_ledger_data_get_Bytes_In, exported_instance)", + "query": "label_values(xrpld_ledger_data_get_Bytes_In, exported_instance)", "datasource": { "type": "prometheus", "uid": "prometheus" diff --git a/docker/telemetry/grafana/dashboards/system-network-traffic.json b/docker/telemetry/grafana/dashboards/system-network-traffic.json index 43356440ce..dbaa25ac55 100644 --- a/docker/telemetry/grafana/dashboards/system-network-traffic.json +++ b/docker/telemetry/grafana/dashboards/system-network-traffic.json @@ -30,14 +30,14 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_Peer_Finder_Active_Inbound_Peers{exported_instance=~\"$node\"}", + "expr": "xrpld_Peer_Finder_Active_Inbound_Peers{exported_instance=~\"$node\"}", "legendFormat": "Inbound Peers [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_Peer_Finder_Active_Outbound_Peers{exported_instance=~\"$node\"}", + "expr": "xrpld_Peer_Finder_Active_Outbound_Peers{exported_instance=~\"$node\"}", "legendFormat": "Outbound Peers [{{exported_instance}}]" } ], @@ -76,7 +76,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_Overlay_Peer_Disconnects{exported_instance=~\"$node\"}", + "expr": "xrpld_Overlay_Peer_Disconnects{exported_instance=~\"$node\"}", "legendFormat": "Disconnects [{{exported_instance}}]" } ], @@ -115,14 +115,14 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_total_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_total_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Bytes In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_total_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_total_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Bytes Out [{{exported_instance}}]" } ], @@ -161,14 +161,14 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_total_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_total_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Messages In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_total_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_total_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "Messages Out [{{exported_instance}}]" } ], @@ -207,21 +207,21 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_transactions_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_transactions_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "TX Messages In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_transactions_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_transactions_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "TX Messages Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_transactions_duplicate_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_transactions_duplicate_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "TX Duplicate In [{{exported_instance}}]" } ], @@ -260,28 +260,28 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_proposals_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_proposals_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Proposals In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_proposals_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_proposals_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "Proposals Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_proposals_untrusted_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_proposals_untrusted_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Untrusted In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_proposals_duplicate_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_proposals_duplicate_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Duplicate In [{{exported_instance}}]" } ], @@ -320,28 +320,28 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_validations_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_validations_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Validations In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_validations_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_validations_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "Validations Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_validations_untrusted_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_validations_untrusted_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Untrusted In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_validations_duplicate_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_validations_duplicate_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Duplicate In [{{exported_instance}}]" } ], @@ -380,7 +380,7 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, {exported_instance=~\"$node\", __name__=~\"rippled_.*_Bytes_In\", __name__!~\"rippled_total_.*\"})", + "expr": "topk(10, {exported_instance=~\"$node\", __name__=~\"xrpld_.*_Bytes_In\", __name__!~\"xrpld_total_.*\"})", "legendFormat": "{{__name__}} [{{exported_instance}}]" } ], @@ -392,7 +392,7 @@ { "matcher": { "id": "byName", - "options": "rippled_transactions_Bytes_In" + "options": "xrpld_transactions_Bytes_In" }, "properties": [ { @@ -404,7 +404,7 @@ { "matcher": { "id": "byName", - "options": "rippled_proposals_Bytes_In" + "options": "xrpld_proposals_Bytes_In" }, "properties": [ { @@ -416,7 +416,7 @@ { "matcher": { "id": "byName", - "options": "rippled_validations_Bytes_In" + "options": "xrpld_validations_Bytes_In" }, "properties": [ { @@ -428,7 +428,7 @@ { "matcher": { "id": "byName", - "options": "rippled_overhead_Bytes_In" + "options": "xrpld_overhead_Bytes_In" }, "properties": [ { @@ -440,7 +440,7 @@ { "matcher": { "id": "byName", - "options": "rippled_overhead_overlay_Bytes_In" + "options": "xrpld_overhead_overlay_Bytes_In" }, "properties": [ { @@ -452,7 +452,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ping_Bytes_In" + "options": "xrpld_ping_Bytes_In" }, "properties": [ { @@ -464,7 +464,7 @@ { "matcher": { "id": "byName", - "options": "rippled_status_Bytes_In" + "options": "xrpld_status_Bytes_In" }, "properties": [ { @@ -476,7 +476,7 @@ { "matcher": { "id": "byName", - "options": "rippled_getObject_Bytes_In" + "options": "xrpld_getObject_Bytes_In" }, "properties": [ { @@ -488,7 +488,7 @@ { "matcher": { "id": "byName", - "options": "rippled_haveTxSet_Bytes_In" + "options": "xrpld_haveTxSet_Bytes_In" }, "properties": [ { @@ -500,7 +500,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledgerData_Bytes_In" + "options": "xrpld_ledgerData_Bytes_In" }, "properties": [ { @@ -512,7 +512,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_share_Bytes_In" + "options": "xrpld_ledger_share_Bytes_In" }, "properties": [ { @@ -524,7 +524,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_data_get_Bytes_In" + "options": "xrpld_ledger_data_get_Bytes_In" }, "properties": [ { @@ -536,7 +536,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_data_share_Bytes_In" + "options": "xrpld_ledger_data_share_Bytes_In" }, "properties": [ { @@ -548,7 +548,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_data_Account_State_Node_get_Bytes_In" + "options": "xrpld_ledger_data_Account_State_Node_get_Bytes_In" }, "properties": [ { @@ -560,7 +560,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_data_Account_State_Node_share_Bytes_In" + "options": "xrpld_ledger_data_Account_State_Node_share_Bytes_In" }, "properties": [ { @@ -572,7 +572,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_data_Transaction_Node_get_Bytes_In" + "options": "xrpld_ledger_data_Transaction_Node_get_Bytes_In" }, "properties": [ { @@ -584,7 +584,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_data_Transaction_Node_share_Bytes_In" + "options": "xrpld_ledger_data_Transaction_Node_share_Bytes_In" }, "properties": [ { @@ -596,7 +596,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_data_Transaction_Set_candidate_get_Bytes_In" + "options": "xrpld_ledger_data_Transaction_Set_candidate_get_Bytes_In" }, "properties": [ { @@ -608,7 +608,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_Account_State_node_share_Bytes_In" + "options": "xrpld_ledger_Account_State_node_share_Bytes_In" }, "properties": [ { @@ -620,7 +620,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_Transaction_Set_candidate_share_Bytes_In" + "options": "xrpld_ledger_Transaction_Set_candidate_share_Bytes_In" }, "properties": [ { @@ -632,7 +632,7 @@ { "matcher": { "id": "byName", - "options": "rippled_ledger_Transaction_node_share_Bytes_In" + "options": "xrpld_ledger_Transaction_node_share_Bytes_In" }, "properties": [ { @@ -644,7 +644,7 @@ { "matcher": { "id": "byName", - "options": "rippled_set_get_Bytes_In" + "options": "xrpld_set_get_Bytes_In" }, "properties": [ { @@ -677,42 +677,42 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_transactions_duplicate_Bytes_In{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_transactions_duplicate_Bytes_In{exported_instance=~\"$node\"}[5m])", "legendFormat": "TX Duplicate In" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_transactions_duplicate_Bytes_Out{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_transactions_duplicate_Bytes_Out{exported_instance=~\"$node\"}[5m])", "legendFormat": "TX Duplicate Out" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_proposals_duplicate_Bytes_In{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_proposals_duplicate_Bytes_In{exported_instance=~\"$node\"}[5m])", "legendFormat": "Proposals Duplicate In" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_proposals_duplicate_Bytes_Out{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_proposals_duplicate_Bytes_Out{exported_instance=~\"$node\"}[5m])", "legendFormat": "Proposals Duplicate Out" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_validations_duplicate_Bytes_In{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_validations_duplicate_Bytes_In{exported_instance=~\"$node\"}[5m])", "legendFormat": "Validations Duplicate In" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_validations_duplicate_Bytes_Out{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_validations_duplicate_Bytes_Out{exported_instance=~\"$node\"}[5m])", "legendFormat": "Validations Duplicate Out" } ], @@ -751,7 +751,7 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(15, rate({__name__=~\"rippled_.*_Bytes_In\", __name__!~\"rippled_total_{exported_instance=~\"$node\"}.*\"}[5m]))", + "expr": "topk(15, rate({__name__=~\"xrpld_.*_Bytes_In\", __name__!~\"xrpld_total_{exported_instance=~\"$node\"}.*\"}[5m]))", "legendFormat": "{{__name__}}" } ], @@ -779,7 +779,7 @@ "label": "Node", "description": "Filter by rippled node (service.instance.id)", "type": "query", - "query": "label_values(rippled_Peer_Finder_Active_Inbound_Peers, exported_instance)", + "query": "label_values(xrpld_Peer_Finder_Active_Inbound_Peers, exported_instance)", "datasource": { "type": "prometheus", "uid": "prometheus" diff --git a/docker/telemetry/grafana/dashboards/system-node-health.json b/docker/telemetry/grafana/dashboards/system-node-health.json index c4e8d956cc..fd6b44b8a4 100644 --- a/docker/telemetry/grafana/dashboards/system-node-health.json +++ b/docker/telemetry/grafana/dashboards/system-node-health.json @@ -30,7 +30,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_LedgerMaster_Validated_Ledger_Age{exported_instance=~\"$node\"}", + "expr": "xrpld_LedgerMaster_Validated_Ledger_Age{exported_instance=~\"$node\"}", "legendFormat": "Validated Age [{{exported_instance}}]" } ], @@ -78,7 +78,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_LedgerMaster_Published_Ledger_Age{exported_instance=~\"$node\"}", + "expr": "xrpld_LedgerMaster_Published_Ledger_Age{exported_instance=~\"$node\"}", "legendFormat": "Published Age [{{exported_instance}}]" } ], @@ -126,35 +126,35 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_State_Accounting_Full_duration{exported_instance=~\"$node\"}", + "expr": "xrpld_State_Accounting_Full_duration{exported_instance=~\"$node\"}", "legendFormat": "Full [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_State_Accounting_Tracking_duration{exported_instance=~\"$node\"}", + "expr": "xrpld_State_Accounting_Tracking_duration{exported_instance=~\"$node\"}", "legendFormat": "Tracking [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_State_Accounting_Syncing_duration{exported_instance=~\"$node\"}", + "expr": "xrpld_State_Accounting_Syncing_duration{exported_instance=~\"$node\"}", "legendFormat": "Syncing [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_State_Accounting_Connected_duration{exported_instance=~\"$node\"}", + "expr": "xrpld_State_Accounting_Connected_duration{exported_instance=~\"$node\"}", "legendFormat": "Connected [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_State_Accounting_Disconnected_duration{exported_instance=~\"$node\"}", + "expr": "xrpld_State_Accounting_Disconnected_duration{exported_instance=~\"$node\"}", "legendFormat": "Disconnected [{{exported_instance}}]" } ], @@ -193,35 +193,35 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_State_Accounting_Full_transitions{exported_instance=~\"$node\"}", + "expr": "xrpld_State_Accounting_Full_transitions{exported_instance=~\"$node\"}", "legendFormat": "Full [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_State_Accounting_Tracking_transitions{exported_instance=~\"$node\"}", + "expr": "xrpld_State_Accounting_Tracking_transitions{exported_instance=~\"$node\"}", "legendFormat": "Tracking [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_State_Accounting_Syncing_transitions{exported_instance=~\"$node\"}", + "expr": "xrpld_State_Accounting_Syncing_transitions{exported_instance=~\"$node\"}", "legendFormat": "Syncing [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_State_Accounting_Connected_transitions{exported_instance=~\"$node\"}", + "expr": "xrpld_State_Accounting_Connected_transitions{exported_instance=~\"$node\"}", "legendFormat": "Connected [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_State_Accounting_Disconnected_transitions{exported_instance=~\"$node\"}", + "expr": "xrpld_State_Accounting_Disconnected_transitions{exported_instance=~\"$node\"}", "legendFormat": "Disconnected [{{exported_instance}}]" } ], @@ -260,14 +260,14 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(rippled_ios_latency_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(xrpld_ios_latency_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P95 I/O Latency [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.50, sum by (le, exported_instance) (rate(rippled_ios_latency_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.50, sum by (le, exported_instance) (rate(xrpld_ios_latency_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P50 I/O Latency [{{exported_instance}}]" } ], @@ -306,7 +306,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_job_count{exported_instance=~\"$node\"}", + "expr": "xrpld_job_count{exported_instance=~\"$node\"}", "legendFormat": "Job Queue Depth [{{exported_instance}}]" } ], @@ -345,7 +345,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_ledger_fetches_total{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_ledger_fetches_total{exported_instance=~\"$node\"}[5m])", "legendFormat": "Fetches / Sec [{{exported_instance}}]" } ], @@ -377,7 +377,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_ledger_history_mismatch_total{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_ledger_history_mismatch_total{exported_instance=~\"$node\"}[5m])", "legendFormat": "Mismatches / Sec [{{exported_instance}}]" } ], @@ -433,77 +433,77 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_acceptLedger{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_acceptLedger_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Accept Ledger [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_advanceLedger{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_advanceLedger_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Advance Ledger [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_transaction{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_transaction_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Transaction [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_writeObjects{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_writeObjects_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Write Objects [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_heartbeat{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_heartbeat_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Heartbeat [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_sweep{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_sweep_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Sweep [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_trustedValidation{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_trustedValidation_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Trusted Validation [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_trustedProposal{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_trustedProposal_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Trusted Proposal [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_publishNewLedger{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_publishNewLedger_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Publish New Ledger [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_clientRPC{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_clientRPC_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Client RPC [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledgerData{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_ledgerData_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Ledger Data [{{quantile}}]" } ], @@ -542,77 +542,77 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_acceptLedger_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_acceptLedger_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Accept Ledger [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_advanceLedger_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_advanceLedger_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Advance Ledger [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_transaction_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_transaction_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Transaction [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_writeObjects_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_writeObjects_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Write Objects [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_heartbeat_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_heartbeat_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Heartbeat [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_sweep_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_sweep_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Sweep [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_trustedValidation_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_trustedValidation_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Trusted Validation [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_trustedProposal_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_trustedProposal_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Trusted Proposal [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_publishNewLedger_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_publishNewLedger_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Publish New Ledger [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_clientRPC_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_clientRPC_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Client RPC [{{quantile}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_ledgerData_q{quantile=\"$quantile\", exported_instance=~\"$node\"}", + "expr": "histogram_quantile($quantile, sum by (le, exported_instance) (rate(xrpld_ledgerData_q_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "Ledger Data [{{quantile}}]" } ], @@ -651,7 +651,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_Node_family_full_below_cache_size{exported_instance=~\"$node\"}", + "expr": "xrpld_Node_family_full_below_cache_size{exported_instance=~\"$node\"}", "legendFormat": "FullBelowCache Size" } ], @@ -690,7 +690,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_Node_family_full_below_cache_hit_rate{exported_instance=~\"$node\"}", + "expr": "xrpld_Node_family_full_below_cache_hit_rate{exported_instance=~\"$node\"}", "legendFormat": "Hit Rate" } ], @@ -740,7 +740,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_LedgerMaster_Published_Ledger_Age{exported_instance=~\"$node\"} - rippled_LedgerMaster_Validated_Ledger_Age{exported_instance=~\"$node\"}", + "expr": "xrpld_LedgerMaster_Published_Ledger_Age{exported_instance=~\"$node\"} - xrpld_LedgerMaster_Validated_Ledger_Age{exported_instance=~\"$node\"}", "legendFormat": "Publish Gap" } ], @@ -788,14 +788,14 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_State_Accounting_Full_duration{exported_instance=~\"$node\"}[5m]) / 1000000", + "expr": "rate(xrpld_State_Accounting_Full_duration{exported_instance=~\"$node\"}[5m]) / 1000000", "legendFormat": "Full Mode Rate" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_State_Accounting_Tracking_duration{exported_instance=~\"$node\"}[5m]) / 1000000", + "expr": "rate(xrpld_State_Accounting_Tracking_duration{exported_instance=~\"$node\"}[5m]) / 1000000", "legendFormat": "Tracking Mode Rate" } ], @@ -834,8 +834,8 @@ "datasource": { "type": "prometheus" }, - "expr": "{__name__=~\"rippled_(makeFetchPack|publishAcqLedger|untrustedValidation|manifest|localTransaction|ledgerReplayRequest|ledgerRequest|untrustedProposal|ledgerReplayTask|ledgerData|clientCommand|clientSubscribe|clientFeeChange|clientConsensus|clientAccountHistory|clientRPC|clientWebsocket|RPC|updatePaths|transaction|batch|advanceLedger|publishNewLedger|fetchTxnData|writeAhead|trustedValidation|writeObjects|acceptLedger|trustedProposal|sweep|clusterReport|heartbeat|administration|handleHaveTransactions|doTransactions)\", quantile=\"$quantile\", exported_instance=~\"$node\"}", - "legendFormat": "{{__name__}} [{{quantile}}]" + "expr": "histogram_quantile($quantile, sum by (le, __name__) (rate({__name__=~\"xrpld_(makeFetchPack|publishAcqLedger|untrustedValidation|manifest|localTransaction|ledgerReplayRequest|ledgerRequest|untrustedProposal|ledgerReplayTask|ledgerData|clientCommand|clientSubscribe|clientFeeChange|clientConsensus|clientAccountHistory|clientRPC|clientWebsocket|RPC|updatePaths|transaction|batch|advanceLedger|publishNewLedger|fetchTxnData|writeAhead|trustedValidation|writeObjects|acceptLedger|trustedProposal|sweep|clusterReport|heartbeat|administration|handleHaveTransactions|doTransactions)_milliseconds_bucket\", exported_instance=~\"$node\"}[5m])))", + "legendFormat": "{{__name__}}" } ], "fieldConfig": { @@ -873,8 +873,8 @@ "datasource": { "type": "prometheus" }, - "expr": "{__name__=~\"rippled_(makeFetchPack_q|publishAcqLedger_q|untrustedValidation_q|manifest_q|localTransaction_q|ledgerReplayRequest_q|ledgerRequest_q|untrustedProposal_q|ledgerReplayTask_q|ledgerData_q|clientCommand_q|clientSubscribe_q|clientFeeChange_q|clientConsensus_q|clientAccountHistory_q|clientRPC_q|clientWebsocket_q|RPC_q|updatePaths_q|transaction_q|batch_q|advanceLedger_q|publishNewLedger_q|fetchTxnData_q|writeAhead_q|trustedValidation_q|writeObjects_q|acceptLedger_q|trustedProposal_q|sweep_q|clusterReport_q|heartbeat_q|administration_q|handleHaveTransactions_q|doTransactions_q)\", quantile=\"$quantile\", exported_instance=~\"$node\"}", - "legendFormat": "{{__name__}} [{{quantile}}]" + "expr": "histogram_quantile($quantile, sum by (le, __name__) (rate({__name__=~\"xrpld_(makeFetchPack_q|publishAcqLedger_q|untrustedValidation_q|manifest_q|localTransaction_q|ledgerReplayRequest_q|ledgerRequest_q|untrustedProposal_q|ledgerReplayTask_q|ledgerData_q|clientCommand_q|clientSubscribe_q|clientFeeChange_q|clientConsensus_q|clientAccountHistory_q|clientRPC_q|clientWebsocket_q|RPC_q|updatePaths_q|transaction_q|batch_q|advanceLedger_q|publishNewLedger_q|fetchTxnData_q|writeAhead_q|trustedValidation_q|writeObjects_q|acceptLedger_q|trustedProposal_q|sweep_q|clusterReport_q|heartbeat_q|administration_q|handleHaveTransactions_q|doTransactions_q)_milliseconds_bucket\", exported_instance=~\"$node\"}[5m])))", + "legendFormat": "{{__name__}}" } ], "fieldConfig": { @@ -901,7 +901,7 @@ "label": "Node", "description": "Filter by rippled node (service.instance.id)", "type": "query", - "query": "label_values(rippled_LedgerMaster_Validated_Ledger_Age, exported_instance)", + "query": "label_values(xrpld_LedgerMaster_Validated_Ledger_Age, exported_instance)", "datasource": { "type": "prometheus", "uid": "prometheus" @@ -915,6 +915,40 @@ "multi": true, "refresh": 2, "sort": 1 + }, + { + "name": "quantile", + "label": "Quantile", + "type": "custom", + "query": "0.5,0.75,0.95,0.99", + "current": { + "text": "0.95", + "value": "0.95" + }, + "options": [ + { + "text": "0.5", + "value": "0.5", + "selected": false + }, + { + "text": "0.75", + "value": "0.75", + "selected": false + }, + { + "text": "0.95", + "value": "0.95", + "selected": true + }, + { + "text": "0.99", + "value": "0.99", + "selected": false + } + ], + "includeAll": false, + "multi": false } ] }, diff --git a/docker/telemetry/grafana/dashboards/system-overlay-traffic-detail.json b/docker/telemetry/grafana/dashboards/system-overlay-traffic-detail.json index fbe02e805a..121a2e266f 100644 --- a/docker/telemetry/grafana/dashboards/system-overlay-traffic-detail.json +++ b/docker/telemetry/grafana/dashboards/system-overlay-traffic-detail.json @@ -30,42 +30,42 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_squelch_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_squelch_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Squelch In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_squelch_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_squelch_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "Squelch Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_squelch_suppressed_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_squelch_suppressed_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Suppressed In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_squelch_suppressed_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_squelch_suppressed_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "Suppressed Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_squelch_ignored_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_squelch_ignored_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Ignored In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_squelch_ignored_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_squelch_ignored_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "Ignored Out [{{exported_instance}}]" } ], @@ -104,42 +104,42 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_overhead_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_overhead_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Base Overhead In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_overhead_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_overhead_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Base Overhead Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_overhead_cluster_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_overhead_cluster_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Cluster In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_overhead_cluster_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_overhead_cluster_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Cluster Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_overhead_manifest_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_overhead_manifest_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Manifest In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_overhead_manifest_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_overhead_manifest_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Manifest Out [{{exported_instance}}]" } ], @@ -178,28 +178,28 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_validator_lists_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_validator_lists_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Bytes In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_validator_lists_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_validator_lists_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Bytes Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_validator_lists_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_validator_lists_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Messages In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_validator_lists_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_validator_lists_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "Messages Out [{{exported_instance}}]" } ], @@ -255,28 +255,28 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_set_get_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_set_get_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Set Get In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_set_get_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_set_get_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Set Get Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_set_share_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_set_share_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Set Share In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_set_share_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_set_share_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Set Share Out [{{exported_instance}}]" } ], @@ -315,28 +315,28 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_have_transactions_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_have_transactions_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Have TX In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_have_transactions_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_have_transactions_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "Have TX Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_requested_transactions_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_requested_transactions_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Requested TX In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_requested_transactions_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_requested_transactions_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "Requested TX Out [{{exported_instance}}]" } ], @@ -375,28 +375,28 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_unknown_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_unknown_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Unknown Bytes In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_unknown_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_unknown_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Unknown Bytes Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_unknown_Messages_In{exported_instance=~\"$node\"}", + "expr": "xrpld_unknown_Messages_In{exported_instance=~\"$node\"}", "legendFormat": "Unknown Messages In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_unknown_Messages_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_unknown_Messages_Out{exported_instance=~\"$node\"}", "legendFormat": "Unknown Messages Out [{{exported_instance}}]" } ], @@ -452,28 +452,28 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_proof_path_request_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_proof_path_request_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Request Bytes In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_proof_path_request_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_proof_path_request_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Request Bytes Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_proof_path_response_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_proof_path_response_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Response Bytes In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_proof_path_response_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_proof_path_response_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Response Bytes Out [{{exported_instance}}]" } ], @@ -512,28 +512,28 @@ "datasource": { "type": "prometheus" }, - "expr": "rippled_replay_delta_request_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_replay_delta_request_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Request Bytes In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_replay_delta_request_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_replay_delta_request_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Request Bytes Out [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_replay_delta_response_Bytes_In{exported_instance=~\"$node\"}", + "expr": "xrpld_replay_delta_response_Bytes_In{exported_instance=~\"$node\"}", "legendFormat": "Response Bytes In [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "rippled_replay_delta_response_Bytes_Out{exported_instance=~\"$node\"}", + "expr": "xrpld_replay_delta_response_Bytes_Out{exported_instance=~\"$node\"}", "legendFormat": "Response Bytes Out [{{exported_instance}}]" } ], @@ -561,7 +561,7 @@ "label": "Node", "description": "Filter by rippled node (service.instance.id)", "type": "query", - "query": "label_values(rippled_squelch_Messages_In, exported_instance)", + "query": "label_values(xrpld_squelch_Messages_In, exported_instance)", "datasource": { "type": "prometheus", "uid": "prometheus" diff --git a/docker/telemetry/grafana/dashboards/system-rpc-pathfinding.json b/docker/telemetry/grafana/dashboards/system-rpc-pathfinding.json index 154a70ddbe..36ec7b3dd0 100644 --- a/docker/telemetry/grafana/dashboards/system-rpc-pathfinding.json +++ b/docker/telemetry/grafana/dashboards/system-rpc-pathfinding.json @@ -30,7 +30,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_rpc_requests_total{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_rpc_requests_total{exported_instance=~\"$node\"}[5m])", "legendFormat": "Requests / Sec [{{exported_instance}}]" } ], @@ -62,14 +62,14 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(rippled_rpc_time_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(xrpld_rpc_time_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P95 Response Time [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.5, sum by (le, exported_instance) (rate(rippled_rpc_time_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.5, sum by (le, exported_instance) (rate(xrpld_rpc_time_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P50 Response Time [{{exported_instance}}]" } ], @@ -108,14 +108,14 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(rippled_rpc_size_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(xrpld_rpc_size_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P95 Response Size [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.5, sum by (le, exported_instance) (rate(rippled_rpc_size_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.5, sum by (le, exported_instance) (rate(xrpld_rpc_size_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P50 Response Size [{{exported_instance}}]" } ], @@ -154,28 +154,28 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.5, sum by (le, exported_instance) (rate(rippled_rpc_time_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.5, sum by (le, exported_instance) (rate(xrpld_rpc_time_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P50 [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.9, sum by (le, exported_instance) (rate(rippled_rpc_time_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.9, sum by (le, exported_instance) (rate(xrpld_rpc_time_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P90 [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(rippled_rpc_time_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(xrpld_rpc_time_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P95 [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.99, sum by (le, exported_instance) (rate(rippled_rpc_time_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.99, sum by (le, exported_instance) (rate(xrpld_rpc_time_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P99 [{{exported_instance}}]" } ], @@ -214,14 +214,14 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(rippled_pathfind_fast_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(xrpld_pathfind_fast_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P95 Fast Pathfind [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.5, sum by (le, exported_instance) (rate(rippled_pathfind_fast_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.5, sum by (le, exported_instance) (rate(xrpld_pathfind_fast_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P50 Fast Pathfind [{{exported_instance}}]" } ], @@ -260,14 +260,14 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(rippled_pathfind_full_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(xrpld_pathfind_full_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P95 Full Pathfind [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.5, sum by (le, exported_instance) (rate(rippled_pathfind_full_bucket{exported_instance=~\"$node\"}[5m])))", + "expr": "histogram_quantile(0.5, sum by (le, exported_instance) (rate(xrpld_pathfind_full_milliseconds_bucket{exported_instance=~\"$node\"}[5m])))", "legendFormat": "P50 Full Pathfind [{{exported_instance}}]" } ], @@ -306,7 +306,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_warn_total{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_warn_total{exported_instance=~\"$node\"}[5m])", "legendFormat": "Warnings / Sec [{{exported_instance}}]" } ], @@ -354,7 +354,7 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(rippled_drop_total{exported_instance=~\"$node\"}[5m])", + "expr": "rate(xrpld_drop_total{exported_instance=~\"$node\"}[5m])", "legendFormat": "Drops / Sec [{{exported_instance}}]" } ], @@ -391,7 +391,7 @@ "label": "Node", "description": "Filter by rippled node (service.instance.id)", "type": "query", - "query": "label_values(rippled_rpc_requests_total, exported_instance)", + "query": "label_values(xrpld_rpc_requests_total, exported_instance)", "datasource": { "type": "prometheus", "uid": "prometheus"