diff --git a/book/api/metrics-generated.md b/book/api/metrics-generated.md
index c02bc40c97..4cb4cc2b8a 100644
--- a/book/api/metrics-generated.md
+++ b/book/api/metrics-generated.md
@@ -612,6 +612,62 @@
| gossip_message_tx_bytes
{gossip_message="prune"} | counter | (Prune) |
| gossip_message_tx_bytes
{gossip_message="ping"} | counter | (Ping) |
| gossip_message_tx_bytes
{gossip_message="pong"} | counter | (Pong) |
+| gossip_crds_rx_push_count
{crds_value="contact_info_v1"} | counter | (Contact Info V1) |
+| gossip_crds_rx_push_count
{crds_value="vote"} | counter | (Vote) |
+| gossip_crds_rx_push_count
{crds_value="lowest_slot"} | counter | (Lowest Slot) |
+| gossip_crds_rx_push_count
{crds_value="snapshot_hashes"} | counter | (Snapshot Hashes) |
+| gossip_crds_rx_push_count
{crds_value="accounts_hashes"} | counter | (Accounts Hashes) |
+| gossip_crds_rx_push_count
{crds_value="epoch_slots"} | counter | (Epoch Slots) |
+| gossip_crds_rx_push_count
{crds_value="version_v1"} | counter | (Version V1) |
+| gossip_crds_rx_push_count
{crds_value="version_v2"} | counter | (Version V2) |
+| gossip_crds_rx_push_count
{crds_value="node_instance"} | counter | (Node Instance) |
+| gossip_crds_rx_push_count
{crds_value="duplicate_shred"} | counter | (Duplicate Shred) |
+| gossip_crds_rx_push_count
{crds_value="incremental_snapshot_hashes"} | counter | (Incremental Snapshot Hashes) |
+| gossip_crds_rx_push_count
{crds_value="contact_info_v2"} | counter | (Contact Info V2) |
+| gossip_crds_rx_push_count
{crds_value="restart_last_voted_fork_slots"} | counter | (Restart Last Voted Fork Slots) |
+| gossip_crds_rx_push_count
{crds_value="restart_heaviest_fork"} | counter | (Restart Heaviest Fork) |
+| gossip_crds_rx_push_bytes
{crds_value="contact_info_v1"} | counter | (Contact Info V1) |
+| gossip_crds_rx_push_bytes
{crds_value="vote"} | counter | (Vote) |
+| gossip_crds_rx_push_bytes
{crds_value="lowest_slot"} | counter | (Lowest Slot) |
+| gossip_crds_rx_push_bytes
{crds_value="snapshot_hashes"} | counter | (Snapshot Hashes) |
+| gossip_crds_rx_push_bytes
{crds_value="accounts_hashes"} | counter | (Accounts Hashes) |
+| gossip_crds_rx_push_bytes
{crds_value="epoch_slots"} | counter | (Epoch Slots) |
+| gossip_crds_rx_push_bytes
{crds_value="version_v1"} | counter | (Version V1) |
+| gossip_crds_rx_push_bytes
{crds_value="version_v2"} | counter | (Version V2) |
+| gossip_crds_rx_push_bytes
{crds_value="node_instance"} | counter | (Node Instance) |
+| gossip_crds_rx_push_bytes
{crds_value="duplicate_shred"} | counter | (Duplicate Shred) |
+| gossip_crds_rx_push_bytes
{crds_value="incremental_snapshot_hashes"} | counter | (Incremental Snapshot Hashes) |
+| gossip_crds_rx_push_bytes
{crds_value="contact_info_v2"} | counter | (Contact Info V2) |
+| gossip_crds_rx_push_bytes
{crds_value="restart_last_voted_fork_slots"} | counter | (Restart Last Voted Fork Slots) |
+| gossip_crds_rx_push_bytes
{crds_value="restart_heaviest_fork"} | counter | (Restart Heaviest Fork) |
+| gossip_crds_rx_pull_response_count
{crds_value="contact_info_v1"} | counter | (Contact Info V1) |
+| gossip_crds_rx_pull_response_count
{crds_value="vote"} | counter | (Vote) |
+| gossip_crds_rx_pull_response_count
{crds_value="lowest_slot"} | counter | (Lowest Slot) |
+| gossip_crds_rx_pull_response_count
{crds_value="snapshot_hashes"} | counter | (Snapshot Hashes) |
+| gossip_crds_rx_pull_response_count
{crds_value="accounts_hashes"} | counter | (Accounts Hashes) |
+| gossip_crds_rx_pull_response_count
{crds_value="epoch_slots"} | counter | (Epoch Slots) |
+| gossip_crds_rx_pull_response_count
{crds_value="version_v1"} | counter | (Version V1) |
+| gossip_crds_rx_pull_response_count
{crds_value="version_v2"} | counter | (Version V2) |
+| gossip_crds_rx_pull_response_count
{crds_value="node_instance"} | counter | (Node Instance) |
+| gossip_crds_rx_pull_response_count
{crds_value="duplicate_shred"} | counter | (Duplicate Shred) |
+| gossip_crds_rx_pull_response_count
{crds_value="incremental_snapshot_hashes"} | counter | (Incremental Snapshot Hashes) |
+| gossip_crds_rx_pull_response_count
{crds_value="contact_info_v2"} | counter | (Contact Info V2) |
+| gossip_crds_rx_pull_response_count
{crds_value="restart_last_voted_fork_slots"} | counter | (Restart Last Voted Fork Slots) |
+| gossip_crds_rx_pull_response_count
{crds_value="restart_heaviest_fork"} | counter | (Restart Heaviest Fork) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="contact_info_v1"} | counter | (Contact Info V1) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="vote"} | counter | (Vote) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="lowest_slot"} | counter | (Lowest Slot) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="snapshot_hashes"} | counter | (Snapshot Hashes) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="accounts_hashes"} | counter | (Accounts Hashes) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="epoch_slots"} | counter | (Epoch Slots) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="version_v1"} | counter | (Version V1) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="version_v2"} | counter | (Version V2) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="node_instance"} | counter | (Node Instance) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="duplicate_shred"} | counter | (Duplicate Shred) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="incremental_snapshot_hashes"} | counter | (Incremental Snapshot Hashes) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="contact_info_v2"} | counter | (Contact Info V2) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="restart_last_voted_fork_slots"} | counter | (Restart Last Voted Fork Slots) |
+| gossip_crds_rx_pull_response_bytes
{crds_value="restart_heaviest_fork"} | counter | (Restart Heaviest Fork) |
| gossip_crds_tx_push_count
{crds_value="contact_info_v1"} | counter | (Contact Info V1) |
| gossip_crds_tx_push_count
{crds_value="vote"} | counter | (Vote) |
| gossip_crds_tx_push_count
{crds_value="lowest_slot"} | counter | (Lowest Slot) |
diff --git a/book/api/websocket.md b/book/api/websocket.md
index 38ec018be5..0884c050d5 100644
--- a/book/api/websocket.md
+++ b/book/api/websocket.md
@@ -1370,6 +1370,8 @@ which is specified below.
"expired_total": 1234,
"evicted_total": 0,
"count": [0, 10608, 95, ...],
+ "count_rx": [0, 10608, 95, ...],
+ "bytes_rx": [0, 9827342, 9723, ...],
"count_tx": [0, 10608, 95, ...],
"bytes_tx": [0, 9827342, 9723, ...],
},
@@ -1421,6 +1423,8 @@ which is specified below.
| expired_total | `number` | The cumulative number of Gossip Table entries that have expired and been removed |
| evicted_total | `number` | The cumulative number of Gossip Table entries that have been evicted due to insufficient space |
| count | `number[]` | `count[i]` is the number of currently active `table_entries[i]` entries currently in the Gossip Table |
+| count_rx | `number[]` | `count_rx[i]` is the number of successful and failed ingress `table_entries[i]` entries received until now |
+| bytes_rx | `number[]` | `bytes_rx[i]` is the number of successful and failed ingress `table_entries[i]` bytes received until now |
| count_tx | `number[]` | `count_tx[i]` is the number of egress `table_entries[i]` entries transmitted until now |
| bytes_tx | `number[]` | `bytes_tx[i]` is the number of egress `table_entries[i]` bytes transmitted until now |
diff --git a/src/disco/gui/fd_gui_peers.c b/src/disco/gui/fd_gui_peers.c
index 7c2d547556..7b0f8e2eb7 100644
--- a/src/disco/gui/fd_gui_peers.c
+++ b/src/disco/gui/fd_gui_peers.c
@@ -322,6 +322,92 @@ fd_gui_peers_gossip_stats_snap( fd_gui_peers_ctx_t * peers,
gossip_stats->storage_active_cnt[ FD_METRICS_ENUM_CRDS_VALUE_V_RESTART_LAST_VOTED_FORK_SLOTS_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( GAUGE, GOSSIP, CRDS_COUNT_RESTART_LAST_VOTED_FORK_SLOTS ) );
gossip_stats->storage_active_cnt[ FD_METRICS_ENUM_CRDS_VALUE_V_RESTART_HEAVIEST_FORK_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( GAUGE, GOSSIP, CRDS_COUNT_RESTART_HEAVIEST_FORK ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_CONTACT_INFO_V1_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_CONTACT_INFO_V1 ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_CONTACT_INFO_V1 ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_VOTE_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_VOTE ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_VOTE ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_LOWEST_SLOT_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_LOWEST_SLOT ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_LOWEST_SLOT ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_SNAPSHOT_HASHES_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_SNAPSHOT_HASHES ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_SNAPSHOT_HASHES ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_ACCOUNTS_HASHES_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_ACCOUNTS_HASHES ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_ACCOUNTS_HASHES ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_EPOCH_SLOTS_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_EPOCH_SLOTS ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_EPOCH_SLOTS ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_VERSION_V1_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_VERSION_V1 ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_VERSION_V1 ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_VERSION_V2_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_VERSION_V2 ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_VERSION_V2 ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_NODE_INSTANCE_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_NODE_INSTANCE ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_NODE_INSTANCE ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_DUPLICATE_SHRED_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_DUPLICATE_SHRED ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_DUPLICATE_SHRED ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_INCREMENTAL_SNAPSHOT_HASHES_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_INCREMENTAL_SNAPSHOT_HASHES ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_INCREMENTAL_SNAPSHOT_HASHES ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_CONTACT_INFO_V2_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_CONTACT_INFO_V2 ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_CONTACT_INFO_V2 ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_RESTART_LAST_VOTED_FORK_SLOTS_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_RESTART_LAST_VOTED_FORK_SLOTS ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_RESTART_LAST_VOTED_FORK_SLOTS ) );
+ gossip_stats->storage_cnt_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_RESTART_HEAVIEST_FORK_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_COUNT_RESTART_HEAVIEST_FORK ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT_RESTART_HEAVIEST_FORK ) );
+
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_CONTACT_INFO_V1_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_CONTACT_INFO_V1 ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_CONTACT_INFO_V1 ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_VOTE_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_VOTE ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_VOTE ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_LOWEST_SLOT_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_LOWEST_SLOT ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_LOWEST_SLOT ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_SNAPSHOT_HASHES_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_SNAPSHOT_HASHES ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_SNAPSHOT_HASHES ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_ACCOUNTS_HASHES_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_ACCOUNTS_HASHES ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_ACCOUNTS_HASHES ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_EPOCH_SLOTS_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_EPOCH_SLOTS ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_EPOCH_SLOTS ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_VERSION_V1_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_VERSION_V1 ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_VERSION_V1 ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_VERSION_V2_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_VERSION_V2 ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_VERSION_V2 ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_NODE_INSTANCE_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_NODE_INSTANCE ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_NODE_INSTANCE ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_DUPLICATE_SHRED_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_DUPLICATE_SHRED ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_DUPLICATE_SHRED ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_INCREMENTAL_SNAPSHOT_HASHES_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_INCREMENTAL_SNAPSHOT_HASHES ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_TX_PULL_RESPONSE_BYTES_INCREMENTAL_SNAPSHOT_HASHES ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_CONTACT_INFO_V2_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_CONTACT_INFO_V2 ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_TX_PULL_RESPONSE_BYTES_CONTACT_INFO_V2 ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_RESTART_LAST_VOTED_FORK_SLOTS_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_RESTART_LAST_VOTED_FORK_SLOTS ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_RESTART_LAST_VOTED_FORK_SLOTS ) );
+ gossip_stats->storage_bytes_rx[ FD_METRICS_ENUM_CRDS_VALUE_V_RESTART_HEAVIEST_FORK_IDX ] =
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PUSH_BYTES_RESTART_HEAVIEST_FORK ) )
+ + fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES_RESTART_HEAVIEST_FORK ) );
+
gossip_stats->storage_cnt_tx[ FD_METRICS_ENUM_CRDS_VALUE_V_CONTACT_INFO_V1_IDX ] =
fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_TX_PUSH_COUNT_CONTACT_INFO_V1 ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, CRDS_TX_PULL_RESPONSE_COUNT_CONTACT_INFO_V1 ) );
@@ -415,7 +501,7 @@ fd_gui_peers_gossip_stats_snap( fd_gui_peers_ctx_t * peers,
gossip_stats->messages_bytes_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PONG_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_BYTES_SUCCESS_PONG ) );
gossip_stats->messages_bytes_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PRUNE_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_BYTES_SUCCESS_PRUNE ) );
- gossip_stats->messages_count_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PULL_REQUEST_IDX ] =
+ gossip_stats->messages_cnt_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PULL_REQUEST_IDX ] =
fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_SUCCESS_PULL_REQUEST ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PULL_REQUEST_NOT_CONTACT_INFO ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PULL_REQUEST_LOOPBACK ) )
@@ -423,19 +509,19 @@ fd_gui_peers_gossip_stats_snap( fd_gui_peers_ctx_t * peers,
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PULL_REQUEST_WALLCLOCK ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PULL_REQUEST_SIGNATURE ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PULL_REQUEST_SHRED_VERSION ) );
- gossip_stats->messages_count_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PULL_RESPONSE_IDX ] =
+ gossip_stats->messages_cnt_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PULL_RESPONSE_IDX ] =
fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_SUCCESS_PULL_RESPONSE ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PULL_RESPONSE_NO_VALID_CRDS ) );
- gossip_stats->messages_count_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PUSH_IDX ] =
+ gossip_stats->messages_cnt_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PUSH_IDX ] =
fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_SUCCESS_PUSH ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PUSH_NO_VALID_CRDS ) );
- gossip_stats->messages_count_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PING_IDX ] =
+ gossip_stats->messages_cnt_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PING_IDX ] =
fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_SUCCESS_PING ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PING_SIGNATURE ) );
- gossip_stats->messages_count_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PONG_IDX ] =
+ gossip_stats->messages_cnt_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PONG_IDX ] =
fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_SUCCESS_PONG ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PONG_SIGNATURE ) );
- gossip_stats->messages_count_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PRUNE_IDX ] =
+ gossip_stats->messages_cnt_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PRUNE_IDX ] =
fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_SUCCESS_PRUNE ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PRUNE_DESTINATION ) )
+ fd_gui_metrics_sum_tiles_counter( peers->topo, "gossvf", gossvf_tile_cnt, MIDX( COUNTER, GOSSVF, MESSAGE_RX_COUNT_DROPPED_PRUNE_WALLCLOCK ) )
@@ -448,12 +534,12 @@ fd_gui_peers_gossip_stats_snap( fd_gui_peers_ctx_t * peers,
gossip_stats->messages_bytes_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PONG_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_BYTES_PONG ) );
gossip_stats->messages_bytes_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PRUNE_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_BYTES_PRUNE ) );
- gossip_stats->messages_count_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PULL_REQUEST_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PULL_REQUEST ) );
- gossip_stats->messages_count_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PULL_RESPONSE_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PULL_RESPONSE ) );
- gossip_stats->messages_count_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PUSH_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PUSH ) );
- gossip_stats->messages_count_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PING_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PING ) );
- gossip_stats->messages_count_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PONG_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PONG ) );
- gossip_stats->messages_count_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PRUNE_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PRUNE ) );
+ gossip_stats->messages_cnt_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PULL_REQUEST_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PULL_REQUEST ) );
+ gossip_stats->messages_cnt_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PULL_RESPONSE_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PULL_RESPONSE ) );
+ gossip_stats->messages_cnt_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PUSH_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PUSH ) );
+ gossip_stats->messages_cnt_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PING_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PING ) );
+ gossip_stats->messages_cnt_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PONG_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PONG ) );
+ gossip_stats->messages_cnt_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_V_PRUNE_IDX ] = fd_gui_metrics_sum_tiles_counter( peers->topo, "gossip", gossip_tile_cnt, MIDX( COUNTER, GOSSIP, MESSAGE_TX_COUNT_PRUNE ) );
}
static int
diff --git a/src/disco/gui/fd_gui_peers.h b/src/disco/gui/fd_gui_peers.h
index 5f1d6f5325..60451d4bc5 100644
--- a/src/disco/gui/fd_gui_peers.h
+++ b/src/disco/gui/fd_gui_peers.h
@@ -215,6 +215,8 @@ struct fd_gui_peers_gossip_stats {
ulong storage_expired_cnt;
ulong storage_evicted_cnt;
ulong storage_active_cnt[ FD_METRICS_ENUM_CRDS_VALUE_CNT ];
+ ulong storage_cnt_rx [ FD_METRICS_ENUM_CRDS_VALUE_CNT ];
+ ulong storage_bytes_rx [ FD_METRICS_ENUM_CRDS_VALUE_CNT ];
ulong storage_cnt_tx [ FD_METRICS_ENUM_CRDS_VALUE_CNT ];
ulong storage_bytes_tx [ FD_METRICS_ENUM_CRDS_VALUE_CNT ];
ulong messages_push_rx_cnt;
@@ -222,9 +224,9 @@ struct fd_gui_peers_gossip_stats {
ulong messages_pull_response_rx_cnt;
ulong messages_pull_response_tx_cnt;
ulong messages_bytes_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_CNT ];
- ulong messages_count_rx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_CNT ];
+ ulong messages_cnt_rx [ FD_METRICS_ENUM_GOSSIP_MESSAGE_CNT ];
ulong messages_bytes_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_CNT ];
- ulong messages_count_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_CNT ];
+ ulong messages_cnt_tx [ FD_METRICS_ENUM_GOSSIP_MESSAGE_CNT ];
};
typedef struct fd_gui_peers_gossip_stats fd_gui_peers_gossip_stats_t;
diff --git a/src/disco/gui/fd_gui_printf.c b/src/disco/gui/fd_gui_printf.c
index 79c33383e0..1609d39790 100644
--- a/src/disco/gui/fd_gui_printf.c
+++ b/src/disco/gui/fd_gui_printf.c
@@ -2344,6 +2344,12 @@ fd_gui_peers_printf_gossip_stats( fd_gui_peers_ctx_t * peers ) {
jsonp_open_array( peers->http, "count" );
for( ulong i = 0UL; ihttp, NULL, cur->storage_active_cnt[ i ] );
jsonp_close_array( peers->http );
+ jsonp_open_array( peers->http, "count_rx" );
+ for( ulong i = 0UL; ihttp, NULL, cur->storage_cnt_rx[ i ] );
+ jsonp_close_array( peers->http );
+ jsonp_open_array( peers->http, "bytes_rx" );
+ for( ulong i = 0UL; ihttp, NULL, cur->storage_bytes_rx[ i ] );
+ jsonp_close_array( peers->http );
jsonp_open_array( peers->http, "count_tx" );
for( ulong i = 0UL; ihttp, NULL, cur->storage_cnt_tx[ i ] );
jsonp_close_array( peers->http );
@@ -2359,10 +2365,10 @@ fd_gui_peers_printf_gossip_stats( fd_gui_peers_ctx_t * peers ) {
for( ulong i = 0UL; ihttp, NULL, cur->messages_bytes_tx[ i ] );
jsonp_close_array( peers->http );
jsonp_open_array( peers->http, "num_messages_rx" );
- for( ulong i = 0UL; ihttp, NULL, cur->messages_count_rx[ i ] );
+ for( ulong i = 0UL; ihttp, NULL, cur->messages_cnt_rx[ i ] );
jsonp_close_array( peers->http );
jsonp_open_array( peers->http, "num_messages_tx" );
- for( ulong i = 0UL; ihttp, NULL, cur->messages_count_tx[ i ] );
+ for( ulong i = 0UL; ihttp, NULL, cur->messages_cnt_tx[ i ] );
jsonp_close_array( peers->http );
jsonp_close_object( peers->http );
jsonp_close_object( peers->http );
diff --git a/src/disco/metrics/generated/fd_metrics_gossip.c b/src/disco/metrics/generated/fd_metrics_gossip.c
index a0f3089dfd..30d096a47b 100644
--- a/src/disco/metrics/generated/fd_metrics_gossip.c
+++ b/src/disco/metrics/generated/fd_metrics_gossip.c
@@ -64,6 +64,62 @@ const fd_metrics_meta_t FD_METRICS_GOSSIP[FD_METRICS_GOSSIP_TOTAL] = {
DECLARE_METRIC_ENUM( GOSSIP_MESSAGE_TX_BYTES, COUNTER, GOSSIP_MESSAGE, PRUNE ),
DECLARE_METRIC_ENUM( GOSSIP_MESSAGE_TX_BYTES, COUNTER, GOSSIP_MESSAGE, PING ),
DECLARE_METRIC_ENUM( GOSSIP_MESSAGE_TX_BYTES, COUNTER, GOSSIP_MESSAGE, PONG ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, CONTACT_INFO_V1 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, VOTE ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, LOWEST_SLOT ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, SNAPSHOT_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, ACCOUNTS_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, EPOCH_SLOTS ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, VERSION_V1 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, VERSION_V2 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, NODE_INSTANCE ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, DUPLICATE_SHRED ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, INCREMENTAL_SNAPSHOT_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, CONTACT_INFO_V2 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, RESTART_LAST_VOTED_FORK_SLOTS ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_COUNT, COUNTER, CRDS_VALUE, RESTART_HEAVIEST_FORK ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, CONTACT_INFO_V1 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, VOTE ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, LOWEST_SLOT ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, SNAPSHOT_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, ACCOUNTS_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, EPOCH_SLOTS ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, VERSION_V1 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, VERSION_V2 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, NODE_INSTANCE ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, DUPLICATE_SHRED ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, INCREMENTAL_SNAPSHOT_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, CONTACT_INFO_V2 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, RESTART_LAST_VOTED_FORK_SLOTS ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PUSH_BYTES, COUNTER, CRDS_VALUE, RESTART_HEAVIEST_FORK ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, CONTACT_INFO_V1 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, VOTE ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, LOWEST_SLOT ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, SNAPSHOT_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, ACCOUNTS_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, EPOCH_SLOTS ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, VERSION_V1 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, VERSION_V2 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, NODE_INSTANCE ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, DUPLICATE_SHRED ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, INCREMENTAL_SNAPSHOT_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, CONTACT_INFO_V2 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, RESTART_LAST_VOTED_FORK_SLOTS ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT, COUNTER, CRDS_VALUE, RESTART_HEAVIEST_FORK ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, CONTACT_INFO_V1 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, VOTE ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, LOWEST_SLOT ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, SNAPSHOT_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, ACCOUNTS_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, EPOCH_SLOTS ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, VERSION_V1 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, VERSION_V2 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, NODE_INSTANCE ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, DUPLICATE_SHRED ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, INCREMENTAL_SNAPSHOT_HASHES ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, CONTACT_INFO_V2 ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, RESTART_LAST_VOTED_FORK_SLOTS ),
+ DECLARE_METRIC_ENUM( GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES, COUNTER, CRDS_VALUE, RESTART_HEAVIEST_FORK ),
DECLARE_METRIC_ENUM( GOSSIP_CRDS_TX_PUSH_COUNT, COUNTER, CRDS_VALUE, CONTACT_INFO_V1 ),
DECLARE_METRIC_ENUM( GOSSIP_CRDS_TX_PUSH_COUNT, COUNTER, CRDS_VALUE, VOTE ),
DECLARE_METRIC_ENUM( GOSSIP_CRDS_TX_PUSH_COUNT, COUNTER, CRDS_VALUE, LOWEST_SLOT ),
diff --git a/src/disco/metrics/generated/fd_metrics_gossip.h b/src/disco/metrics/generated/fd_metrics_gossip.h
index 90c797521b..3437b47d11 100644
--- a/src/disco/metrics/generated/fd_metrics_gossip.h
+++ b/src/disco/metrics/generated/fd_metrics_gossip.h
@@ -211,95 +211,183 @@
#define FD_METRICS_COUNTER_GOSSIP_MESSAGE_TX_BYTES_PING_OFF (76UL)
#define FD_METRICS_COUNTER_GOSSIP_MESSAGE_TX_BYTES_PONG_OFF (77UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_OFF (78UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_OFF (78UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_NAME "gossip_crds_rx_push_count"
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_TYPE (FD_METRICS_TYPE_COUNTER)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_DESC ""
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_CVT (FD_METRICS_CONVERTER_NONE)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_CNT (14UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_CONTACT_INFO_V1_OFF (78UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_VOTE_OFF (79UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_LOWEST_SLOT_OFF (80UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_SNAPSHOT_HASHES_OFF (81UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_ACCOUNTS_HASHES_OFF (82UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_EPOCH_SLOTS_OFF (83UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_VERSION_V1_OFF (84UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_VERSION_V2_OFF (85UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_NODE_INSTANCE_OFF (86UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_DUPLICATE_SHRED_OFF (87UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_INCREMENTAL_SNAPSHOT_HASHES_OFF (88UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_CONTACT_INFO_V2_OFF (89UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_RESTART_LAST_VOTED_FORK_SLOTS_OFF (90UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_COUNT_RESTART_HEAVIEST_FORK_OFF (91UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_OFF (92UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_NAME "gossip_crds_rx_push_bytes"
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_TYPE (FD_METRICS_TYPE_COUNTER)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_DESC ""
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_CVT (FD_METRICS_CONVERTER_NONE)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_CNT (14UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_CONTACT_INFO_V1_OFF (92UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_VOTE_OFF (93UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_LOWEST_SLOT_OFF (94UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_SNAPSHOT_HASHES_OFF (95UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_ACCOUNTS_HASHES_OFF (96UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_EPOCH_SLOTS_OFF (97UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_VERSION_V1_OFF (98UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_VERSION_V2_OFF (99UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_NODE_INSTANCE_OFF (100UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_DUPLICATE_SHRED_OFF (101UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_INCREMENTAL_SNAPSHOT_HASHES_OFF (102UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_CONTACT_INFO_V2_OFF (103UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_RESTART_LAST_VOTED_FORK_SLOTS_OFF (104UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PUSH_BYTES_RESTART_HEAVIEST_FORK_OFF (105UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_OFF (106UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_NAME "gossip_crds_rx_pull_response_count"
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_TYPE (FD_METRICS_TYPE_COUNTER)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_DESC ""
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_CVT (FD_METRICS_CONVERTER_NONE)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_CNT (14UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_CONTACT_INFO_V1_OFF (106UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_VOTE_OFF (107UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_LOWEST_SLOT_OFF (108UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_SNAPSHOT_HASHES_OFF (109UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_ACCOUNTS_HASHES_OFF (110UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_EPOCH_SLOTS_OFF (111UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_VERSION_V1_OFF (112UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_VERSION_V2_OFF (113UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_NODE_INSTANCE_OFF (114UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_DUPLICATE_SHRED_OFF (115UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_INCREMENTAL_SNAPSHOT_HASHES_OFF (116UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_CONTACT_INFO_V2_OFF (117UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_RESTART_LAST_VOTED_FORK_SLOTS_OFF (118UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_COUNT_RESTART_HEAVIEST_FORK_OFF (119UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_OFF (120UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_NAME "gossip_crds_rx_pull_response_bytes"
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_TYPE (FD_METRICS_TYPE_COUNTER)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_DESC ""
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_CVT (FD_METRICS_CONVERTER_NONE)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_CNT (14UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_CONTACT_INFO_V1_OFF (120UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_VOTE_OFF (121UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_LOWEST_SLOT_OFF (122UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_SNAPSHOT_HASHES_OFF (123UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_ACCOUNTS_HASHES_OFF (124UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_EPOCH_SLOTS_OFF (125UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_VERSION_V1_OFF (126UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_VERSION_V2_OFF (127UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_NODE_INSTANCE_OFF (128UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_DUPLICATE_SHRED_OFF (129UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_INCREMENTAL_SNAPSHOT_HASHES_OFF (130UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_CONTACT_INFO_V2_OFF (131UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_RESTART_LAST_VOTED_FORK_SLOTS_OFF (132UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_RX_PULL_RESPONSE_BYTES_RESTART_HEAVIEST_FORK_OFF (133UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_OFF (134UL)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_NAME "gossip_crds_tx_push_count"
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_TYPE (FD_METRICS_TYPE_COUNTER)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_DESC ""
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_CVT (FD_METRICS_CONVERTER_NONE)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_CNT (14UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_CONTACT_INFO_V1_OFF (78UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_VOTE_OFF (79UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_LOWEST_SLOT_OFF (80UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_SNAPSHOT_HASHES_OFF (81UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_ACCOUNTS_HASHES_OFF (82UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_EPOCH_SLOTS_OFF (83UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_VERSION_V1_OFF (84UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_VERSION_V2_OFF (85UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_NODE_INSTANCE_OFF (86UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_DUPLICATE_SHRED_OFF (87UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_INCREMENTAL_SNAPSHOT_HASHES_OFF (88UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_CONTACT_INFO_V2_OFF (89UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_RESTART_LAST_VOTED_FORK_SLOTS_OFF (90UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_RESTART_HEAVIEST_FORK_OFF (91UL)
-
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_OFF (92UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_CONTACT_INFO_V1_OFF (134UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_VOTE_OFF (135UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_LOWEST_SLOT_OFF (136UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_SNAPSHOT_HASHES_OFF (137UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_ACCOUNTS_HASHES_OFF (138UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_EPOCH_SLOTS_OFF (139UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_VERSION_V1_OFF (140UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_VERSION_V2_OFF (141UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_NODE_INSTANCE_OFF (142UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_DUPLICATE_SHRED_OFF (143UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_INCREMENTAL_SNAPSHOT_HASHES_OFF (144UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_CONTACT_INFO_V2_OFF (145UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_RESTART_LAST_VOTED_FORK_SLOTS_OFF (146UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_COUNT_RESTART_HEAVIEST_FORK_OFF (147UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_OFF (148UL)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_NAME "gossip_crds_tx_push_bytes"
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_TYPE (FD_METRICS_TYPE_COUNTER)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_DESC ""
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_CVT (FD_METRICS_CONVERTER_NONE)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_CNT (14UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_CONTACT_INFO_V1_OFF (92UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_VOTE_OFF (93UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_LOWEST_SLOT_OFF (94UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_SNAPSHOT_HASHES_OFF (95UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_ACCOUNTS_HASHES_OFF (96UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_EPOCH_SLOTS_OFF (97UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_VERSION_V1_OFF (98UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_VERSION_V2_OFF (99UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_NODE_INSTANCE_OFF (100UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_DUPLICATE_SHRED_OFF (101UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_INCREMENTAL_SNAPSHOT_HASHES_OFF (102UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_CONTACT_INFO_V2_OFF (103UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_RESTART_LAST_VOTED_FORK_SLOTS_OFF (104UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_RESTART_HEAVIEST_FORK_OFF (105UL)
-
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_OFF (106UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_CONTACT_INFO_V1_OFF (148UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_VOTE_OFF (149UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_LOWEST_SLOT_OFF (150UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_SNAPSHOT_HASHES_OFF (151UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_ACCOUNTS_HASHES_OFF (152UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_EPOCH_SLOTS_OFF (153UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_VERSION_V1_OFF (154UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_VERSION_V2_OFF (155UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_NODE_INSTANCE_OFF (156UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_DUPLICATE_SHRED_OFF (157UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_INCREMENTAL_SNAPSHOT_HASHES_OFF (158UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_CONTACT_INFO_V2_OFF (159UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_RESTART_LAST_VOTED_FORK_SLOTS_OFF (160UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PUSH_BYTES_RESTART_HEAVIEST_FORK_OFF (161UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_OFF (162UL)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_NAME "gossip_crds_tx_pull_response_count"
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_TYPE (FD_METRICS_TYPE_COUNTER)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_DESC ""
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_CVT (FD_METRICS_CONVERTER_NONE)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_CNT (14UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_CONTACT_INFO_V1_OFF (106UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_VOTE_OFF (107UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_LOWEST_SLOT_OFF (108UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_SNAPSHOT_HASHES_OFF (109UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_ACCOUNTS_HASHES_OFF (110UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_EPOCH_SLOTS_OFF (111UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_VERSION_V1_OFF (112UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_VERSION_V2_OFF (113UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_NODE_INSTANCE_OFF (114UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_DUPLICATE_SHRED_OFF (115UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_INCREMENTAL_SNAPSHOT_HASHES_OFF (116UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_CONTACT_INFO_V2_OFF (117UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_RESTART_LAST_VOTED_FORK_SLOTS_OFF (118UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_RESTART_HEAVIEST_FORK_OFF (119UL)
-
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_OFF (120UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_CONTACT_INFO_V1_OFF (162UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_VOTE_OFF (163UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_LOWEST_SLOT_OFF (164UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_SNAPSHOT_HASHES_OFF (165UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_ACCOUNTS_HASHES_OFF (166UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_EPOCH_SLOTS_OFF (167UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_VERSION_V1_OFF (168UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_VERSION_V2_OFF (169UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_NODE_INSTANCE_OFF (170UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_DUPLICATE_SHRED_OFF (171UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_INCREMENTAL_SNAPSHOT_HASHES_OFF (172UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_CONTACT_INFO_V2_OFF (173UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_RESTART_LAST_VOTED_FORK_SLOTS_OFF (174UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_COUNT_RESTART_HEAVIEST_FORK_OFF (175UL)
+
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_OFF (176UL)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_NAME "gossip_crds_tx_pull_response_bytes"
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_TYPE (FD_METRICS_TYPE_COUNTER)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_DESC ""
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_CVT (FD_METRICS_CONVERTER_NONE)
#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_CNT (14UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_CONTACT_INFO_V1_OFF (120UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_VOTE_OFF (121UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_LOWEST_SLOT_OFF (122UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_SNAPSHOT_HASHES_OFF (123UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_ACCOUNTS_HASHES_OFF (124UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_EPOCH_SLOTS_OFF (125UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_VERSION_V1_OFF (126UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_VERSION_V2_OFF (127UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_NODE_INSTANCE_OFF (128UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_DUPLICATE_SHRED_OFF (129UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_INCREMENTAL_SNAPSHOT_HASHES_OFF (130UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_CONTACT_INFO_V2_OFF (131UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_RESTART_LAST_VOTED_FORK_SLOTS_OFF (132UL)
-#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_RESTART_HEAVIEST_FORK_OFF (133UL)
-
-#define FD_METRICS_GOSSIP_TOTAL (118UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_CONTACT_INFO_V1_OFF (176UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_VOTE_OFF (177UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_LOWEST_SLOT_OFF (178UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_SNAPSHOT_HASHES_OFF (179UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_ACCOUNTS_HASHES_OFF (180UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_EPOCH_SLOTS_OFF (181UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_VERSION_V1_OFF (182UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_VERSION_V2_OFF (183UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_NODE_INSTANCE_OFF (184UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_DUPLICATE_SHRED_OFF (185UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_INCREMENTAL_SNAPSHOT_HASHES_OFF (186UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_CONTACT_INFO_V2_OFF (187UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_RESTART_LAST_VOTED_FORK_SLOTS_OFF (188UL)
+#define FD_METRICS_COUNTER_GOSSIP_CRDS_TX_PULL_RESPONSE_BYTES_RESTART_HEAVIEST_FORK_OFF (189UL)
+
+#define FD_METRICS_GOSSIP_TOTAL (174UL)
extern const fd_metrics_meta_t FD_METRICS_GOSSIP[FD_METRICS_GOSSIP_TOTAL];
#endif /* HEADER_fd_src_disco_metrics_generated_fd_metrics_gossip_h */
diff --git a/src/disco/metrics/metrics.xml b/src/disco/metrics/metrics.xml
index 7eac549fa2..af72725a8a 100644
--- a/src/disco/metrics/metrics.xml
+++ b/src/disco/metrics/metrics.xml
@@ -929,6 +929,11 @@ metric introduced.
+
+
+
+
+
@@ -1141,6 +1146,7 @@ metric introduced.
+
diff --git a/src/discof/gossip/fd_gossip_tile.c b/src/discof/gossip/fd_gossip_tile.c
index abdf0173dc..9193f7a5bc 100644
--- a/src/discof/gossip/fd_gossip_tile.c
+++ b/src/discof/gossip/fd_gossip_tile.c
@@ -160,7 +160,11 @@ metrics_write( fd_gossip_tile_ctx_t * ctx ) {
FD_MCNT_ENUM_COPY( GOSSIP, CRDS_TX_PULL_RESPONSE_COUNT, metrics->crds_tx_pull_response );
FD_MCNT_ENUM_COPY( GOSSIP, CRDS_TX_PULL_RESPONSE_BYTES, metrics->crds_tx_pull_response_bytes );
- FD_MCNT_ENUM_COPY( GOSSIP, CRDS_RX_COUNT, metrics->crds_rx_count );
+ FD_MCNT_ENUM_COPY( GOSSIP, CRDS_RX_COUNT, metrics->crds_rx_count );
+ FD_MCNT_ENUM_COPY( GOSSIP, CRDS_RX_PUSH_COUNT, metrics->crds_rx_push_count );
+ FD_MCNT_ENUM_COPY( GOSSIP, CRDS_RX_PUSH_BYTES, metrics->crds_rx_push_bytes );
+ FD_MCNT_ENUM_COPY( GOSSIP, CRDS_RX_PULL_RESPONSE_COUNT, metrics->crds_rx_pull_response_count );
+ FD_MCNT_ENUM_COPY( GOSSIP, CRDS_RX_PULL_RESPONSE_BYTES, metrics->crds_rx_pull_response_bytes );
FD_MCNT_SET( GOSSIP, CONTACT_INFO_UNRECOGNIZED_SOCKET_TAGS, metrics->ci_rx_unrecognized_socket_tag_cnt );
FD_MCNT_SET( GOSSIP, CONTACT_INFO_IPV6, metrics->ci_rx_ipv6_address_cnt );
diff --git a/src/flamenco/gossip/fd_gossip.c b/src/flamenco/gossip/fd_gossip.c
index 859d5e6ddc..ccffe20283 100644
--- a/src/flamenco/gossip/fd_gossip.c
+++ b/src/flamenco/gossip/fd_gossip.c
@@ -492,6 +492,10 @@ rx_pull_response( fd_gossip_t * gossip,
for( ulong i=0UL; icrds_values_len; i++ ) {
fd_gossip_view_crds_value_t const * value = &pull_response->crds_values[ i ];
+ FD_TEST( value->tagmetrics->crds_rx_pull_response_count[ value->tag ]++;
+ gossip->metrics->crds_rx_pull_response_bytes[ value->tag ] += value->length;
+
int checks_res = fd_crds_checks_fast( gossip->crds, value, payload, 0 /* from_push_msg m*/ );
if( FD_UNLIKELY( !!checks_res ) ) {
checks_res < 0 ? gossip->metrics->crds_rx_count[ FD_METRICS_ENUM_GOSSIP_CRDS_OUTCOME_V_DROPPED_PULL_RESPONSE_STALE_IDX ]++
@@ -553,6 +557,10 @@ process_push_crds( fd_gossip_t * gossip,
fd_stem_context_t * stem ) {
/* overrides_fast here, either count duplicates or purge if older (how!?) */
+ FD_TEST( value->tagmetrics->crds_rx_push_count[ value->tag ]++;
+ gossip->metrics->crds_rx_push_bytes[ value->tag ] += value->length;
+
/* return values in both fd_crds_checks_fast and fd_crds_inserted need
to be propagated since they both work the same (error>0 holds duplicate
count). This is quite fragile. */
diff --git a/src/flamenco/gossip/fd_gossip.h b/src/flamenco/gossip/fd_gossip.h
index aacec2247c..0d5f6be124 100644
--- a/src/flamenco/gossip/fd_gossip.h
+++ b/src/flamenco/gossip/fd_gossip.h
@@ -73,6 +73,10 @@ typedef void (*fd_gossip_sign_fn)( void * ctx,
struct fd_gossip_metrics {
ulong crds_rx_count[ FD_METRICS_ENUM_GOSSIP_CRDS_OUTCOME_CNT ];
+ ulong crds_rx_push_count[ FD_METRICS_ENUM_CRDS_VALUE_CNT ];
+ ulong crds_rx_push_bytes[ FD_METRICS_ENUM_CRDS_VALUE_CNT ];
+ ulong crds_rx_pull_response_count[ FD_METRICS_ENUM_CRDS_VALUE_CNT ];
+ ulong crds_rx_pull_response_bytes[ FD_METRICS_ENUM_CRDS_VALUE_CNT ];
ulong message_tx[ FD_METRICS_ENUM_GOSSIP_MESSAGE_CNT ];
ulong message_tx_bytes[ FD_METRICS_ENUM_GOSSIP_MESSAGE_CNT ];