diff --git a/.github/scripts/rename/README.md b/.github/scripts/rename/README.md index ab685bb0c3..123881094e 100644 --- a/.github/scripts/rename/README.md +++ b/.github/scripts/rename/README.md @@ -1,11 +1,11 @@ ## Renaming ripple(d) to xrpl(d) In the initial phases of development of the XRPL, the open source codebase was -called "rippled" and it remains with that name even today. Today, over 1000 +called "xrpld" and it remains with that name even today. Today, over 1000 nodes run the application, and code contributions have been submitted by developers located around the world. The XRPL community is larger than ever. In light of the decentralized and diversified nature of XRPL, we will rename any -references to `ripple` and `rippled` to `xrpl` and `xrpld`, when appropriate. +references to `ripple` and `xrpld` to `xrpl` and `xrpld`, when appropriate. See [here](https://xls.xrpl.org/xls/XLS-0095-rename-rippled-to-xrpld.html) for more information. @@ -22,17 +22,17 @@ run from the repository root. 2. `.github/scripts/rename/copyright.sh`: This script will remove superfluous copyright notices. 3. `.github/scripts/rename/cmake.sh`: This script will rename all CMake files - from `RippleXXX.cmake` or `RippledXXX.cmake` to `XrplXXX.cmake`, and any - references to `ripple` and `rippled` (with or without capital letters) to + from `RippleXXX.cmake` or `XrpldXXX.cmake` to `XrplXXX.cmake`, and any + references to `ripple` and `xrpld` (with or without capital letters) to `xrpl` and `xrpld`, respectively. The name of the binary will remain as-is, and will only be renamed to `xrpld` by a later script. 4. `.github/scripts/rename/binary.sh`: This script will rename the binary from - `rippled` to `xrpld`, and reverses the symlink so that `rippled` points to + `xrpld` to `xrpld`, and reverses the symlink so that `xrpld` points to the `xrpld` binary. 5. `.github/scripts/rename/namespace.sh`: This script will rename the C++ namespaces from `ripple` to `xrpl`. 6. `.github/scripts/rename/config.sh`: This script will rename the config from - `rippled.cfg` to `xrpld.cfg`, and updating the code accordingly. The old + `xrpld.cfg` to `xrpld.cfg`, and updating the code accordingly. The old filename will still be accepted. 7. `.github/scripts/rename/docs.sh`: This script will rename any lingering references of `ripple(d)` to `xrpl(d)` in code, comments, and documentation. diff --git a/cfg/xrpld-example.cfg b/cfg/xrpld-example.cfg index 04a7b4f81e..8ddc30e2f3 100644 --- a/cfg/xrpld-example.cfg +++ b/cfg/xrpld-example.cfg @@ -1619,12 +1619,28 @@ validators.txt # The node's network ID (from [network_id]) is automatically added # as the `xrpl.network.id` and `xrpl.network.type` resource attributes. # +# service_instance_id= +# +# OTel resource attribute `service.instance.id`. Uniquely identifies +# this node. Default: the node's public key (auto-detected). +# # endpoint=http://localhost:4318/v1/traces # # The OTLP/HTTP exporter endpoint. The server sends trace data as # protobuf-encoded HTTP POST requests to this URL. # Default: http://localhost:4318/v1/traces. # +# --- TLS settings for the OTLP exporter connection --- +# +# use_tls=0 +# +# Enable TLS for the OTLP/HTTP exporter connection. Default: 0 (off). +# +# tls_ca_cert= +# +# Path to a PEM-encoded CA certificate bundle for TLS verification. +# Only used when use_tls=1. Default: empty (system CA store). +# # sampling_ratio=1.0 # # Head-based sampling ratio using TraceIdRatioBasedSampler. The decision @@ -1660,3 +1676,19 @@ validators.txt # Enable tracing for ledger close and accept operations — ledger # building, state hashing, and write-back to the node store. Default: 1. # +# --- Batch processor tuning --- +# +# batch_size=512 +# +# Maximum number of spans exported in a single batch. Default: 512. +# +# batch_delay_ms=5000 +# +# Maximum delay (milliseconds) before a partial batch is flushed. +# Default: 5000 (5 seconds). +# +# max_queue_size=2048 +# +# Maximum number of spans queued in memory before drops occur. +# Default: 2048. +# diff --git a/docker/telemetry/grafana/dashboards/consensus-health.json b/docker/telemetry/grafana/dashboards/consensus-health.json index b6f118d16e..a00c5a1535 100644 --- a/docker/telemetry/grafana/dashboards/consensus-health.json +++ b/docker/telemetry/grafana/dashboards/consensus-health.json @@ -29,14 +29,14 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"consensus.accept\"}[5m])))", + "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", xrpl_consensus_mode=~\"$consensus_mode\", span_name=\"consensus.accept\"}[5m])))", "legendFormat": "P95 Round Duration [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.50, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"consensus.accept\"}[5m])))", + "expr": "histogram_quantile(0.50, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", xrpl_consensus_mode=~\"$consensus_mode\", span_name=\"consensus.accept\"}[5m])))", "legendFormat": "P50 Round Duration [{{exported_instance}}]" } ], @@ -75,7 +75,7 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"consensus.proposal.send\"}[5m]))", + "expr": "sum by (exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", xrpl_consensus_mode=~\"$consensus_mode\", span_name=\"consensus.proposal.send\"}[5m]))", "legendFormat": "Proposals / Sec [{{exported_instance}}]" } ], @@ -114,7 +114,7 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"consensus.ledger_close\"}[5m])))", + "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", xrpl_consensus_mode=~\"$consensus_mode\", span_name=\"consensus.ledger_close\"}[5m])))", "legendFormat": "P95 Close Duration [{{exported_instance}}]" } ], @@ -153,7 +153,7 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"consensus.validation.send\"}[5m]))", + "expr": "sum by (exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", xrpl_consensus_mode=~\"$consensus_mode\", span_name=\"consensus.validation.send\"}[5m]))", "legendFormat": "Validations / Sec [{{exported_instance}}]" } ], @@ -179,14 +179,14 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"consensus.accept.apply\"}[5m])))", + "expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", xrpl_consensus_mode=~\"$consensus_mode\", span_name=\"consensus.accept.apply\"}[5m])))", "legendFormat": "P95 Apply Duration [{{exported_instance}}]" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.50, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"consensus.accept.apply\"}[5m])))", + "expr": "histogram_quantile(0.50, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", xrpl_consensus_mode=~\"$consensus_mode\", span_name=\"consensus.accept.apply\"}[5m])))", "legendFormat": "P50 Apply Duration [{{exported_instance}}]" } ], @@ -219,8 +219,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"consensus.accept.apply\"}[5m]))", - "legendFormat": "Total Rounds / Sec [{{exported_instance}}]" + "expr": "sum by (xrpl_consensus_close_time_correct, exported_instance) (rate(traces_span_metrics_calls_total{span_name=\"consensus.accept.apply\", xrpl_consensus_mode=~\"$consensus_mode\", exported_instance=~\"$node\"}[$__rate_interval]))", + "legendFormat": "close_time_correct={{xrpl_consensus_close_time_correct}} [{{exported_instance}}]" } ], "fieldConfig": { diff --git a/docker/telemetry/grafana/dashboards/transaction-overview.json b/docker/telemetry/grafana/dashboards/transaction-overview.json index d233110ce0..bc42421ede 100644 --- a/docker/telemetry/grafana/dashboards/transaction-overview.json +++ b/docker/telemetry/grafana/dashboards/transaction-overview.json @@ -147,8 +147,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"tx.receive\"}[5m]))", - "legendFormat": "Total Received [{{exported_instance}}]" + "expr": "sum by (xrpl_tx_suppressed, exported_instance) (rate(traces_span_metrics_calls_total{span_name=\"tx.receive\", exported_instance=~\"$node\"}[$__rate_interval]))", + "legendFormat": "suppressed={{xrpl_tx_suppressed}} [{{exported_instance}}]" } ], "fieldConfig": { diff --git a/docker/telemetry/grafana/provisioning/datasources/tempo.yaml b/docker/telemetry/grafana/provisioning/datasources/tempo.yaml index 45196a3a9a..83b7e80c65 100644 --- a/docker/telemetry/grafana/provisioning/datasources/tempo.yaml +++ b/docker/telemetry/grafana/provisioning/datasources/tempo.yaml @@ -166,3 +166,54 @@ datasources: operator: "=" scope: span type: dynamic + - id: consensus-proposers + tag: xrpl.consensus.proposers + operator: "=" + scope: span + type: dynamic + - id: consensus-result + tag: xrpl.consensus.result + operator: "=" + scope: span + type: dynamic + - id: consensus-mode-old + tag: xrpl.consensus.mode.old + operator: "=" + scope: span + type: dynamic + - id: consensus-mode-new + tag: xrpl.consensus.mode.new + operator: "=" + scope: span + type: dynamic + - id: consensus-ledger-id + tag: xrpl.consensus.ledger_id + operator: "=" + scope: span + type: static + # Phase 3/4: Additional transaction and queue filters + - id: tx-path + tag: xrpl.tx.path + operator: "=" + scope: span + type: dynamic + - id: tx-suppressed + tag: xrpl.tx.suppressed + operator: "=" + scope: span + type: dynamic + - id: peer-version + tag: xrpl.peer.version + operator: "=" + scope: span + type: dynamic + - id: txq-status + tag: xrpl.txq.status + operator: "=" + scope: span + type: dynamic + - id: txq-ter-code + tag: xrpl.txq.ter_code + operator: "=" + scope: span + type: dynamic diff --git a/docker/telemetry/otel-collector-config.yaml b/docker/telemetry/otel-collector-config.yaml index 92636688d4..297f673560 100644 --- a/docker/telemetry/otel-collector-config.yaml +++ b/docker/telemetry/otel-collector-config.yaml @@ -34,7 +34,9 @@ connectors: - name: xrpl.rpc.command - name: xrpl.rpc.status - name: xrpl.consensus.mode + - name: xrpl.consensus.close_time_correct - name: xrpl.tx.local + - name: xrpl.tx.suppressed - name: xrpl.peer.proposal.trusted - name: xrpl.peer.validation.trusted diff --git a/docs/telemetry-runbook.md b/docs/telemetry-runbook.md index e177ec351f..e0452b4a46 100644 --- a/docs/telemetry-runbook.md +++ b/docs/telemetry-runbook.md @@ -39,22 +39,24 @@ cmake --build --preset default ## Configuration Reference -| Option | Default | Description | -| -------------------- | --------------------------------- | ----------------------------------------- | -| `enabled` | `0` | Master switch for telemetry | -| `endpoint` | `http://localhost:4318/v1/traces` | OTLP/HTTP endpoint | -| `exporter` | `otlp_http` | Exporter type | -| `sampling_ratio` | `1.0` | Head-based sampling ratio (0.0–1.0) | -| `trace_rpc` | `1` | Enable RPC request tracing | -| `trace_transactions` | `1` | Enable transaction tracing | -| `trace_consensus` | `1` | Enable consensus tracing | -| `trace_peer` | `0` | Enable peer message tracing (high volume) | -| `trace_ledger` | `1` | Enable ledger tracing | -| `batch_size` | `512` | Max spans per batch export | -| `batch_delay_ms` | `5000` | Delay between batch exports | -| `max_queue_size` | `2048` | Max spans queued before dropping | -| `use_tls` | `0` | Use TLS for exporter connection | -| `tls_ca_cert` | (empty) | Path to CA certificate bundle | +| Option | Default | Description | +| -------------------------- | --------------------------------- | --------------------------------------------------------- | +| `enabled` | `0` | Master switch for telemetry | +| `endpoint` | `http://localhost:4318/v1/traces` | OTLP/HTTP endpoint | +| `service_name` | `xrpld` | OpenTelemetry service name resource attribute | +| `service_instance_id` | node public key | OpenTelemetry service instance ID resource attribute | +| `sampling_ratio` | `1.0` | Head-based sampling ratio (0.0--1.0) | +| `trace_rpc` | `1` | Enable RPC request tracing | +| `trace_transactions` | `1` | Enable transaction tracing | +| `trace_consensus` | `1` | Enable consensus tracing | +| `trace_peer` | `0` | Enable peer message tracing (high volume) | +| `trace_ledger` | `1` | Enable ledger tracing | +| `consensus_trace_strategy` | `deterministic` | Consensus trace ID strategy (`deterministic` or `random`) | +| `batch_size` | `512` | Max spans per batch export | +| `batch_delay_ms` | `5000` | Delay between batch exports | +| `max_queue_size` | `2048` | Max spans queued before dropping | +| `use_tls` | `0` | Use TLS for exporter connection | +| `tls_ca_cert` | (empty) | Path to CA certificate bundle | ## Span Reference @@ -71,21 +73,47 @@ All spans instrumented in xrpld, grouped by subsystem: ### Transaction Spans (Phase 3) -| Span Name | Source File | Attributes | Description | -| ------------ | ------------------- | ---------------------------------------------------------------------- | ------------------------------------- | -| `tx.process` | NetworkOPs.cpp:1227 | `xrpl.tx.hash`, `xrpl.tx.local`, `xrpl.tx.path` | Transaction submission and processing | -| `tx.receive` | PeerImp.cpp:1273 | `xrpl.peer.id`, `xrpl.tx.hash`, `xrpl.tx.suppressed`, `xrpl.tx.status` | Transaction received from peer relay | -| `tx.apply` | BuildLedger.cpp:88 | `xrpl.ledger.seq`, `xrpl.ledger.tx_count`, `xrpl.ledger.tx_failed` | Transaction set applied per ledger | +| Span Name | Source File | Attributes | Description | +| ------------ | ------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------- | +| `tx.process` | NetworkOPs.cpp:1227 | `xrpl.tx.hash`, `xrpl.tx.local`, `xrpl.tx.path` | Transaction submission and processing | +| `tx.receive` | PeerImp.cpp:1273 | `xrpl.peer.id`, `xrpl.tx.hash`, `xrpl.peer.version`, `xrpl.tx.suppressed`, `xrpl.tx.status` | Transaction received from peer relay | +| `tx.apply` | BuildLedger.cpp:88 | `xrpl.ledger.seq`, `xrpl.ledger.tx_count`, `xrpl.ledger.tx_failed` | Transaction set applied per ledger | + +### Transaction Queue Spans (Phase 3) + +| Span Name | Source File | Attributes | Description | +| ------------------ | ----------- | --------------------------------------------------------------------- | -------------------------------------------------- | +| `txq.enqueue` | TxQ.cpp | `xrpl.txq.tx_hash` | Transaction enqueue decision (child of tx.process) | +| `txq.apply_direct` | TxQ.cpp | -- | Direct apply attempt (bypassing queue) | +| `txq.batch_clear` | TxQ.cpp | -- | Batch clear of queued transactions for an account | +| `txq.accept` | TxQ.cpp | `xrpl.txq.queue_size` | Ledger-close accept loop over queued transactions | +| `txq.accept_tx` | TxQ.cpp | `xrpl.txq.tx_hash`, `xrpl.txq.retries_remaining`, `xrpl.txq.ter_code` | Per-transaction apply during accept | +| `txq.cleanup` | TxQ.cpp | `xrpl.txq.ledger_seq` | Post-close cleanup of expired queue entries | ### Consensus Spans (Phase 4) -| Span Name | Source File | Attributes | Description | -| --------------------------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | -| `consensus.proposal.send` | RCLConsensus.cpp:177 | `xrpl.consensus.round` | Consensus proposal broadcast | -| `consensus.ledger_close` | RCLConsensus.cpp:282 | `xrpl.consensus.ledger.seq`, `xrpl.consensus.mode` | Ledger close event | -| `consensus.accept` | RCLConsensus.cpp:395 | `xrpl.consensus.proposers`, `xrpl.consensus.round_time_ms` | Ledger accepted by consensus | -| `consensus.validation.send` | RCLConsensus.cpp:753 | `xrpl.consensus.ledger.seq`, `xrpl.consensus.proposing` | Validation sent after accept | -| `consensus.accept.apply` | RCLConsensus.cpp:453 | `xrpl.consensus.close_time`, `close_time_correct`, `close_resolution_ms`, `state`, `proposing`, `round_time_ms`, `ledger.seq` | Ledger application with close time details | +| Span Name | Source File | Attributes | Description | +| ------------------------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `consensus.round` | RCLConsensus.cpp | `xrpl.consensus.ledger_id`, `xrpl.consensus.ledger.seq`, `xrpl.consensus.mode`, `xrpl.consensus.trace_strategy`, `xrpl.consensus.round_id` | Root span for a consensus round (deterministic or random trace ID) | +| `consensus.phase.open` | Consensus.h | -- | Open phase duration (child of round) | +| `consensus.proposal.send` | RCLConsensus.cpp | `xrpl.consensus.round` | Consensus proposal broadcast | +| `consensus.ledger_close` | RCLConsensus.cpp | `xrpl.consensus.ledger.seq`, `xrpl.consensus.mode` | Ledger close event | +| `consensus.establish` | Consensus.h | `xrpl.consensus.converge_percent`, `xrpl.consensus.establish_count`, `xrpl.consensus.proposers` | Establish phase duration (child of round) | +| `consensus.update_positions` | Consensus.h | `xrpl.consensus.converge_percent`, `xrpl.consensus.proposers`, `xrpl.consensus.disputes_count` | Position update and dispute resolution (see Events below) | +| `consensus.check` | Consensus.h | `xrpl.consensus.agree_count`, `xrpl.consensus.disagree_count`, `xrpl.consensus.converge_percent`, `xrpl.consensus.have_close_time_consensus`, `xrpl.consensus.threshold_percent`, `xrpl.consensus.result` | Consensus threshold check | +| `consensus.accept` | RCLConsensus.cpp | `xrpl.consensus.proposers`, `xrpl.consensus.round_time_ms` | Ledger accepted by consensus | +| `consensus.accept.apply` | RCLConsensus.cpp | `xrpl.consensus.ledger.seq`, `xrpl.consensus.close_time`, `xrpl.consensus.close_time_correct`, `xrpl.consensus.close_resolution_ms`, `xrpl.consensus.state`, `xrpl.consensus.proposing`, `xrpl.consensus.round_time_ms`, `xrpl.consensus.parent_close_time`, `xrpl.consensus.close_time_self`, `xrpl.consensus.close_time_vote_bins`, `xrpl.consensus.resolution_direction`, `xrpl.consensus.tx_count` | Ledger application with close time details (see Events below) | +| `consensus.validation.send` | RCLConsensus.cpp | `xrpl.consensus.ledger.seq`, `xrpl.consensus.proposing` | Validation sent after accept (follows-from link) | +| `consensus.mode_change` | RCLConsensus.cpp | `xrpl.consensus.mode.old`, `xrpl.consensus.mode.new` | Consensus mode transition | +| `consensus.proposal.receive` | PeerImp.cpp | `xrpl.consensus.trusted`, `xrpl.consensus.round` | Proposal received from peer (standalone span) | +| `consensus.validation.receive` | PeerImp.cpp | `xrpl.consensus.trusted`, `xrpl.consensus.ledger.seq` | Validation received from peer (standalone span) | + +#### Consensus Span Events + +| Parent Span | Event Name | Event Attributes | Description | +| ---------------------------- | ----------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------- | +| `consensus.update_positions` | `dispute.resolve` | `xrpl.tx.id`, `xrpl.dispute.our_vote`, `xrpl.dispute.yays`, `xrpl.dispute.nays` | Emitted per dispute when votes are tallied | +| `consensus.accept.apply` | `tx.included` | `xrpl.tx.id` | Emitted per transaction included in the accepted ledger | #### Close Time Queries (Tempo TraceQL) @@ -101,6 +129,12 @@ All spans instrumented in xrpld, grouped by subsystem: # Find specific ledger's consensus details {name="consensus.accept.apply"} | xrpl.consensus.ledger.seq = 92345678 + +# Find all spans in a consensus round (deterministic trace strategy) +{name="consensus.round"} | xrpl.consensus.round_id = "" + +# Find dispute resolutions +{name="consensus.update_positions"} >> {event:name="dispute.resolve"} ``` ### Ledger Spans (Phase 5) @@ -325,25 +359,39 @@ Requires `trace_peer=1` in the `[telemetry]` config section. ### Span → Metric → Dashboard Summary -| Span Name | Prometheus Metric Filter | Grafana Dashboard | -| --------------------------- | ----------------------------------------- | --------------------------------------------- | -| `rpc.request` | `{span_name="rpc.request"}` | RPC Performance (Overall Throughput) | -| `rpc.process` | `{span_name="rpc.process"}` | RPC Performance (Overall Throughput) | -| `rpc.ws_message` | `{span_name="rpc.ws_message"}` | RPC Performance (WebSocket Rate) | -| `rpc.command.*` | `{span_name=~"rpc.command.*"}` | RPC Performance (Rate, Latency, Error, Top) | -| `tx.process` | `{span_name="tx.process"}` | Transaction Overview (Rate, Latency, Heatmap) | -| `tx.receive` | `{span_name="tx.receive"}` | Transaction Overview (Rate, Receive) | -| `tx.apply` | `{span_name="tx.apply"}` | Transaction Overview + Ledger Ops (Apply) | -| `consensus.accept` | `{span_name="consensus.accept"}` | Consensus Health (Duration, Rate, Heatmap) | -| `consensus.proposal.send` | `{span_name="consensus.proposal.send"}` | Consensus Health (Proposals Rate) | -| `consensus.ledger_close` | `{span_name="consensus.ledger_close"}` | Consensus Health (Close, Mode) | -| `consensus.validation.send` | `{span_name="consensus.validation.send"}` | Consensus Health (Validation Rate) | -| `consensus.accept.apply` | `{span_name="consensus.accept.apply"}` | Consensus Health (Apply Duration, Close Time) | -| `ledger.build` | `{span_name="ledger.build"}` | Ledger Ops (Build Rate, Duration, Heatmap) | -| `ledger.validate` | `{span_name="ledger.validate"}` | Ledger Ops (Validation Rate) | -| `ledger.store` | `{span_name="ledger.store"}` | Ledger Ops (Store Rate) | -| `peer.proposal.receive` | `{span_name="peer.proposal.receive"}` | Peer Network (Rate, Trusted/Untrusted) | -| `peer.validation.receive` | `{span_name="peer.validation.receive"}` | Peer Network (Rate, Trusted/Untrusted) | +| Span Name | Prometheus Metric Filter | Grafana Dashboard | +| ------------------------------ | -------------------------------------------- | --------------------------------------------- | +| `rpc.request` | `{span_name="rpc.request"}` | RPC Performance (Overall Throughput) | +| `rpc.process` | `{span_name="rpc.process"}` | RPC Performance (Overall Throughput) | +| `rpc.ws_message` | `{span_name="rpc.ws_message"}` | RPC Performance (WebSocket Rate) | +| `rpc.command.*` | `{span_name=~"rpc.command.*"}` | RPC Performance (Rate, Latency, Error, Top) | +| `tx.process` | `{span_name="tx.process"}` | Transaction Overview (Rate, Latency, Heatmap) | +| `tx.receive` | `{span_name="tx.receive"}` | Transaction Overview (Rate, Receive) | +| `tx.apply` | `{span_name="tx.apply"}` | Transaction Overview + Ledger Ops (Apply) | +| `txq.enqueue` | `{span_name="txq.enqueue"}` | -- (available but not paneled) | +| `txq.apply_direct` | `{span_name="txq.apply_direct"}` | -- (available but not paneled) | +| `txq.batch_clear` | `{span_name="txq.batch_clear"}` | -- (available but not paneled) | +| `txq.accept` | `{span_name="txq.accept"}` | -- (available but not paneled) | +| `txq.accept_tx` | `{span_name="txq.accept_tx"}` | -- (available but not paneled) | +| `txq.cleanup` | `{span_name="txq.cleanup"}` | -- (available but not paneled) | +| `consensus.round` | `{span_name="consensus.round"}` | -- (available but not paneled) | +| `consensus.phase.open` | `{span_name="consensus.phase.open"}` | -- (available but not paneled) | +| `consensus.establish` | `{span_name="consensus.establish"}` | -- (available but not paneled) | +| `consensus.update_positions` | `{span_name="consensus.update_positions"}` | -- (available but not paneled) | +| `consensus.check` | `{span_name="consensus.check"}` | -- (available but not paneled) | +| `consensus.accept` | `{span_name="consensus.accept"}` | Consensus Health (Duration, Rate, Heatmap) | +| `consensus.proposal.send` | `{span_name="consensus.proposal.send"}` | Consensus Health (Proposals Rate) | +| `consensus.ledger_close` | `{span_name="consensus.ledger_close"}` | Consensus Health (Close, Mode) | +| `consensus.validation.send` | `{span_name="consensus.validation.send"}` | Consensus Health (Validation Rate) | +| `consensus.accept.apply` | `{span_name="consensus.accept.apply"}` | Consensus Health (Apply Duration, Close Time) | +| `consensus.mode_change` | `{span_name="consensus.mode_change"}` | -- (available but not paneled) | +| `consensus.proposal.receive` | `{span_name="consensus.proposal.receive"}` | -- (available but not paneled) | +| `consensus.validation.receive` | `{span_name="consensus.validation.receive"}` | -- (available but not paneled) | +| `ledger.build` | `{span_name="ledger.build"}` | Ledger Ops (Build Rate, Duration, Heatmap) | +| `ledger.validate` | `{span_name="ledger.validate"}` | Ledger Ops (Validation Rate) | +| `ledger.store` | `{span_name="ledger.store"}` | Ledger Ops (Store Rate) | +| `peer.proposal.receive` | `{span_name="peer.proposal.receive"}` | Peer Network (Rate, Trusted/Untrusted) | +| `peer.validation.receive` | `{span_name="peer.validation.receive"}` | Peer Network (Rate, Trusted/Untrusted) | ## Troubleshooting diff --git a/include/xrpl/protocol/README.md b/include/xrpl/protocol/README.md index d679c583d4..f435a4dec3 100644 --- a/include/xrpl/protocol/README.md +++ b/include/xrpl/protocol/README.md @@ -33,7 +33,7 @@ or may not hold a value. For things not guaranteed to exist, you use `x[~sfFoo]` because you want such a container. It avoids having to look something up twice, once just to see if it exists and a second time to get/set its value. -([Real example](https://github.com/XRPLF/rippled/blob/35f4698aed5dce02f771b34cfbb690495cb5efcc/src/ripple/app/tx/impl/PayChan.cpp#L229-L236)) +([Real example](https://github.com/XRPLF/rippled/blob/35f4698aed5dce02f771b34cfbb690495cb5efcc/src/xrpld/app/tx/impl/PayChan.cpp#L229-L236)) The source of this "type magic" is in [SField.h](./SField.h#L296-L302). diff --git a/src/xrpld/app/misc/SHAMapStoreImp.h b/src/xrpld/app/misc/SHAMapStoreImp.h index 08e3dd70eb..3c847cf434 100644 --- a/src/xrpld/app/misc/SHAMapStoreImp.h +++ b/src/xrpld/app/misc/SHAMapStoreImp.h @@ -53,7 +53,7 @@ private: // name of state database std::string const dbName_ = "state"; // prefix of on-disk nodestore backend instances - std::string const dbPrefix_ = "rippledb"; // cspell: disable-line + std::string const dbPrefix_ = "xrpldb"; // cspell: disable-line // check health/stop status as records are copied std::uint64_t const checkHealthInterval_ = 1000; // minimum # of ledgers to maintain for health of network diff --git a/src/xrpld/core/detail/Config.cpp b/src/xrpld/core/detail/Config.cpp index b7063287bb..7c55f08c81 100644 --- a/src/xrpld/core/detail/Config.cpp +++ b/src/xrpld/core/detail/Config.cpp @@ -249,7 +249,7 @@ getSingleSection( //------------------------------------------------------------------------------ char const* const Config::configFileName = "xrpld.cfg"; -char const* const Config::configLegacyName = "rippled.cfg"; +char const* const Config::configLegacyName = "xrpld.cfg"; char const* const Config::databaseDirName = "db"; char const* const Config::validatorsFileName = "validators.txt";