# xrpld configuration for Devnet with full OpenTelemetry tracing. # # Connects to the XRP Ledger Devnet and exercises ALL instrumented # workflows: RPC, transactions, consensus, peer overlay, ledger ops, # and pathfinding. # # Usage: # 1. Start the observability stack: # docker compose -f docker/telemetry/docker-compose.yml up -d # 2. Run xrpld: # ./xrpld --conf docker/telemetry/xrpld-telemetry.cfg # 3. Wait for sync (server_state=full), then exercise workflows: # curl -s http://localhost:5005 -d '{"method":"server_info"}' # 4. View traces in Grafana Explore -> Tempo: http://localhost:3000 # --- Server ports ----------------------------------------------------------- [server] port_rpc_admin_local port_ws_admin_local port_ws_public port_peer [port_rpc_admin_local] port = 5005 ip = 127.0.0.1 admin = 127.0.0.1 protocol = http [port_ws_admin_local] port = 6006 ip = 127.0.0.1 admin = 127.0.0.1 protocol = ws [port_ws_public] port = 6005 ip = 0.0.0.0 protocol = ws [port_peer] port = 51235 ip = 0.0.0.0 protocol = peer # --- Network ---------------------------------------------------------------- [network_id] devnet [ips] s.devnet.rippletest.net 51235 [validators_file] validators-devnet.txt [peer_private] 0 [peers_max] 21 # --- Pathfinding (exercises ripple_path_find / path_find workflows) --------- [path_search] 7 [path_search_fast] 2 [path_search_max] 10 # --- Signing (allows sign/sign_for RPC for test tx submission) -------------- [signing_support] true # --- Database --------------------------------------------------------------- [node_db] type=NuDB path=docker/telemetry/data/nudb online_delete=2000 advisory_delete=0 [database_path] docker/telemetry/data [ledger_history] 1000 # --- Logging ---------------------------------------------------------------- # Path is resolved relative to this config file's directory (docker/telemetry), # so this writes to docker/telemetry/data/logs/devnet/debug.log — the same # dir the compose stack bind-mounts into the collector as /var/log/xrpld. [debug_logfile] data/logs/devnet/debug.log [rpc_startup] { "command": "log_level", "severity": "debug" } # --- SSL -------------------------------------------------------------------- [ssl_verify] 0 # --- Insight (native OTel metrics via beast::insight) ----------------------- [insight] server=otel endpoint=http://localhost:4318/v1/metrics prefix=xrpld # Sets the OTel service.instance.id resource attribute, which Prometheus # exposes as the `service_instance_id` label. Dashboards filter on it via the # $node template variable, so without this every insight-backed panel is # empty. Matches [telemetry] service_instance_id for a single node identity. service_instance_id=xrpld-devnet # --- OpenTelemetry tracing -------------------------------------------------- [telemetry] enabled=1 service_instance_id=xrpld-devnet endpoint=http://localhost:4318/v1/traces metrics_endpoint=http://localhost:4318/v1/metrics exporter=otlp_http batch_size=512 batch_delay_ms=5000 max_queue_size=2048 trace_rpc=1 trace_transactions=1 trace_consensus=1 trace_peer=1 trace_ledger=1