Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation

This commit is contained in:
Pratik Mankawde
2026-07-08 15:36:55 +01:00
7 changed files with 13 additions and 7 deletions

View File

@@ -814,6 +814,7 @@ def run_rule_d_dashboards(
"service_version",
"service_instance_id",
"job",
"job_type", # standard Prometheus label for job-queue metrics
"instance",
}
# A dashboard label is valid if it is a span attribute (L1), a native-metric

View File

@@ -465,7 +465,7 @@ These metrics serve multiple external consumer categories identified during rese
### Purpose
Phase 9 exports ~68 internal rippled metrics and ships Grafana dashboards for
Phase 9 exports ~68 internal xrpld metrics and ships Grafana dashboards for
them. This adds the missing operator-facing piece: **provisioned Grafana alert
rules** that fire on the health-critical metrics phase 9 introduces. The
phase-9 task list (line 311) and Jira story RIPD-5187 both already list

View File

@@ -1011,7 +1011,7 @@ Requires `trace_peer=1` in the `[telemetry]` config section.
## Alerting
rippled provisions six Grafana alert rules on the health-critical metrics, so a
xrpld provisions six Grafana alert rules on the health-critical metrics, so a
stock stack alerts out of the box with no UI setup. Rules are provisioned from
`docker/telemetry/grafana/provisioning/alerting/` and load automatically when
the Grafana container starts. They appear under **Alerting → Alert rules**,

View File

@@ -102,6 +102,10 @@ undefined:nudb
# Snappy compression library intentional overflows
unsigned-integer-overflow:snappy.cc
# OpenTelemetry SDK intentional overflows in hash functions
unsigned-integer-overflow:opentelemetry/sdk/common/attributemap_hash.h
unsigned-integer-overflow:opentelemetry
# Abseil intentional overflows in hashing, RNG and time arithmetic.
# Matched at library scope (like boost above): the wraparound is by design
# across many absl files (hash mixing, raw_hash_set probing, duration math,

View File

@@ -178,7 +178,7 @@ TEST_F(ValidationTrackerTest, MaxPendingEventsTrimming)
for (std::size_t i = 0; i < kCount; ++i)
{
auto const hash = makeHash(i + 1);
LedgerIndex const seq = static_cast<LedgerIndex>(i + 1);
auto const seq = static_cast<LedgerIndex>(i + 1);
tracker_.recordOurValidation(hash, seq);
tracker_.recordNetworkValidation(hash, seq);
}

View File

@@ -1032,11 +1032,11 @@ MetricsRegistry::registerPeerQualityGauge()
int divergedCount = 0;
// Encode a version string into BuildInfo's comparable numeric
// form. Peers report the full "rippled-3.3.0-b0" string while
// form. Peers report the full "xrpld-3.3.0-b0" string while
// our baseline is the bare "3.3.0-b0", and SemanticVersion
// requires a leading digit, so strip any non-digit prefix
// first. Numeric encoding avoids the lexicographic bug where
// "2.3.0" > "2.10.0" and "rippled-..." > "3...".
// "2.3.0" > "2.10.0" and "xrpld-..." > "3...".
auto const encodeVersion = [](std::string_view v) -> std::uint64_t {
auto const firstDigit = v.find_first_of("0123456789");
if (firstDigit == std::string_view::npos)
@@ -1242,7 +1242,7 @@ MetricsRegistry::registerStateTrackingGauge()
// State value: 0-4 from OperatingMode, 5=validating, 6=proposing.
auto const mode = app.getOPs().getOperatingMode();
double stateValue = static_cast<double>(mode);
auto stateValue = static_cast<double>(mode);
// If FULL, refine using consensus info for validating/proposing.
if (mode == OperatingMode::FULL)

View File

@@ -142,7 +142,8 @@
#ifdef XRPL_ENABLE_TELEMETRY
#include <opentelemetry/metrics/meter.h>
#include <opentelemetry/metrics/meter_provider.h>
#include <opentelemetry/metrics/observer_result.h>
#include <opentelemetry/nostd/shared_ptr.h>
#include <opentelemetry/nostd/unique_ptr.h>
#include <opentelemetry/sdk/metrics/meter_provider.h>
#endif