Pratik Mankawde
b503fc921e
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
2026-07-07 17:39:16 +01:00
Pratik Mankawde
ab0d8249fd
feat(telemetry): expose direct OTel metrics API via getMeter()
...
Give developers direct access to the full OpenTelemetry metrics API,
symmetric with getTracer(), so all seven OTel instrument types
(including UpDownCounter, sync Gauge, and the observable variants) are
reachable — not just the four beast::insight models.
- Telemetry: build and own the metrics pipeline (OTLP HTTP metric
exporter + PeriodicExportingMetricReader + SpanMetrics histogram view)
alongside the tracer, sharing the same resource attributes and TLS
config. Register it globally via metrics::Provider::SetMeterProvider
and expose Telemetry::getMeter(). Metrics enable with [telemetry];
the metrics endpoint is derived from the trace endpoint.
- beast OTelCollector: no longer owns a pipeline. It fetches the global
Meter, becoming a thin shim over the shared provider (legacy path
during beast deprecation). This also resolves the review note that the
metric exporter ignored [telemetry] use_tls — TLS now comes from the
shared telemetry pipeline.
- Add a libxrpl unit test covering getMeter() on the enabled (global
provider) and disabled (noop) paths, exercising an UpDownCounter.
Design: docs/superpowers/specs/2026-07-07-direct-otel-metrics-api-design.md
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-07 16:52:45 +01:00
Pratik Mankawde
cc4457b5a2
fix(telemetry): address phase-7 review comments
...
- cmake: keep the opentelemetry-cpp umbrella target for the beast metrics
link and document why. The reviewer suggested linking individual
component targets to avoid over-linking, but the OTel Conan package
under-declares inter-component dependencies (the OTLP client references
sdk::common symbols without a declared edge), so naming components
directly reorders the static link into an unresolvable state. Verified
by building xrpl_tests both ways.
- OTelCollector.h: add usage examples, thread-safety and limitations
@note blocks to the class doc.
- OTelCollector.cpp: correct the @param name docs on the instrument
Impl constructors to describe the already-formatName()'d value.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-07 16:50:38 +01:00
Pratik Mankawde
a55b7dad54
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
...
# Conflicts:
# OpenTelemetryPlan/presentation.md
2026-07-06 22:07:24 +01:00
Pratik Mankawde
363c2caf94
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
...
# Conflicts:
# OpenTelemetryPlan/08-appendix.md
# OpenTelemetryPlan/09-data-collection-reference.md
# docker/telemetry/docker-compose.yml
# docker/telemetry/grafana/dashboards/statsd-ledger-data-sync.json
# docker/telemetry/grafana/dashboards/statsd-network-traffic.json
# docker/telemetry/grafana/dashboards/statsd-node-health.json
# docker/telemetry/grafana/dashboards/statsd-rpc-pathfinding.json
2026-07-06 22:01:22 +01:00
Pratik Mankawde
e02b7968ad
Merge branch 'pratik/otel-phase2-rpc-tracing' into pratik/otel-phase3-tx-tracing
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-07-06 20:41:14 +01:00
Pratik Mankawde
7a6ff619e5
code review changes
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-07-06 20:37:08 +01:00
Pratik Mankawde
369cd96878
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
2026-07-06 17:17:44 +01:00
Pratik Mankawde
fd518d3e7b
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
...
# Conflicts:
# .github/scripts/levelization/results/ordering.txt
# include/xrpl/beast/insight/Insight.h
# src/test/csf/Peer.h
2026-07-06 17:15:27 +01:00
Pratik Mankawde
33c17e50b3
Merge branch 'pratik/otel-phase2-rpc-tracing' into pratik/otel-phase3-tx-tracing
2026-07-06 17:09:47 +01:00
Pratik Mankawde
3789ac45e2
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
...
# Conflicts:
# conan.lock
# conan/profiles/default
# conanfile.py
2026-07-06 17:07:23 +01:00
Ayaz Salikhov
8e378c4f47
build: Add verify-headers target to cleanup headers ( #7670 )
2026-07-01 23:14:17 +00:00
Pratik Mankawde
1da2596eea
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
2026-06-26 16:24:15 +01:00
Pratik Mankawde
3cfec0f1e0
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
2026-06-26 14:50:05 +01:00
Pratik Mankawde
54d92ff973
Merge branch 'pratik/otel-phase2-rpc-tracing' into pratik/otel-phase3-tx-tracing
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-06-26 14:42:55 +01:00
Pratik Mankawde
49103d635c
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-06-26 14:24:30 +01:00
Michael Legleux
556d62a0de
build: Align xrpld RPM packaging with DEB package ( #7529 )
2026-06-24 23:53:46 +00:00
Ayaz Salikhov
4fec58251b
build: Patch nix binaries in CMake ( #7539 )
...
Co-authored-by: Bart <bthomee@users.noreply.github.com >
2026-06-24 13:56:18 +00:00
Pratik Mankawde
8172c0c811
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
...
Forward-merge the OTel naming-check Rule C/D fixes and the phase 2-9 chain.
Conflict resolutions:
- 02-design-decisions.md TxQ Attributes: take the convention-correct markdown
table (txq_* keys) over the stale planned-attrs code block.
- SpanGuardFactory.cpp: keep the explanatory comment for the literal attribute
keys in the libxrpl test.
2026-06-11 19:38:09 +01:00
Pratik Mankawde
2efc932165
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
...
Bring the hardened OTel naming check (Rule E fix + 71 tests) and the phase 1-6
convention work forward into phase 7 (native metrics).
Conflict resolution:
- 05-configuration-reference.md: kept phase-7's native-OTLP metrics story
(server=otel, /v1/metrics) over phase-6's superseded StatsD scrape job, in
prose form (no code block).
- ordering.txt/loops.txt: regenerated via generate.py (not hand-edited).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-11 18:32:21 +01:00
Pratik Mankawde
f37589b1f5
Merge branch 'pratik/otel-phase2-rpc-tracing' into pratik/otel-phase3-tx-tracing
2026-06-10 16:05:29 +01:00
Pratik Mankawde
e205d0ef8e
handle gTlDiscardCurrentSpan change
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-06-10 14:00:52 +01:00
Pratik Mankawde
81919612f8
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
2026-06-10 10:22:07 +01:00
Pratik Mankawde
a7c3cd8a79
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
2026-06-10 10:20:03 +01:00
Pratik Mankawde
b32db4ceeb
Merge branch 'pratik/otel-phase2-rpc-tracing' into pratik/otel-phase3-tx-tracing
2026-06-10 10:18:24 +01:00
Pratik Mankawde
848cbcbfbe
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-06-10 10:15:31 +01:00
Pratik Mankawde
010b0d1bd6
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
...
# Conflicts:
# src/tests/libxrpl/CMakeLists.txt
2026-06-09 16:46:24 +01:00
Pratik Mankawde
3633ffc4c7
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
...
# Conflicts:
# src/tests/libxrpl/CMakeLists.txt
2026-06-09 16:43:15 +01:00
Bart
c552eb333f
refactor: Change config section and key string literals into constants ( #7095 )
...
Co-authored-by: Bart <11445373+bthomee@users.noreply.github.com >
2026-06-09 14:58:21 +00:00
Pratik Mankawde
be67ad25e7
Merge branch 'pratik/otel-phase2-rpc-tracing' into pratik/otel-phase3-tx-tracing
...
# Conflicts:
# OpenTelemetryPlan/05-configuration-reference.md
2026-06-09 14:52:12 +01:00
Pratik Mankawde
57a54ad0fe
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
2026-06-09 13:34:58 +01:00
Ayaz Salikhov
949887feb9
build: Create single test binary xrpl_tests ( #7327 )
2026-06-05 19:24:32 +00:00
Ayaz Salikhov
8abe82eefa
ci: Redesign matrix configuration based on Nix images ( #7385 )
...
Co-authored-by: semgrep-companion-app[bot] <218312740+semgrep-companion-app[bot]@users.noreply.github.com>
2026-06-04 20:02:59 +00:00
Pratik Mankawde
0fec5272cb
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
2026-06-03 16:41:20 +01:00
Pratik Mankawde
2ef026aef5
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
2026-06-03 16:40:22 +01:00
Pratik Mankawde
a13a858112
feat(telemetry): add tx.transactor span for per-transactor execution timing
...
Wraps Transactor::operator() with a span that captures tx_type,
ter_result, and applied. This is the universal dispatch point — every
transaction flows through it, giving per-type latency breakdown.
Adds libxrpl.tx > xrpl.telemetry levelization dependency.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-06-03 16:40:10 +01:00
Vito Tumas
109b649106
refactor: Use STLedgerEntry type aliases instead of std::shared_ptr ( #7282 )
2026-06-01 15:27:13 +00:00
Pratik Mankawde
98fc939851
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-06-01 15:01:19 +01:00
Pratik Mankawde
e7dea147cd
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-05-29 18:18:36 +01:00
Pratik Mankawde
3a1f22583f
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-05-29 15:34:22 +01:00
Ayaz Salikhov
ac33fb32a7
chore: Pin Python packages for codegen using uv ( #7329 )
2026-05-26 18:35:38 +00:00
Michael Legleux
93836f22db
ci: Add Linux package builds (DEB + RPM) to CI ( #6639 )
2026-05-16 05:08:37 +00:00
Jingchen
a761b0d43c
chore: Upgrade mako version ( #7108 )
2026-05-11 16:32:08 +00:00
Ayaz Salikhov
27f7fdb3a6
chore: Do not duplicate sanitizer flags ( #7058 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-05-05 16:32:43 +00:00
Alex Kremer
8995564ed6
refactor: Enable clang-tidy readability-identifier-naming check ( #6571 )
2026-05-03 10:31:53 +00:00
Pratik Mankawde
c6053f5d64
fix: Gate -mcmodel flags to x86_64 in sanitizer builds ( #7049 )
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-04-30 13:33:33 +00:00
Pratik Mankawde
6407f0fa52
fix: Address code review comments regarding boost::coroutine2 ( #6977 )
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-04-30 10:36:12 +00:00
Pratik Mankawde
70d86d7ebf
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
...
# Conflicts:
# OpenTelemetryPlan/06-implementation-phases.md
# OpenTelemetryPlan/09-data-collection-reference.md
# OpenTelemetryPlan/OpenTelemetryPlan.md
# docker/telemetry/docker-compose.yml
# docker/telemetry/grafana/dashboards/statsd-network-traffic.json
# docker/telemetry/otel-collector-config.yaml
# src/xrpld/overlay/detail/PeerImp.cpp
2026-04-29 20:38:00 +01:00
Pratik Mankawde
769668579a
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
...
# Conflicts:
# .codecov.yml
# .github/scripts/levelization/results/ordering.txt
# .github/workflows/reusable-clang-tidy-files.yml
# CMakeLists.txt
# OpenTelemetryPlan/00-tracing-fundamentals.md
# OpenTelemetryPlan/01-architecture-analysis.md
# OpenTelemetryPlan/02-design-decisions.md
# OpenTelemetryPlan/03-implementation-strategy.md
# OpenTelemetryPlan/04-code-samples.md
# OpenTelemetryPlan/05-configuration-reference.md
# OpenTelemetryPlan/06-implementation-phases.md
# OpenTelemetryPlan/07-observability-backends.md
# OpenTelemetryPlan/08-appendix.md
# OpenTelemetryPlan/09-data-collection-reference.md
# OpenTelemetryPlan/OpenTelemetryPlan.md
# OpenTelemetryPlan/POC_taskList.md
# OpenTelemetryPlan/Phase2_taskList.md
# OpenTelemetryPlan/Phase3_taskList.md
# OpenTelemetryPlan/Phase4_taskList.md
# OpenTelemetryPlan/Phase5_IntegrationTest_taskList.md
# OpenTelemetryPlan/Phase5_taskList.md
# OpenTelemetryPlan/presentation.md
# cfg/xrpld-example.cfg
# conan.lock
# conanfile.py
# cspell.config.yaml
# docker/telemetry/TESTING.md
# docker/telemetry/docker-compose.yml
# docker/telemetry/grafana/dashboards/consensus-health.json
# docker/telemetry/grafana/dashboards/transaction-overview.json
# docker/telemetry/grafana/provisioning/dashboards/dashboards.yaml
# docker/telemetry/grafana/provisioning/datasources/tempo.yaml
# docker/telemetry/integration-test.sh
# docker/telemetry/otel-collector-config.yaml
# docker/telemetry/tempo.yaml
# docker/telemetry/xrpld-telemetry.cfg
# docs/build/telemetry.md
# docs/telemetry-runbook.md
# include/xrpl/core/ServiceRegistry.h
# include/xrpl/protocol/detail/features.macro
# include/xrpl/telemetry/SpanGuard.h
# include/xrpl/telemetry/Telemetry.h
# include/xrpl/telemetry/TraceContextPropagator.h
# src/libxrpl/basics/MallocTrim.cpp
# src/libxrpl/nodestore/backend/MemoryFactory.cpp
# src/libxrpl/nodestore/backend/NuDBFactory.cpp
# src/libxrpl/nodestore/backend/RocksDBFactory.cpp
# src/libxrpl/telemetry/NullTelemetry.cpp
# src/libxrpl/telemetry/Telemetry.cpp
# src/libxrpl/telemetry/TelemetryConfig.cpp
# src/tests/libxrpl/basics/MallocTrim.cpp
# src/tests/libxrpl/telemetry/TelemetryConfig.cpp
# src/xrpld/app/consensus/RCLConsensus.cpp
# src/xrpld/app/consensus/RCLConsensus.h
# src/xrpld/app/ledger/detail/BuildLedger.cpp
# src/xrpld/app/ledger/detail/LedgerMaster.cpp
# src/xrpld/app/main/Application.cpp
# src/xrpld/app/misc/NetworkOPs.cpp
# src/xrpld/consensus/Consensus.h
# src/xrpld/overlay/detail/PeerImp.cpp
# src/xrpld/rpc/detail/RPCHandler.cpp
# src/xrpld/rpc/detail/ServerHandler.cpp
2026-04-29 19:50:32 +01:00
Pratik Mankawde
88686af850
Phase 1b: Telemetry core infrastructure - CMake, Conan, SpanGuard, config
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-28 14:25:31 +01:00