diff --git a/docker/telemetry/grafana/dashboards/consensus-health.json b/docker/telemetry/grafana/dashboards/consensus-health.json index 4694de8ea3..a2d8374bae 100644 --- a/docker/telemetry/grafana/dashboards/consensus-health.json +++ b/docker/telemetry/grafana/dashboards/consensus-health.json @@ -23,14 +23,14 @@ "type": "prometheus" }, "expr": "histogram_quantile(0.95, sum by (le) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"consensus.accept\"}[5m])))", - "legendFormat": "p95 round duration" + "legendFormat": "P95 Round Duration" }, { "datasource": { "type": "prometheus" }, "expr": "histogram_quantile(0.50, sum by (le) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"consensus.accept\"}[5m])))", - "legendFormat": "p50 round duration" + "legendFormat": "P50 Round Duration" } ], "fieldConfig": { @@ -55,7 +55,7 @@ "type": "prometheus" }, "expr": "sum(rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"consensus.proposal.send\"}[5m]))", - "legendFormat": "proposals/sec" + "legendFormat": "Proposals / Sec" } ], "fieldConfig": { @@ -80,7 +80,7 @@ "type": "prometheus" }, "expr": "histogram_quantile(0.95, sum by (le) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"consensus.ledger_close\"}[5m])))", - "legendFormat": "p95 close duration" + "legendFormat": "P95 Close Duration" } ], "fieldConfig": { @@ -105,7 +105,7 @@ "type": "prometheus" }, "expr": "sum(rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"consensus.validation.send\"}[5m]))", - "legendFormat": "validations/sec" + "legendFormat": "Validations / Sec" } ], "fieldConfig": { @@ -131,14 +131,14 @@ "type": "prometheus" }, "expr": "histogram_quantile(0.95, sum by (le) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"consensus.accept.apply\"}[5m])))", - "legendFormat": "p95 apply duration" + "legendFormat": "P95 Apply Duration" }, { "datasource": { "type": "prometheus" }, "expr": "histogram_quantile(0.50, sum by (le) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"consensus.accept.apply\"}[5m])))", - "legendFormat": "p50 apply duration" + "legendFormat": "P50 Apply Duration" } ], "fieldConfig": { @@ -164,7 +164,7 @@ "type": "prometheus" }, "expr": "sum(rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"consensus.accept.apply\"}[5m]))", - "legendFormat": "total rounds/sec" + "legendFormat": "Total Rounds / Sec" } ], "fieldConfig": { @@ -182,7 +182,7 @@ { "name": "node", "label": "Node", - "description": "Filter by rippled node (service.instance.id \u2014 defaults to node public key)", + "description": "Filter by rippled node (service.instance.id \u2014 e.g. Node-1)", "type": "query", "query": "label_values(traces_span_metrics_calls_total, exported_instance)", "datasource": { diff --git a/docker/telemetry/grafana/dashboards/rpc-performance.json b/docker/telemetry/grafana/dashboards/rpc-performance.json index 0cba8b0d52..8fda707a97 100644 --- a/docker/telemetry/grafana/dashboards/rpc-performance.json +++ b/docker/telemetry/grafana/dashboards/rpc-performance.json @@ -127,7 +127,7 @@ { "name": "node", "label": "Node", - "description": "Filter by rippled node (service.instance.id \u2014 defaults to node public key)", + "description": "Filter by rippled node (service.instance.id \u2014 e.g. Node-1)", "type": "query", "query": "label_values(traces_span_metrics_calls_total, exported_instance)", "datasource": { diff --git a/docker/telemetry/grafana/dashboards/transaction-overview.json b/docker/telemetry/grafana/dashboards/transaction-overview.json index 8adeb4e2e3..28edf5545e 100644 --- a/docker/telemetry/grafana/dashboards/transaction-overview.json +++ b/docker/telemetry/grafana/dashboards/transaction-overview.json @@ -124,7 +124,7 @@ { "name": "node", "label": "Node", - "description": "Filter by rippled node (service.instance.id \u2014 defaults to node public key)", + "description": "Filter by rippled node (service.instance.id \u2014 e.g. Node-1)", "type": "query", "query": "label_values(traces_span_metrics_calls_total, exported_instance)", "datasource": { diff --git a/docker/telemetry/grafana/provisioning/datasources/tempo.yaml b/docker/telemetry/grafana/provisioning/datasources/tempo.yaml index 1c372461d7..838bfe0919 100644 --- a/docker/telemetry/grafana/provisioning/datasources/tempo.yaml +++ b/docker/telemetry/grafana/provisioning/datasources/tempo.yaml @@ -37,9 +37,9 @@ datasources: operator: "=" scope: resource type: static - # service.instance.id: unique node identifier — defaults to the - # node's public key (e.g., nHB1X37...). Distinguishes individual - # nodes in a multi-node cluster or network. + # service.instance.id: unique node identifier — configurable via + # the service_instance_id setting in [telemetry], defaults to the + # node's public key. E.g. "Node-1" or "nHB1X37...". - id: node-id tag: service.instance.id operator: "=" diff --git a/docker/telemetry/integration-test.sh b/docker/telemetry/integration-test.sh index da2c17fb2b..86b423fd03 100755 --- a/docker/telemetry/integration-test.sh +++ b/docker/telemetry/integration-test.sh @@ -298,6 +298,7 @@ ${IPS_FIXED} [telemetry] enabled=1 +service_instance_id=Node-${i} endpoint=http://localhost:4318/v1/traces exporter=otlp_http sampling_ratio=1.0