diff --git a/.github/scripts/otel-naming/check_otel_naming.py b/.github/scripts/otel-naming/check_otel_naming.py index 59f679f5a4..28ec24316a 100644 --- a/.github/scripts/otel-naming/check_otel_naming.py +++ b/.github/scripts/otel-naming/check_otel_naming.py @@ -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 diff --git a/OpenTelemetryPlan/Phase9_taskList.md b/OpenTelemetryPlan/Phase9_taskList.md index ef93ea18c5..74babaef8f 100644 --- a/OpenTelemetryPlan/Phase9_taskList.md +++ b/OpenTelemetryPlan/Phase9_taskList.md @@ -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 diff --git a/docs/telemetry-runbook.md b/docs/telemetry-runbook.md index 859408be7f..7afbf30ed3 100644 --- a/docs/telemetry-runbook.md +++ b/docs/telemetry-runbook.md @@ -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**, diff --git a/sanitizers/suppressions/ubsan.supp b/sanitizers/suppressions/ubsan.supp index 7e3e02f855..de2a66e64a 100644 --- a/sanitizers/suppressions/ubsan.supp +++ b/sanitizers/suppressions/ubsan.supp @@ -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, diff --git a/src/tests/libxrpl/telemetry/ValidationTracker.cpp b/src/tests/libxrpl/telemetry/ValidationTracker.cpp index d2b96aa616..92bd8d63e6 100644 --- a/src/tests/libxrpl/telemetry/ValidationTracker.cpp +++ b/src/tests/libxrpl/telemetry/ValidationTracker.cpp @@ -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(i + 1); + auto const seq = static_cast(i + 1); tracker_.recordOurValidation(hash, seq); tracker_.recordNetworkValidation(hash, seq); } diff --git a/src/xrpld/telemetry/MetricsRegistry.cpp b/src/xrpld/telemetry/MetricsRegistry.cpp index b4fa43d001..16840f2785 100644 --- a/src/xrpld/telemetry/MetricsRegistry.cpp +++ b/src/xrpld/telemetry/MetricsRegistry.cpp @@ -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(mode); + auto stateValue = static_cast(mode); // If FULL, refine using consensus info for validating/proposing. if (mode == OperatingMode::FULL) diff --git a/src/xrpld/telemetry/MetricsRegistry.h b/src/xrpld/telemetry/MetricsRegistry.h index 2359ed2954..8ee3348863 100644 --- a/src/xrpld/telemetry/MetricsRegistry.h +++ b/src/xrpld/telemetry/MetricsRegistry.h @@ -142,7 +142,8 @@ #ifdef XRPL_ENABLE_TELEMETRY #include #include -#include +#include +#include #include #endif