Files
rippled/docker/telemetry/xrpld-telemetry-mainnet.cfg
Pratik Mankawde e64afb53d0 fix(telemetry): use service_instance_id in Grafana Cloud transform and docs
Update the transform/cloudlabels processor to set service_instance_id
instead of exported_instance, matching the local Prometheus path where
resource_to_telemetry_conversion promotes service.instance.id with that
exact label name. Also update source comments and documentation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-08 14:55:15 +01:00

142 lines
3.5 KiB
INI

# xrpld configuration for Mainnet with full OpenTelemetry tracing.
#
# Connects to XRP Ledger Mainnet as an observer-only tracking node
# (no validator credentials) 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]
main
# [ips] omitted on purpose. xrpld uses its built-in mainnet hub list
# (r.ripple.com, sahyadri.isrdc.in, hubs.xrpkuwait.com,
# hub.xrpl-commons.org) for peer discovery.
[validators_file]
validators-mainnet.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/mainnet/debug.log — the same
# dir the compose stack bind-mounts into the collector as /var/log/xrpld.
[debug_logfile]
data/logs/mainnet/debug.log
[rpc_startup]
{ "command": "log_level", "severity": "warning" }
# --- 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-mainnet
# --- OpenTelemetry tracing --------------------------------------------------
[telemetry]
enabled=1
service_instance_id=xrpld-mainnet
endpoint=http://localhost:4318/v1/traces
metrics_endpoint=http://localhost:4318/v1/metrics
exporter=otlp_http
# Mainnet has high span throughput across peer/ledger/consensus. Head
# sampling is fixed at 1.0 (sample everything) and not configurable;
# reduce Tempo/collector load with collector-side tail sampling.
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