diff --git a/docker/telemetry/grafana/dashboards/statsd-ledger-data-sync.json b/docker/telemetry/grafana/dashboards/statsd-ledger-data-sync.json new file mode 100644 index 0000000000..004b46ea3d --- /dev/null +++ b/docker/telemetry/grafana/dashboards/statsd-ledger-data-sync.json @@ -0,0 +1,364 @@ +{ + "annotations": { "list": [] }, + "description": "Ledger data exchange and object fetch traffic from beast::insight StatsD. Covers ledger sync, node data retrieval, and transaction set exchange. Requires [insight] server=statsd in rippled config.", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "title": "Ledger Data Exchange (Bytes In)", + "description": "Inbound bytes for ledger data sub-categories. 'ledger_data' = aggregated ledger data, sub-types include Transaction_Set_candidate (proposed tx sets), Transaction_Node (tx tree nodes), and Account_State_Node (state tree nodes). High Account_State_Node traffic indicates state sync; high Transaction_Set_candidate indicates consensus catch-up. Sourced from TrafficCount.h ledger_data_* categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_data_get_Bytes_In", + "legendFormat": "Ledger Data Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_data_share_Bytes_In", + "legendFormat": "Ledger Data Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_data_Transaction_Set_candidate_get_Bytes_In", + "legendFormat": "TX Set Candidate Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_data_Transaction_Set_candidate_share_Bytes_In", + "legendFormat": "TX Set Candidate Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_data_Transaction_Node_get_Bytes_In", + "legendFormat": "TX Node Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_data_Transaction_Node_share_Bytes_In", + "legendFormat": "TX Node Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_data_Account_State_Node_get_Bytes_In", + "legendFormat": "Account State Node Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_data_Account_State_Node_share_Bytes_In", + "legendFormat": "Account State Node Share" + } + ], + "fieldConfig": { + "defaults": { + "unit": "decbytes", + "custom": { + "axisLabel": "Bytes In", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + }, + { + "title": "Ledger Share/Get Traffic (Bytes)", + "description": "Legacy ledger share and get traffic by sub-type. These are the older ledger fetch protocol categories (as opposed to ledger_data_* which is the newer protocol). Sub-types: Transaction_Set_candidate, Transaction_node, Account_State_node, plus aggregate ledger_share and ledger_get. Sourced from TrafficCount.h ledger_* categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_share_Bytes_In", + "legendFormat": "Ledger Share In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_get_Bytes_In", + "legendFormat": "Ledger Get In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_Transaction_Set_candidate_share_Bytes_In", + "legendFormat": "TX Set Candidate Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_Transaction_Set_candidate_get_Bytes_In", + "legendFormat": "TX Set Candidate Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_Transaction_node_share_Bytes_In", + "legendFormat": "TX Node Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_Transaction_node_get_Bytes_In", + "legendFormat": "TX Node Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_Account_State_node_share_Bytes_In", + "legendFormat": "Account State Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_ledger_Account_State_node_get_Bytes_In", + "legendFormat": "Account State Get" + } + ], + "fieldConfig": { + "defaults": { + "unit": "decbytes", + "custom": { + "axisLabel": "Bytes In", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + }, + { + "title": "GetObject Traffic by Type (Bytes In)", + "description": "Object fetch traffic by object type. GetObject is the protocol for fetching specific SHAMap nodes. Types: Ledger (full ledger headers), Transaction (individual txs), Transaction_node (tx tree nodes), Account_State_node (state tree nodes), CAS (Content Addressable Storage objects), Fetch_Pack (batch fetch during catch-up), Transactions (bulk tx fetch). High Fetch_Pack traffic indicates a node is catching up. Sourced from TrafficCount.h getobject_* categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Ledger_get_Bytes_In", + "legendFormat": "Ledger Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Ledger_share_Bytes_In", + "legendFormat": "Ledger Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Transaction_get_Bytes_In", + "legendFormat": "Transaction Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Transaction_share_Bytes_In", + "legendFormat": "Transaction Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Transaction_node_get_Bytes_In", + "legendFormat": "TX Node Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Transaction_node_share_Bytes_In", + "legendFormat": "TX Node Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Account_State_node_get_Bytes_In", + "legendFormat": "Account State Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Account_State_node_share_Bytes_In", + "legendFormat": "Account State Share" + } + ], + "fieldConfig": { + "defaults": { + "unit": "decbytes", + "custom": { + "axisLabel": "Bytes In", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + }, + { + "title": "GetObject Aggregate & Special Types (Bytes In)", + "description": "Aggregate getobject traffic plus special categories: CAS (Content Addressable Storage) for SHAMap node fetch, Fetch_Pack for bulk batch downloads during catch-up, Transactions for bulk tx fetch, and the aggregate getobject_get/getobject_share totals. Sourced from TrafficCount.h getobject_* categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_CAS_get_Bytes_In", + "legendFormat": "CAS Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_CAS_share_Bytes_In", + "legendFormat": "CAS Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Fetch_Pack_share_Bytes_In", + "legendFormat": "Fetch Pack Share" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Fetch_Pack_get_Bytes_In", + "legendFormat": "Fetch Pack Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Transactions_get_Bytes_In", + "legendFormat": "Transactions Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_get_Bytes_In", + "legendFormat": "Aggregate Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_share_Bytes_In", + "legendFormat": "Aggregate Share" + } + ], + "fieldConfig": { + "defaults": { + "unit": "decbytes", + "custom": { + "axisLabel": "Bytes In", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + }, + { + "title": "GetObject Messages by Type", + "description": "Message counts for object fetch operations. Shows how many individual fetch requests and responses are exchanged per type. High message counts with low byte counts indicate small object fetches; the inverse indicates large batch transfers. Sourced from TrafficCount.h getobject_* categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 0, "y": 16 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Ledger_get_Messages_In", + "legendFormat": "Ledger Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Transaction_get_Messages_In", + "legendFormat": "Transaction Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Transaction_node_get_Messages_In", + "legendFormat": "TX Node Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Account_State_node_get_Messages_In", + "legendFormat": "Account State Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_CAS_get_Messages_In", + "legendFormat": "CAS Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Fetch_Pack_get_Messages_In", + "legendFormat": "Fetch Pack Get" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_getobject_Transactions_get_Messages_In", + "legendFormat": "Transactions Get" + } + ], + "fieldConfig": { + "defaults": { + "unit": "short", + "custom": { + "axisLabel": "Messages In", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + }, + { + "title": "Overlay Traffic Heatmap (All Categories, Bytes In)", + "description": "Bar gauge showing all overlay traffic categories ranked by inbound bytes. Provides a complete at-a-glance view of which protocol message types consume the most bandwidth across all 57+ traffic categories. Sourced from all TrafficCount.h categories via wildcard match.", + "type": "bargauge", + "gridPos": { "h": 8, "w": 12, "x": 12, "y": 16 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" }, + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "topk(20, {__name__=~\"rippled_.*_Bytes_In\", __name__!~\"rippled_total_.*\"})", + "legendFormat": "{{__name__}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "decbytes", + "thresholds": { + "mode": "absolute", + "steps": [ + { "color": "green", "value": null }, + { "color": "yellow", "value": 1048576 }, + { "color": "red", "value": 104857600 } + ] + } + }, + "overrides": [] + } + } + ], + "schemaVersion": 39, + "tags": ["rippled", "statsd", "ledger", "sync", "telemetry"], + "templating": { "list": [] }, + "time": { "from": "now-1h", "to": "now" }, + "title": "rippled Ledger Data & Sync (StatsD)", + "uid": "rippled-statsd-ledger-sync" +} diff --git a/docker/telemetry/grafana/dashboards/statsd-overlay-traffic-detail.json b/docker/telemetry/grafana/dashboards/statsd-overlay-traffic-detail.json new file mode 100644 index 0000000000..7bd4a84803 --- /dev/null +++ b/docker/telemetry/grafana/dashboards/statsd-overlay-traffic-detail.json @@ -0,0 +1,405 @@ +{ + "annotations": { "list": [] }, + "description": "Detailed overlay traffic breakdown for categories not covered by the main Network Traffic dashboard. Includes squelch, overhead, validator lists, object fetch, ledger sync, and protocol negotiation traffic. Requires [insight] server=statsd in rippled config.", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "panels": [ + { + "title": "Squelch Traffic (Messages)", + "description": "Squelch-related overlay messages. Squelch is the peer traffic management protocol that suppresses redundant message forwarding. 'squelch' = squelch control messages, 'squelch_suppressed' = messages suppressed by squelch, 'squelch_ignored' = squelch directives that were ignored. High suppressed counts indicate effective bandwidth savings; high ignored counts may indicate misconfigured peers. Sourced from TrafficCount.h squelch categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_squelch_Messages_In", + "legendFormat": "Squelch In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_squelch_Messages_Out", + "legendFormat": "Squelch Out" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_squelch_suppressed_Messages_In", + "legendFormat": "Suppressed In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_squelch_suppressed_Messages_Out", + "legendFormat": "Suppressed Out" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_squelch_ignored_Messages_In", + "legendFormat": "Ignored In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_squelch_ignored_Messages_Out", + "legendFormat": "Ignored Out" + } + ], + "fieldConfig": { + "defaults": { + "unit": "short", + "custom": { + "axisLabel": "Messages", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + }, + { + "title": "Overhead Traffic Breakdown (Bytes)", + "description": "Overlay protocol overhead by sub-category. 'overhead' = base protocol overhead (ping, status, etc.), 'overhead_cluster' = intra-cluster communication overhead, 'overhead_manifest' = validator manifest distribution overhead. High cluster overhead may indicate frequent cluster state syncs; high manifest overhead occurs during UNL changes. Sourced from TrafficCount.h overhead categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_overhead_Bytes_In", + "legendFormat": "Base Overhead In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_overhead_Bytes_Out", + "legendFormat": "Base Overhead Out" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_overhead_cluster_Bytes_In", + "legendFormat": "Cluster In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_overhead_cluster_Bytes_Out", + "legendFormat": "Cluster Out" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_overhead_manifest_Bytes_In", + "legendFormat": "Manifest In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_overhead_manifest_Bytes_Out", + "legendFormat": "Manifest Out" + } + ], + "fieldConfig": { + "defaults": { + "unit": "decbytes", + "custom": { + "axisLabel": "Bytes", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + }, + { + "title": "Validator List Traffic", + "description": "Validator list (UNL) distribution traffic. Validator lists are exchanged when peers share their trusted validator configurations. Spikes occur during UNL updates or when new peers connect. Sourced from TrafficCount.h validator_lists category.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_validator_lists_Bytes_In", + "legendFormat": "Bytes In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_validator_lists_Bytes_Out", + "legendFormat": "Bytes Out" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_validator_lists_Messages_In", + "legendFormat": "Messages In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_validator_lists_Messages_Out", + "legendFormat": "Messages Out" + } + ], + "fieldConfig": { + "defaults": { + "unit": "short", + "custom": { + "axisLabel": "Count", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [ + { + "matcher": { "id": "byRegexp", "options": "/Bytes/" }, + "properties": [ + { "id": "custom.axisPlacement", "value": "right" }, + { "id": "unit", "value": "decbytes" } + ] + } + ] + } + }, + { + "title": "Set Get/Share Traffic (Bytes)", + "description": "Transaction set get and share traffic. 'set_get' = requests to fetch transaction sets (sent during ledger close), 'set_share' = responses sharing transaction sets. High set_get traffic indicates peers frequently requesting missing transaction sets, which may signal sync delays. Sourced from TrafficCount.h set_get/set_share categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_set_get_Bytes_In", + "legendFormat": "Set Get In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_set_get_Bytes_Out", + "legendFormat": "Set Get Out" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_set_share_Bytes_In", + "legendFormat": "Set Share In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_set_share_Bytes_Out", + "legendFormat": "Set Share Out" + } + ], + "fieldConfig": { + "defaults": { + "unit": "decbytes", + "custom": { + "axisLabel": "Bytes", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + }, + { + "title": "Have/Requested Transactions (Messages)", + "description": "Transaction availability protocol messages. 'have_transactions' = advertisements that a peer has specific transactions available, 'requested_transactions' = explicit requests for transaction data. A high ratio of requested to have may indicate peers are behind on transaction propagation. Sourced from TrafficCount.h have_transactions/requested_transactions categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 0, "y": 16 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_have_transactions_Messages_In", + "legendFormat": "Have TX In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_have_transactions_Messages_Out", + "legendFormat": "Have TX Out" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_requested_transactions_Messages_In", + "legendFormat": "Requested TX In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_requested_transactions_Messages_Out", + "legendFormat": "Requested TX Out" + } + ], + "fieldConfig": { + "defaults": { + "unit": "short", + "custom": { + "axisLabel": "Messages", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + }, + { + "title": "Unknown / Unclassified Traffic", + "description": "Traffic that does not match any known overlay message category. Non-zero values may indicate protocol version mismatches, corrupted messages, or new message types not yet classified. Sourced from TrafficCount.h unknown category.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 12, "y": 16 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_unknown_Bytes_In", + "legendFormat": "Unknown Bytes In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_unknown_Bytes_Out", + "legendFormat": "Unknown Bytes Out" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_unknown_Messages_In", + "legendFormat": "Unknown Messages In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_unknown_Messages_Out", + "legendFormat": "Unknown Messages Out" + } + ], + "fieldConfig": { + "defaults": { + "unit": "short", + "custom": { + "axisLabel": "Count", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [ + { + "matcher": { "id": "byRegexp", "options": "/Bytes/" }, + "properties": [ + { "id": "custom.axisPlacement", "value": "right" }, + { "id": "unit", "value": "decbytes" } + ] + } + ] + } + }, + { + "title": "Proof Path Traffic", + "description": "Proof path request/response traffic for ledger state proof exchange. Used by peers to verify specific ledger entries without downloading the full ledger. High request volume may indicate peers validating state during catch-up. Sourced from TrafficCount.h proof_path_request/proof_path_response categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 0, "y": 24 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_proof_path_request_Bytes_In", + "legendFormat": "Request Bytes In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_proof_path_request_Bytes_Out", + "legendFormat": "Request Bytes Out" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_proof_path_response_Bytes_In", + "legendFormat": "Response Bytes In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_proof_path_response_Bytes_Out", + "legendFormat": "Response Bytes Out" + } + ], + "fieldConfig": { + "defaults": { + "unit": "decbytes", + "custom": { + "axisLabel": "Bytes", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + }, + { + "title": "Replay Delta Traffic", + "description": "Replay delta request/response traffic for ledger replay protocol. Used during catch-up to efficiently replay ledger state changes. Sourced from TrafficCount.h replay_delta_request/replay_delta_response categories.", + "type": "timeseries", + "gridPos": { "h": 8, "w": 12, "x": 12, "y": 24 }, + "options": { + "tooltip": { "mode": "multi", "sort": "desc" } + }, + "targets": [ + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_replay_delta_request_Bytes_In", + "legendFormat": "Request Bytes In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_replay_delta_request_Bytes_Out", + "legendFormat": "Request Bytes Out" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_replay_delta_response_Bytes_In", + "legendFormat": "Response Bytes In" + }, + { + "datasource": { "type": "prometheus" }, + "expr": "rippled_replay_delta_response_Bytes_Out", + "legendFormat": "Response Bytes Out" + } + ], + "fieldConfig": { + "defaults": { + "unit": "decbytes", + "custom": { + "axisLabel": "Bytes", + "spanNulls": true, + "insertNulls": false, + "showPoints": "auto", + "pointSize": 3 + } + }, + "overrides": [] + } + } + ], + "schemaVersion": 39, + "tags": ["rippled", "statsd", "overlay", "network", "telemetry"], + "templating": { "list": [] }, + "time": { "from": "now-1h", "to": "now" }, + "title": "rippled Overlay Traffic Detail (StatsD)", + "uid": "rippled-statsd-overlay-detail" +}