Pratik Mankawde
9289cb671d
Phase 9: Internal Metric Instrumentation Gap Fill (Tasks 9.1-9.10)
...
Implement ~50 OTel metrics covering NodeStore I/O, cache hit rates,
TxQ state, PerfLog per-RPC/per-job counters, CountedObject instances,
and load factor breakdown via MetricsRegistry.
Core implementation:
- MetricsRegistry class with synchronous instruments (Counter, Histogram)
for RPC and Job metrics, and ObservableGauge callbacks for cache, TxQ,
CountedObject, LoadFactor, and NodeStore state polling.
- ServiceRegistry extended with getMetricsRegistry() virtual method.
- Application wires MetricsRegistry lifecycle (create/start/stop).
- PerfLogImp instrumented to emit OTel metrics on RPC and Job events.
Dashboards & observability:
- 3 new Grafana dashboards: RPC Performance, Job Queue, Fee Market/TxQ.
- Extended statsd-node-health dashboard with NodeStore, Cache, and
CountedObject panels.
- 10 alerting rules added to telemetry-runbook.md.
- Integration test extended with 12 OTel metric validation checks.
Documentation:
- 09-data-collection-reference.md updated with Phase 9 metric tables.
- Unit tests for MetricsRegistry disabled-path (no-op) behavior.
All OTel SDK code guarded with #ifdef XRPL_ENABLE_TELEMETRY.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-17 10:56:00 +00:00
Pratik Mankawde
d8d7a40fca
Phase 1b: Telemetry core infrastructure
...
Add the OpenTelemetry telemetry library and supporting infrastructure:
Build system:
- Conan opentelemetry-cpp dependency with OTLP/gRPC exporter
- CMake integration for xrpl_telemetry library target
- Levelization ordering updates
Core library (libxrpl):
- Telemetry class: provider lifecycle, span creation, sampling config
- SpanGuard: RAII span management with attribute/exception helpers
- TelemetryConfig: parse [telemetry] config section
- NullTelemetry: no-op implementation when telemetry is disabled
Application integration:
- Telemetry member in ApplicationImp with start/stop lifecycle
- getTelemetry() interface on Application
- ServiceRegistry telemetry accessor
Docker observability stack:
- OTel Collector, Jaeger, Grafana docker-compose setup
- Collector config with OTLP gRPC receiver and Jaeger exporter
Config and docs:
- Example telemetry config section in xrpld-example.cfg
- Build documentation for telemetry setup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 22:09:01 +00:00
Ayaz Salikhov
2c1fad1023
chore: Apply clang-format width 100 ( #6387 )
2026-02-19 23:30:00 +00:00
Jingchen
36240116a5
refactor: Decouple app/tx from Application and Config ( #6227 )
...
This change decouples app/tx from `Application` and `Config` to clear the way to moving transactors to `libxrpl`.
2026-02-17 11:29:53 -05:00
Jingchen
ac0ad3627f
refactor: Modularize HashRouter, Conditions, and OrderBookDB ( #6226 )
...
This change modularizes additional components by moving code to `libxrpl`.
2026-02-13 10:34:37 -05:00
Jingchen
ef284692db
refactor: Modularize WalletDB and Manifest ( #6223 )
...
This change modularizes the `WalletDB` and `Manifest`. Note that the wallet db has nothing to do with account wallets and it stores node configuration, which is why it depends on the manifest code.
2026-02-11 13:42:31 +00:00
Bart
34ef577604
refactor: Replace include guards by '#pragma once' ( #6322 )
...
This change replaces all include guards in the `src/` and `include/` directories by `#pragma once`.
2026-02-04 09:50:21 -05:00
Jingchen
6c1a92fe93
refactor: Add ServiceRegistry to help modularization ( #6222 )
...
Currently we're passing the `Application` object around, whereby the `Application` class acts more like a service registry that gives other classes access to other services. In order to allow modularization, we should replace `Application` with a service registry class so that modules depending on `Application` for other services can be moved easily. This change adds the `ServiceRegistry` class.
2026-02-03 19:08:27 +00:00
Ayaz Salikhov
5f638f5553
chore: Set ColumnLimit to 120 in clang-format ( #6288 )
...
This change updates the ColumnLimit from 80 to 120, and applies clang-format to reformat the code.
2026-01-28 18:09:50 +00:00
Bart
3d1b3a49b3
refactor: Rename rippled.cfg to xrpld.cfg ( #6098 )
...
This change renames all occurrences of `rippled.cfg` to `xrpld.cfg`. It also provides a script to allow developers to replicate the changes in their local branch or fork to avoid conflicts. For the time being it maintains support for `rippled.cfg` as config file, if `xrpld.cfg` does not exist.
2026-01-05 14:55:12 +00:00
Bart
1eb0fdac65
refactor: Rename ripple namespace to xrpl ( #5982 )
...
This change renames all occurrences of `namespace ripple` and `ripple::` to `namespace xrpl` and `xrpl::`, respectively, as well as the names of test suites. It also provides a script to allow developers to replicate the changes in their local branch or fork to avoid conflicts.
2025-12-11 16:51:49 +00:00
Pratik Mankawde
496efb71ca
refactor: Move JobQueue and related classes into xrpl.core module ( #6121 )
2025-12-11 10:30:54 -05:00