Skip to content

Metrics

Overview

Firedancer maintains many internal performance counters for use by developers and monitoring tools, and exposes them via. a Prometheus HTTP endpoint:

toml
[tiles.metric]
    prometheus_listen_port = 7999
sh
$ curl http://localhost:7999/metrics
# HELP tile_pid The process ID of the tile.
# TYPE tile_pid gauge
tile_pid{kind="net",kind_id="0"} 1527373
tile_pid{kind="quic",kind_id="0"} 1527370
tile_pid{kind="quic",kind_id="1"} 1527371
tile_pid{kind="verify",kind_id="0"} 1527369
tile_pid{kind="verify",kind_id="1"} 1527374
tile_pid{kind="dedup",kind_id="0"} 1527365
...

WARNING

Metrics are currently only provided for developer and diagnostic use, and the endpoint or data provided may break or change in incompatible ways at any time.

There are three metric types reported by Firedancer, following the Prometheus data model:

  • counter — A cumulative metric representing a monotonically increasing counter.
  • gauge — A single numerical value that can go arbitrarily up or down.
  • histogram — Samples observations like packet sizes and counts them in buckets.

There are some metrics reported for links, which are data queues between tiles. Links are single-producer multi-consumer, so the same link (identified by a link_kind and link_kind_id) will potentially have multiple consumers reporting the metric, one per consumer (identified by a kind and kind_id).

sh
# HELP link_published_size_bytes The total number of bytes read by the link consumer.
# TYPE link_published_size_bytes counter
link_published_size_bytes{kind="net",kind_id="0",link_kind="quic_net",link_kind_id="0"} 0
link_published_size_bytes{kind="net",kind_id="0",link_kind="shred_net",link_kind_id="0"} 0

These link related metrics have four labels, which are to identify the link the metric is for:

  • kind — The name of the tile consuming from the link.
  • kind_id — The tile index of the tile which is consuming from the link.
  • link_kind — The name of the link being consumed.
  • link_kind_id — The link index of the link which is being consumed.
MetricTypeDescription
link_​slow_​countcounterThe number of times the consumer was detected as rate limiting consumer by the producer.
link_​consumed_​countcounterThe number of times the link reader has consumed a fragment.
link_​consumed_​size_​bytescounterThe total number of bytes read by the link consumer.
link_​filtered_​countcounterThe number of fragments that were filtered and not consumed.
link_​filtered_​size_​bytescounterThe total number of bytes read by the link consumer that were filtered.
link_​overrun_​polling_​countcounterThe number of times the link has been overrun while polling.
link_​overrun_​polling_​frag_​countcounterThe number of fragments the link has not processed because it was overrun while polling.
link_​overrun_​reading_​countcounterThe number of input overruns detected while reading metadata by the consumer.
link_​overrun_​reading_​frag_​countcounterThe number of fragments the link has not processed because it was overrun while reading.

All Tiles

Most performance counters are local to a tile and are not aggregated. For example if you have two QUIC tiles (two CPU cores assigned to serving incoming QUIC connections) each QUIC counter will appear twice:

sh
# HELP quic_connections_created The total number of connections that have been created.
# TYPE quic_connections_created counter
quic_connections_created{kind="quic",kind_id="0"} 42145
quic_connections_created{kind="quic",kind_id="1"} 38268

# HELP quic_connections_aborted Number of connections aborted.
# TYPE quic_connections_aborted counter
quic_connections_aborted{kind="quic",kind_id="0"} 14
quic_connections_aborted{kind="quic",kind_id="1"} 23

All tile related metrics have just two labels, and these are to identify which tile (and which tile index, for tiles of the same kind) the metric is for:

  • kind — The tile name the metric is being reported for.
  • kind_id — The tile index of the tile which is reporting the metric.
MetricTypeDescription
tile_​pidgaugeThe process ID of the tile.
tile_​tidgaugeThe thread ID of the tile. Always the same as the Pid in production, but might be different in development.
tile_​context_​switch_​involuntary_​countcounterThe number of involuntary context switches.
tile_​context_​switch_​voluntary_​countcounterThe number of voluntary context switches.
tile_​statusgaugeThe current status of the tile. 0 is booting, 1 is running. 2 is shutdown
tile_​heartbeatgaugeThe last UNIX timestamp in nanoseconds that the tile heartbeated.
tile_​in_​backpressuregaugeWhether the tile is currently backpressured or not, either 1 or 0.
tile_​backpressure_​countcounterNumber of times the tile has had to wait for one of more consumers to catch up to resume publishing.
tile_​regime_​duration_​nanos
{tile_​regime="caught_​up_​housekeeping"}
counterMutually exclusive and exhaustive duration of time the tile spent in each of the regimes. (Caught up + Housekeeping)
tile_​regime_​duration_​nanos
{tile_​regime="processing_​housekeeping"}
counterMutually exclusive and exhaustive duration of time the tile spent in each of the regimes. (Processing + Housekeeping)
tile_​regime_​duration_​nanos
{tile_​regime="backpressure_​housekeeping"}
counterMutually exclusive and exhaustive duration of time the tile spent in each of the regimes. (Backpressure + Housekeeping)
tile_​regime_​duration_​nanos
{tile_​regime="caught_​up_​prefrag"}
counterMutually exclusive and exhaustive duration of time the tile spent in each of the regimes. (Caught up + Prefrag)
tile_​regime_​duration_​nanos
{tile_​regime="processing_​prefrag"}
counterMutually exclusive and exhaustive duration of time the tile spent in each of the regimes. (Processing + Prefrag)
tile_​regime_​duration_​nanos
{tile_​regime="backpressure_​prefrag"}
counterMutually exclusive and exhaustive duration of time the tile spent in each of the regimes. (Backpressure + Prefrag)
tile_​regime_​duration_​nanos
{tile_​regime="caught_​up_​postfrag"}
counterMutually exclusive and exhaustive duration of time the tile spent in each of the regimes. (Caught up + Postfrag)
tile_​regime_​duration_​nanos
{tile_​regime="processing_​postfrag"}
counterMutually exclusive and exhaustive duration of time the tile spent in each of the regimes. (Processing + Postfrag)

Net Tile

MetricTypeDescription
net_​rx_​pkt_​cntcounterPacket receive count.
net_​rx_​bytes_​totalcounterTotal number of bytes received (including Ethernet header).
net_​rx_​undersz_​cntcounterNumber of incoming packets dropped due to being too small.
net_​rx_​fill_​blocked_​cntcounterNumber of incoming packets dropped due to fill ring being full.
net_​rx_​backpressure_​cntcounterNumber of incoming packets dropped due to backpressure.
net_​rx_​busy_​cntgaugeNumber of receive buffers currently busy.
net_​rx_​idle_​cntgaugeNumber of receive buffers currently idle.
net_​tx_​submit_​cntcounterNumber of packet transmit jobs submitted.
net_​tx_​complete_​cntcounterNumber of packet transmit jobs marked as completed by the kernel.
net_​tx_​bytes_​totalcounterTotal number of bytes transmitted (including Ethernet header).
net_​tx_​route_​fail_​cntcounterNumber of packet transmit jobs dropped due to route failure.
net_​tx_​neighbor_​fail_​cntcounterNumber of packet transmit jobs dropped due to unresolved neighbor.
net_​tx_​full_​fail_​cntcounterNumber of packet transmit jobs dropped due to XDP TX ring full or missing completions.
net_​tx_​busy_​cntgaugeNumber of transmit buffers currently busy.
net_​tx_​idle_​cntgaugeNumber of transmit buffers currently idle.
net_​xsk_​tx_​wakeup_​cntcounterNumber of XSK sendto syscalls dispatched.
net_​xsk_​rx_​wakeup_​cntcounterNumber of XSK recvmsg syscalls dispatched.
net_​xdp_​rx_​dropped_​othercounterxdp_statistics_v0.rx_dropped: Dropped for other reasons
net_​xdp_​rx_​invalid_​descscounterxdp_statistics_v0.rx_invalid_descs: Dropped due to invalid descriptor
net_​xdp_​tx_​invalid_​descscounterxdp_statistics_v0.tx_invalid_descs: Dropped due to invalid descriptor
net_​xdp_​rx_​ring_​fullcounterxdp_statistics_v1.rx_ring_full: Dropped due to rx ring being full
net_​xdp_​rx_​fill_​ring_​empty_​descscounterxdp_statistics_v1.rx_fill_ring_empty_descs: Failed to retrieve item from fill ring
net_​xdp_​tx_​ring_​empty_​descscounterxdp_statistics_v1.tx_ring_empty_descs: Failed to retrieve item from tx ring
net_​rx_​gre_​cntcounterNumber of valid GRE packets received
net_​rx_​gre_​invalid_​cntcounterNumber of invalid GRE packets received
net_​rx_​gre_​ignored_​cntcounterNumber of received but ignored GRE packets
net_​tx_​gre_​cntcounterNumber of GRE packet transmit jobs submitted
net_​tx_​gre_​route_​fail_​cntcounterNumber of GRE packets transmit jobs dropped due to route failure

Quic Tile

MetricTypeDescription
quic_​txns_​overruncounterCount of txns overrun before reassembled (too small txn_reassembly_count).
quic_​txn_​reasms_​startedcounterCount of fragmented txn receive ops started.
quic_​txn_​reasms_​activegaugeNumber of fragmented txn receive ops currently active.
quic_​frags_​okcounterCount of txn frags received
quic_​frags_​gapcounterCount of txn frags dropped due to data gap
quic_​frags_​dupcounterCount of txn frags dropped due to dup (stream already completed)
quic_​txns_​received
{tpu_​recv_​type="udp"}
counterCount of txns received via TPU. (TPU/UDP)
quic_​txns_​received
{tpu_​recv_​type="quic_​fast"}
counterCount of txns received via TPU. (TPU/QUIC unfragmented)
quic_​txns_​received
{tpu_​recv_​type="quic_​frag"}
counterCount of txns received via TPU. (TPU/QUIC fragmented)
quic_​txns_​abandonedcounterCount of txns abandoned because a conn was lost.
quic_​txn_​underszcounterCount of txns received via QUIC dropped because they were too small.
quic_​txn_​overszcounterCount of txns received via QUIC dropped because they were too large.
quic_​legacy_​txn_​underszcounterCount of packets received on the non-QUIC port that were too small to be a valid IP packet.
quic_​legacy_​txn_​overszcounterCount of packets received on the non-QUIC port that were too large to be a valid transaction.
quic_​received_​packetscounterNumber of IP packets received.
quic_​received_​bytescounterTotal bytes received (including IP, UDP, QUIC headers).
quic_​sent_​packetscounterNumber of IP packets sent.
quic_​sent_​bytescounterTotal bytes sent (including IP, UDP, QUIC headers).
quic_​connections_​allocgaugeThe number of currently allocated QUIC connections.
quic_​connections_​state
{quic_​conn_​state="invalid"}
gaugeThe number of QUIC connections in each state. (freed)
quic_​connections_​state
{quic_​conn_​state="handshake"}
gaugeThe number of QUIC connections in each state. (handshaking peer)
quic_​connections_​state
{quic_​conn_​state="handshake_​complete"}
gaugeThe number of QUIC connections in each state. (handshake complete, confirming with peer)
quic_​connections_​state
{quic_​conn_​state="active"}
gaugeThe number of QUIC connections in each state. (active connection)
quic_​connections_​state
{quic_​conn_​state="peer_​close"}
gaugeThe number of QUIC connections in each state. (peer requested close)
quic_​connections_​state
{quic_​conn_​state="abort"}
gaugeThe number of QUIC connections in each state. (connection terminating due to error)
quic_​connections_​state
{quic_​conn_​state="close_​pending"}
gaugeThe number of QUIC connections in each state. (connection is closing)
quic_​connections_​state
{quic_​conn_​state="dead"}
gaugeThe number of QUIC connections in each state. (connection about to be freed)
quic_​connections_​createdcounterThe total number of connections that have been created.
quic_​connections_​closedcounterNumber of connections gracefully closed.
quic_​connections_​abortedcounterNumber of connections aborted.
quic_​connections_​timed_​outcounterNumber of connections timed out.
quic_​connections_​retriedcounterNumber of connections established with retry.
quic_​connection_​error_​no_​slotscounterNumber of connections that failed to create due to lack of slots.
quic_​connection_​error_​retry_​failcounterNumber of connections that failed during retry (e.g. invalid token).
quic_​pkt_​no_​conn
{quic_​pkt_​handle="initial"}
counterNumber of packets with an unknown connection ID. (initial)
quic_​pkt_​no_​conn
{quic_​pkt_​handle="retry"}
counterNumber of packets with an unknown connection ID. (retry)
quic_​pkt_​no_​conn
{quic_​pkt_​handle="handshake"}
counterNumber of packets with an unknown connection ID. (handshake)
quic_​pkt_​no_​conn
{quic_​pkt_​handle="one_​rtt"}
counterNumber of packets with an unknown connection ID. (1-RTT)
quic_​frame_​tx_​alloc
{frame_​tx_​alloc_​result="success"}
counterResults of attempts to acquire QUIC frame metadata. (Success)
quic_​frame_​tx_​alloc
{frame_​tx_​alloc_​result="fail_​empty_​pool"}
counterResults of attempts to acquire QUIC frame metadata. (PktMetaPoolEmpty)
quic_​frame_​tx_​alloc
{frame_​tx_​alloc_​result="fail_​conn_​max"}
counterResults of attempts to acquire QUIC frame metadata. (ConnMaxedInflightFrames)
quic_​initial_​token_​len
{quic_​initial_​token_​len="zero"}
counterNumber of Initial packets grouped by token length. (No token)
quic_​initial_​token_​len
{quic_​initial_​token_​len="fd_​quic_​len"}
counterNumber of Initial packets grouped by token length. (fd_quic retry token length)
quic_​initial_​token_​len
{quic_​initial_​token_​len="invalid_​len"}
counterNumber of Initial packets grouped by token length. (Invalid token length)
quic_​handshakes_​createdcounterNumber of handshake flows created.
quic_​handshake_​error_​alloc_​failcounterNumber of handshakes dropped due to alloc fail.
quic_​handshake_​evictedcounterNumber of handshakes dropped due to eviction.
quic_​stream_​received_​eventscounterNumber of stream RX events.
quic_​stream_​received_​bytescounterTotal stream payload bytes received.
quic_​received_​frames
{quic_​frame_​type="unknown"}
counterNumber of QUIC frames received. (Unknown frame type)
quic_​received_​frames
{quic_​frame_​type="ack"}
counterNumber of QUIC frames received. (ACK frame)
quic_​received_​frames
{quic_​frame_​type="reset_​stream"}
counterNumber of QUIC frames received. (RESET_STREAM frame)
quic_​received_​frames
{quic_​frame_​type="stop_​sending"}
counterNumber of QUIC frames received. (STOP_SENDING frame)
quic_​received_​frames
{quic_​frame_​type="crypto"}
counterNumber of QUIC frames received. (CRYPTO frame)
quic_​received_​frames
{quic_​frame_​type="new_​token"}
counterNumber of QUIC frames received. (NEW_TOKEN frame)
quic_​received_​frames
{quic_​frame_​type="stream"}
counterNumber of QUIC frames received. (STREAM frame)
quic_​received_​frames
{quic_​frame_​type="max_​data"}
counterNumber of QUIC frames received. (MAX_DATA frame)
quic_​received_​frames
{quic_​frame_​type="max_​stream_​data"}
counterNumber of QUIC frames received. (MAX_STREAM_DATA frame)
quic_​received_​frames
{quic_​frame_​type="max_​streams"}
counterNumber of QUIC frames received. (MAX_STREAMS frame)
quic_​received_​frames
{quic_​frame_​type="data_​blocked"}
counterNumber of QUIC frames received. (DATA_BLOCKED frame)
quic_​received_​frames
{quic_​frame_​type="stream_​data_​blocked"}
counterNumber of QUIC frames received. (STREAM_DATA_BLOCKED frame)
quic_​received_​frames
{quic_​frame_​type="streams_​blocked"}
counterNumber of QUIC frames received. (STREAMS_BLOCKED(bidi) frame)
quic_​received_​frames
{quic_​frame_​type="new_​conn_​id"}
counterNumber of QUIC frames received. (NEW_CONN_ID frame)
quic_​received_​frames
{quic_​frame_​type="retire_​conn_​id"}
counterNumber of QUIC frames received. (RETIRE_CONN_ID frame)
quic_​received_​frames
{quic_​frame_​type="path_​challenge"}
counterNumber of QUIC frames received. (PATH_CHALLENGE frame)
quic_​received_​frames
{quic_​frame_​type="path_​response"}
counterNumber of QUIC frames received. (PATH_RESPONSE frame)
quic_​received_​frames
{quic_​frame_​type="conn_​close_​quic"}
counterNumber of QUIC frames received. (CONN_CLOSE(transport) frame)
quic_​received_​frames
{quic_​frame_​type="conn_​close_​app"}
counterNumber of QUIC frames received. (CONN_CLOSE(app) frame)
quic_​received_​frames
{quic_​frame_​type="handshake_​done"}
counterNumber of QUIC frames received. (HANDSHAKE_DONE frame)
quic_​received_​frames
{quic_​frame_​type="ping"}
counterNumber of QUIC frames received. (PING frame)
quic_​received_​frames
{quic_​frame_​type="padding"}
counterNumber of QUIC frames received. (PADDING frame)
quic_​ack_​tx
{quic_​ack_​tx="noop"}
counterACK events (non-ACK-eliciting packet)
quic_​ack_​tx
{quic_​ack_​tx="new"}
counterACK events (new ACK range)
quic_​ack_​tx
{quic_​ack_​tx="merged"}
counterACK events (merged into existing ACK range)
quic_​ack_​tx
{quic_​ack_​tx="drop"}
counterACK events (out of buffers)
quic_​ack_​tx
{quic_​ack_​tx="cancel"}
counterACK events (ACK suppressed by handler)
quic_​service_​duration_​secondshistogramDuration spent in service
quic_​receive_​duration_​secondshistogramDuration spent processing packets
quic_​frame_​fail_​parsecounterNumber of QUIC frames failed to parse.
quic_​pkt_​crypto_​failed
{quic_​enc_​level="initial"}
counterNumber of packets that failed decryption. (initial)
quic_​pkt_​crypto_​failed
{quic_​enc_​level="early"}
counterNumber of packets that failed decryption. (early data)
quic_​pkt_​crypto_​failed
{quic_​enc_​level="handshake"}
counterNumber of packets that failed decryption. (handshake)
quic_​pkt_​crypto_​failed
{quic_​enc_​level="app"}
counterNumber of packets that failed decryption. (app data)
quic_​pkt_​no_​key
{quic_​enc_​level="initial"}
counterNumber of packets that failed decryption due to missing key. (initial)
quic_​pkt_​no_​key
{quic_​enc_​level="early"}
counterNumber of packets that failed decryption due to missing key. (early data)
quic_​pkt_​no_​key
{quic_​enc_​level="handshake"}
counterNumber of packets that failed decryption due to missing key. (handshake)
quic_​pkt_​no_​key
{quic_​enc_​level="app"}
counterNumber of packets that failed decryption due to missing key. (app data)
quic_​pkt_​net_​header_​invalidcounterNumber of packets dropped due to weird IP or UDP header.
quic_​pkt_​quic_​header_​invalidcounterNumber of packets dropped due to weird QUIC header.
quic_​pkt_​underszcounterNumber of QUIC packets dropped due to being too small.
quic_​pkt_​overszcounterNumber of QUIC packets dropped due to being too large.
quic_​pkt_​vernegcounterNumber of QUIC version negotiation packets received.
quic_​retry_​sentcounterNumber of QUIC Retry packets sent.
quic_​pkt_​retransmissions
{quic_​enc_​level="initial"}
counterNumber of QUIC packets that retransmitted. (initial)
quic_​pkt_​retransmissions
{quic_​enc_​level="early"}
counterNumber of QUIC packets that retransmitted. (early data)
quic_​pkt_​retransmissions
{quic_​enc_​level="handshake"}
counterNumber of QUIC packets that retransmitted. (handshake)
quic_​pkt_​retransmissions
{quic_​enc_​level="app"}
counterNumber of QUIC packets that retransmitted. (app data)

Bundle Tile

MetricTypeDescription
bundle_​transaction_​receivedcounterTotal count of transactions received, including transactions within bundles
bundle_​packet_​receivedcounterTotal count of packets received
bundle_​bundle_​receivedcounterTotal count of bundles received
bundle_​errors
{bundle_​error="protobuf"}
counterNumber of gRPC errors encountered (Protobuf decode/encode error)
bundle_​errors
{bundle_​error="transport"}
counterNumber of gRPC errors encountered (Transport error)
bundle_​errors
{bundle_​error="timeout"}
counterNumber of gRPC errors encountered (I/O timeout)
bundle_​errors
{bundle_​error="no_​fee_​info"}
counterNumber of gRPC errors encountered (Bundle dropped due to missing fee info)
bundle_​errors
{bundle_​error="ssl_​alloc"}
counterNumber of gRPC errors encountered (OpenSSL alloc fail)
bundle_​heap_​sizegaugeWorkspace heap size
bundle_​heap_​free_​bytesgaugeApprox free space in workspace
bundle_​shredstream_​heartbeatscounterNumber of ShredStream heartbeats successfully sent
bundle_​keepalivescounterNumber of HTTP/2 PINGs acknowledged by server
bundle_​connectedgauge1 if connected to the bundle server, 0 if not
bundle_​rtt_​samplegaugeLatest RTT sample at scrape time (nanoseconds)
bundle_​rtt_​smoothedgaugeRTT moving average (nanoseconds)
bundle_​rtt_​vargaugeRTT variance (nanoseconds)
bundle_​message_​rx_​delay_​nanoshistogramMessage receive delay in nanoseconds from bundle server to bundle client

Verify Tile

MetricTypeDescription
verify_​transaction_​bundle_​peer_​failurecounterCount of transactions that failed to verify because a peer transaction in the bundle failed
verify_​transaction_​parse_​failurecounterCount of transactions that failed to parse
verify_​transaction_​dedup_​failurecounterCount of transactions that failed to deduplicate in the verify stage
verify_​transaction_​verify_​failurecounterCount of transactions that failed to deduplicate in the verify stage
verify_​gossiped_​votes_​receivedcounterCount of simple vote transactions received over gossip instead of via the normal TPU path

Dedup Tile

MetricTypeDescription
dedup_​transaction_​bundle_​peer_​failurecounterCount of transactions that failed to dedup because a peer transaction in the bundle failed
dedup_​transaction_​dedup_​failurecounterCount of transactions that failed to deduplicate in the dedup stage
dedup_​gossiped_​votes_​receivedcounterCount of simple vote transactions received over gossip instead of via the normal TPU path

Resolv Tile

MetricTypeDescription
resolv_​no_​bank_​dropcounterCount of transactions dropped because the bank was not available
resolv_​stash_​operation
{resolve_​stash_​operation="inserted"}
counterCount of operations that happened on the transaction stash (A transaction with an unknown blockhash was added to the stash)
resolv_​stash_​operation
{resolve_​stash_​operation="overrun"}
counterCount of operations that happened on the transaction stash (A transaction with an unknown blockhash was dropped because the stash was full)
resolv_​stash_​operation
{resolve_​stash_​operation="published"}
counterCount of operations that happened on the transaction stash (A transaction with an unknown blockhash was published as the blockhash became known)
resolv_​stash_​operation
{resolve_​stash_​operation="removed"}
counterCount of operations that happened on the transaction stash (A transaction with an unknown blockhash was removed from the stash without publishing, due to a bad LUT resolved failure, or no bank. These errors are double counted with the respective metrics for those categories.)
resolv_​lut_​resolved
{lut_​resolve_​result="invalid_​lookup_​index"}
counterCount of address lookup tables resolved (The transaction referenced an index in a LUT that didn't exist)
resolv_​lut_​resolved
{lut_​resolve_​result="account_​uninitialized"}
counterCount of address lookup tables resolved (The account referenced as a LUT hasn't been initialized)
resolv_​lut_​resolved
{lut_​resolve_​result="invalid_​account_​data"}
counterCount of address lookup tables resolved (The account referenced as a LUT couldn't be parsed)
resolv_​lut_​resolved
{lut_​resolve_​result="invalid_​account_​owner"}
counterCount of address lookup tables resolved (The account referenced as a LUT wasn't owned by the ALUT program ID)
resolv_​lut_​resolved
{lut_​resolve_​result="account_​not_​found"}
counterCount of address lookup tables resolved (The account referenced as a LUT couldn't be found)
resolv_​lut_​resolved
{lut_​resolve_​result="success"}
counterCount of address lookup tables resolved (Resolved successfully)
resolv_​blockhash_​expiredcounterCount of transactions that failed to resolve because the blockhash was expired
resolv_​transaction_​bundle_​peer_​failurecounterCount of transactions that failed to resolve because a peer transaction in the bundle failed

Pack Tile

MetricTypeDescription
pack_​schedule_​microblock_​duration_​secondshistogramDuration of scheduling one microblock
pack_​no_​sched_​microblock_​duration_​secondshistogramDuration of discovering that there are no schedulable transactions
pack_​insert_​transaction_​duration_​secondshistogramDuration of inserting one transaction into the pool of available transactions
pack_​complete_​microblock_​duration_​secondshistogramDuration of the computation associated with marking one microblock as complete
pack_​total_​transactions_​per_​microblock_​counthistogramCount of transactions in a scheduled microblock, including both votes and non-votes
pack_​votes_​per_​microblock_​counthistogramCount of simple vote transactions in a scheduled microblock
pack_​normal_​transaction_​receivedcounterCount of transactions received via the normal TPU path
pack_​transaction_​inserted
{pack_​txn_​insert_​return="nonce_​conflict"}
counterResult of inserting a transaction into the pack object (Bundle with two conflicting durable nonce transactions)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="bundle_​blacklist"}
counterResult of inserting a transaction into the pack object (Transaction uses an account on the bundle blacklist)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="invalid_​nonce"}
counterResult of inserting a transaction into the pack object (Transaction is an invalid durable nonce transaction)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="write_​sysvar"}
counterResult of inserting a transaction into the pack object (Transaction tries to write to a sysvar)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="estimation_​fail"}
counterResult of inserting a transaction into the pack object (Estimating compute cost and/or fee failed)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="duplicate_​account"}
counterResult of inserting a transaction into the pack object (Transaction included an account address twice)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="too_​many_​accounts"}
counterResult of inserting a transaction into the pack object (Transaction tried to load too many accounts)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="too_​large"}
counterResult of inserting a transaction into the pack object (Transaction requests too many CUs)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="expired"}
counterResult of inserting a transaction into the pack object (Transaction already expired)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="addr_​lut"}
counterResult of inserting a transaction into the pack object (Transaction loaded accounts from a lookup table)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="unaffordable"}
counterResult of inserting a transaction into the pack object (Fee payer's balance below transaction fee)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="duplicate"}
counterResult of inserting a transaction into the pack object (Pack aware of transaction with same signature)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="nonce_​priority"}
counterResult of inserting a transaction into the pack object (Transaction's fee was too low given its compute unit requirement and another competing transactions that uses the same durable nonce)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="priority"}
counterResult of inserting a transaction into the pack object (Transaction's fee was too low given its compute unit requirement and other competing transactions)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="nonvote_​add"}
counterResult of inserting a transaction into the pack object (Transaction that was not a simple vote added to pending transactions)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="vote_​add"}
counterResult of inserting a transaction into the pack object (Simple vote transaction was added to pending transactions)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="nonvote_​replace"}
counterResult of inserting a transaction into the pack object (Transaction that was not a simple vote replaced a lower priority transaction)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="vote_​replace"}
counterResult of inserting a transaction into the pack object (Simple vote transaction replaced a lower priority transaction)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="nonce_​nonvote_​add"}
counterResult of inserting a transaction into the pack object (Durable nonce transaction added to pending transactions)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="unused"}
counterResult of inserting a transaction into the pack object (Unused because durable nonce transactions can't be simple votes)
pack_​transaction_​inserted
{pack_​txn_​insert_​return="nonce_​nonvote_​replace"}
counterResult of inserting a transaction into the pack object (Durable nonce transaction replaced a lower priority transaction, likely one that uses the same durable nonce)
pack_​metric_​timing
{pack_​timing_​state="no_​txn_​no_​bank_​no_​leader_​no_​microblock"}
counterTime in nanos spent in each state (Pack had no transactions available, and wasn't leader)
pack_​metric_​timing
{pack_​timing_​state="txn_​no_​bank_​no_​leader_​no_​microblock"}
counterTime in nanos spent in each state (Pack had transactions available, but wasn't leader or had hit a limit)
pack_​metric_​timing
{pack_​timing_​state="no_​txn_​bank_​no_​leader_​no_​microblock"}
counterTime in nanos spent in each state (Pack had no transactions available, had banks but wasn't leader)
pack_​metric_​timing
{pack_​timing_​state="txn_​bank_​no_​leader_​no_​microblock"}
counterTime in nanos spent in each state (Pack had transactions available, had banks but wasn't leader)
pack_​metric_​timing
{pack_​timing_​state="no_​txn_​no_​bank_​leader_​no_​microblock"}
counterTime in nanos spent in each state (Pack had no transactions available, and was leader but had no available banks)
pack_​metric_​timing
{pack_​timing_​state="txn_​no_​bank_​leader_​no_​microblock"}
counterTime in nanos spent in each state (Pack had transactions available, was leader, but had no available banks)
pack_​metric_​timing
{pack_​timing_​state="no_​txn_​bank_​leader_​no_​microblock"}
counterTime in nanos spent in each state (Pack had available banks but no transactions)
pack_​metric_​timing
{pack_​timing_​state="txn_​bank_​leader_​no_​microblock"}
counterTime in nanos spent in each state (Pack had banks and transactions available but couldn't schedule anything non-conflicting)
pack_​metric_​timing
{pack_​timing_​state="no_​txn_​no_​bank_​no_​leader_​microblock"}
counterTime in nanos spent in each state (Pack scheduled a non-empty microblock while not leader)
pack_​metric_​timing
{pack_​timing_​state="txn_​no_​bank_​no_​leader_​microblock"}
counterTime in nanos spent in each state (Pack scheduled a non-empty microblock while not leader)
pack_​metric_​timing
{pack_​timing_​state="no_​txn_​bank_​no_​leader_​microblock"}
counterTime in nanos spent in each state (Pack scheduled a non-empty microblock while not leader)
pack_​metric_​timing
{pack_​timing_​state="txn_​bank_​no_​leader_​microblock"}
counterTime in nanos spent in each state (Pack scheduled a non-empty microblock while not leader)
pack_​metric_​timing
{pack_​timing_​state="no_​txn_​no_​bank_​leader_​microblock"}
counterTime in nanos spent in each state (Pack scheduled a non-empty microblock but all banks were busy)
pack_​metric_​timing
{pack_​timing_​state="txn_​no_​bank_​leader_​microblock"}
counterTime in nanos spent in each state (Pack scheduled a non-empty microblock but all banks were busy)
pack_​metric_​timing
{pack_​timing_​state="no_​txn_​bank_​leader_​microblock"}
counterTime in nanos spent in each state (Pack scheduled a non-empty microblock and now has no transactions)
pack_​metric_​timing
{pack_​timing_​state="txn_​bank_​leader_​microblock"}
counterTime in nanos spent in each state (Pack scheduled a non-empty microblock)
pack_​transaction_​dropped_​from_​extracounterTransactions dropped from the extra transaction storage because it was full
pack_​transaction_​inserted_​to_​extracounterTransactions inserted into the extra transaction storage because pack's primary storage was full
pack_​transaction_​inserted_​from_​extracounterTransactions pulled from the extra transaction storage and inserted into pack's primary storage
pack_​transaction_​expiredcounterTransactions deleted from pack because their TTL expired
pack_​transaction_​deletedcounterTransactions dropped from pack because they were requested to be deleted
pack_​transaction_​dropped_​partial_​bundlecounterTransactions dropped from pack because they were part of a partial bundle
pack_​available_​transactions
{avail_​txn_​type="all"}
gaugeThe total number of pending transactions in pack's pool that are available to be scheduled (All transactions in any treap)
pack_​available_​transactions
{avail_​txn_​type="regular"}
gaugeThe total number of pending transactions in pack's pool that are available to be scheduled (Non-votes in the main treap)
pack_​available_​transactions
{avail_​txn_​type="votes"}
gaugeThe total number of pending transactions in pack's pool that are available to be scheduled (Simple votes)
pack_​available_​transactions
{avail_​txn_​type="conflicting"}
gaugeThe total number of pending transactions in pack's pool that are available to be scheduled (Non-votes that write to a hotly-contended account)
pack_​available_​transactions
{avail_​txn_​type="bundles"}
gaugeThe total number of pending transactions in pack's pool that are available to be scheduled (Transactions that are part of a bundle)
pack_​pending_​transactions_​heap_​sizegaugeThe maximum number of pending transactions that pack can consider. This value is fixed at Firedancer startup but is a useful reference for AvailableTransactions.
pack_​smallest_​pending_​transactiongaugeA lower bound on the smallest non-vote transaction (in cost units) that is immediately available for scheduling
pack_​microblock_​per_​block_​limitcounterThe number of times pack did not pack a microblock because the limit on microblocks/block had been reached
pack_​data_​per_​block_​limitcounterThe number of times pack did not pack a microblock because it reached the data per block limit at the start of trying to schedule a microblock
pack_​transaction_​schedule
{pack_​txn_​schedule="taken"}
counterResult of trying to consider a transaction for scheduling (Pack included the transaction in the microblock)
pack_​transaction_​schedule
{pack_​txn_​schedule="cu_​limit"}
counterResult of trying to consider a transaction for scheduling (Pack skipped the transaction because it would have exceeded the block CU limit)
pack_​transaction_​schedule
{pack_​txn_​schedule="fast_​path"}
counterResult of trying to consider a transaction for scheduling (Pack skipped the transaction because of account conflicts using the fast bitvector check)
pack_​transaction_​schedule
{pack_​txn_​schedule="byte_​limit"}
counterResult of trying to consider a transaction for scheduling (Pack skipped the transaction because it would have exceeded the block data size limit)
pack_​transaction_​schedule
{pack_​txn_​schedule="write_​cost"}
counterResult of trying to consider a transaction for scheduling (Pack skipped the transaction because it would have caused a writable account to exceed the per-account block write cost limit)
pack_​transaction_​schedule
{pack_​txn_​schedule="slow_​path"}
counterResult of trying to consider a transaction for scheduling (Pack skipped the transaction because of account conflicts using the full slow check)
pack_​transaction_​schedule
{pack_​txn_​schedule="defer_​skip"}
counterResult of trying to consider a transaction for scheduling (Pack skipped the transaction it previously exceeded the per-account block write cost limit too many times)
pack_​bundle_​crank_​status
{bundle_​crank_​result="not_​needed"}
counterResult of considering whether bundle cranks are needed (On-chain state in the correct state)
pack_​bundle_​crank_​status
{bundle_​crank_​result="inserted"}
counterResult of considering whether bundle cranks are needed (Inserted an initializer bundle to update the on-chain state)
pack_​bundle_​crank_​status
{bundle_​crank_​result="creation_​failed"}
counterResult of considering whether bundle cranks are needed (Tried to insert an initializer bundle to update the on-chain state, but creation failed)
pack_​bundle_​crank_​status
{bundle_​crank_​result="insertion_​failed"}
counterResult of considering whether bundle cranks are needed (Tried to insert an initializer bundle to update the on-chain state, but insertion failed)
pack_​cus_​consumed_​in_​blockgaugeThe number of cost units consumed in the current block, or 0 if pack is not currently packing a block
pack_​cus_​scheduledhistogramThe number of cost units scheduled for each block pack produced. This can be higher than the block limit because of returned CUs.
pack_​cus_​rebatedhistogramThe number of compute units rebated for each block pack produced. Compute units are rebated when a transaction fails prior to execution or requests more compute units than it uses.
pack_​cus_​nethistogramThe net number of cost units (scheduled - rebated) in each block pack produced.
pack_​cus_​pcthistogramThe percent of the total block cost limit used for each block pack produced.
pack_​delete_​missedcounterCount of attempts to delete a transaction that wasn't found
pack_​delete_​hitcounterCount of attempts to delete a transaction that was found and deleted

Bank Tile

MetricTypeDescription
bank_​transaction_​sanitize_​failurecounterNumber of transactions that failed to sanitize.
bank_​transaction_​not_​executed_​failurecounterNumber of transactions that did not execute. This is different than transactions which fail to execute, which make it onto the chain.
bank_​transaction_​load_​address_​tables
{bank_​load_​address_​lookup_​table="success"}
counterResult of loading address lookup tables for a transaction. If there are multiple errors for the transaction, only the first one is reported. (Success)
bank_​transaction_​load_​address_​tables
{bank_​load_​address_​lookup_​table="slot_​hashes_​sysvar_​not_​found"}
counterResult of loading address lookup tables for a transaction. If there are multiple errors for the transaction, only the first one is reported. (The slot hashes syvar could not be found.)
bank_​transaction_​load_​address_​tables
{bank_​load_​address_​lookup_​table="account_​not_​found"}
counterResult of loading address lookup tables for a transaction. If there are multiple errors for the transaction, only the first one is reported. (The account storing the address lookup table was deactivated or could not be found.)
bank_​transaction_​load_​address_​tables
{bank_​load_​address_​lookup_​table="invalid_​account_​owner"}
counterResult of loading address lookup tables for a transaction. If there are multiple errors for the transaction, only the first one is reported. (The account that owns the referenced lookup table is not the address lookup table program.)
bank_​transaction_​load_​address_​tables
{bank_​load_​address_​lookup_​table="invalid_​account_​data"}
counterResult of loading address lookup tables for a transaction. If there are multiple errors for the transaction, only the first one is reported. (The data for the referenced address lookup table is malformed.)
bank_​transaction_​load_​address_​tables
{bank_​load_​address_​lookup_​table="invalid_​index"}
counterResult of loading address lookup tables for a transaction. If there are multiple errors for the transaction, only the first one is reported. (The referenced index in the address lookup table does not exist.)
bank_​transaction_​result
{transaction_​error="success"}
counterResult of loading and executing a transaction. (Success)
bank_​transaction_​result
{transaction_​error="account_​in_​use"}
counterResult of loading and executing a transaction. (An account is already being processed in another transaction in a way that does not support parallelism.)
bank_​transaction_​result
{transaction_​error="account_​loaded_​twice"}
counterResult of loading and executing a transaction. (A Pubkey appears twice in the transaction's account_keys. Instructions can reference Pubkeys more than once but the message must contain a list with no duplicate keys.)
bank_​transaction_​result
{transaction_​error="account_​not_​found"}
counterResult of loading and executing a transaction. (Attempt to debit an account but found no record of a prior credit.)
bank_​transaction_​result
{transaction_​error="program_​account_​not_​found"}
counterResult of loading and executing a transaction. (Attempt to load a program that does not exist.)
bank_​transaction_​result
{transaction_​error="insufficient_​funds_​for_​fee"}
counterResult of loading and executing a transaction. (The fee payer Pubkey does not have sufficient balance to pay the fee to schedule the transaction.)
bank_​transaction_​result
{transaction_​error="invalid_​account_​for_​fee"}
counterResult of loading and executing a transaction. (This account may not be used to pay transaction fees.)
bank_​transaction_​result
{transaction_​error="already_​processed"}
counterResult of loading and executing a transaction. (The bank has seen this transaction before. This can occur under normal operation when a UDP packet is duplicated, as a user error from a client not updating its recent_blockhash, or as a double-spend attack.)
bank_​transaction_​result
{transaction_​error="blockhash_​not_​found"}
counterResult of loading and executing a transaction. (The bank has not seen the given recent_blockhash or the transaction is too old and the recent_blockhash has been discarded.)
bank_​transaction_​result
{transaction_​error="instruction_​error"}
counterResult of loading and executing a transaction. (An error occurred while processing an instruction.)
bank_​transaction_​result
{transaction_​error="call_​chain_​too_​deep"}
counterResult of loading and executing a transaction. (Loader call chain is too deep.)
bank_​transaction_​result
{transaction_​error="missing_​signature_​for_​fee"}
counterResult of loading and executing a transaction. (Transaction requires a fee but has no signature present.)
bank_​transaction_​result
{transaction_​error="invalid_​account_​index"}
counterResult of loading and executing a transaction. (Transaction contains an invalid account reference.)
bank_​transaction_​result
{transaction_​error="signature_​failure"}
counterResult of loading and executing a transaction. (Transaction did not pass signature verification.)
bank_​transaction_​result
{transaction_​error="invalid_​program_​for_​execution"}
counterResult of loading and executing a transaction. (This program may not be used for executing instructions.)
bank_​transaction_​result
{transaction_​error="sanitize_​failure"}
counterResult of loading and executing a transaction. (Transaction failed to sanitize accounts offsets correctly implies that account locks are not taken for this TX, and should not be unlocked.)
bank_​transaction_​result
{transaction_​error="cluster_​maintenance"}
counterResult of loading and executing a transaction. (Transactions are currently disabled due to cluster maintenance.)
bank_​transaction_​result
{transaction_​error="account_​borrow_​outstanding"}
counterResult of loading and executing a transaction. (Transaction processing left an account with an outstanding borrowed reference.)
bank_​transaction_​result
{transaction_​error="would_​exceed_​max_​block_​cost_​limit"}
counterResult of loading and executing a transaction. (Transaction would exceed max Block Cost Limit.)
bank_​transaction_​result
{transaction_​error="unsupported_​version"}
counterResult of loading and executing a transaction. (Transaction version is unsupported.)
bank_​transaction_​result
{transaction_​error="invalid_​writable_​account"}
counterResult of loading and executing a transaction. (Transaction loads a writable account that cannot be written.)
bank_​transaction_​result
{transaction_​error="would_​exceed_​max_​account_​cost_​limit"}
counterResult of loading and executing a transaction. (Transaction would exceed max account limit within the block.)
bank_​transaction_​result
{transaction_​error="would_​exceed_​account_​data_​block_​limit"}
counterResult of loading and executing a transaction. (Transaction would exceed account data limit within the block.)
bank_​transaction_​result
{transaction_​error="too_​many_​account_​locks"}
counterResult of loading and executing a transaction. (Transaction locked too many accounts.)
bank_​transaction_​result
{transaction_​error="address_​lookup_​table_​not_​found"}
counterResult of loading and executing a transaction. (Address lookup table not found.)
bank_​transaction_​result
{transaction_​error="invalid_​address_​lookup_​table_​owner"}
counterResult of loading and executing a transaction. (Attempted to lookup addresses from an account owned by the wrong program.)
bank_​transaction_​result
{transaction_​error="invalid_​address_​lookup_​table_​data"}
counterResult of loading and executing a transaction. (Attempted to lookup addresses from an invalid account.)
bank_​transaction_​result
{transaction_​error="invalid_​address_​lookup_​table_​index"}
counterResult of loading and executing a transaction. (Address table lookup uses an invalid index.)
bank_​transaction_​result
{transaction_​error="invalid_​rent_​paying_​account"}
counterResult of loading and executing a transaction. (Transaction leaves an account with a lower balance than rent-exempt minimum.)
bank_​transaction_​result
{transaction_​error="would_​exceed_​max_​vote_​cost_​limit"}
counterResult of loading and executing a transaction. (Transaction would exceed max Vote Cost Limit.)
bank_​transaction_​result
{transaction_​error="would_​exceed_​account_​data_​total_​limit"}
counterResult of loading and executing a transaction. (Transaction would exceed total account data limit.)
bank_​transaction_​result
{transaction_​error="duplicate_​instruction"}
counterResult of loading and executing a transaction. (Transaction contains a duplicate instruction that is not allowed.)
bank_​transaction_​result
{transaction_​error="insufficient_​funds_​for_​rent"}
counterResult of loading and executing a transaction. (Transaction results in an account with insufficient funds for rent.)
bank_​transaction_​result
{transaction_​error="max_​loaded_​accounts_​data_​size_​exceeded"}
counterResult of loading and executing a transaction. (Transaction exceeded max loaded accounts data size cap.)
bank_​transaction_​result
{transaction_​error="invalid_​loaded_​accounts_​data_​size_​limit"}
counterResult of loading and executing a transaction. (LoadedAccountsDataSizeLimit set for transaction must be greater than 0.)
bank_​transaction_​result
{transaction_​error="resanitization_​needed"}
counterResult of loading and executing a transaction. (Sanitized transaction differed before/after feature activation. Needs to be resanitized.)
bank_​transaction_​result
{transaction_​error="program_​execution_​temporarily_​restricted"}
counterResult of loading and executing a transaction. (Program execution is temporarily restricted on an account.)
bank_​transaction_​result
{transaction_​error="unbalanced_​transaction"}
counterResult of loading and executing a transaction. (The total balance before the transaction does not equal the total balance after the transaction.)
bank_​transaction_​result
{transaction_​error="program_​cache_​hit_​max_​limit"}
counterResult of loading and executing a transaction. (The total program cache size hit the maximum allowed limit.)
bank_​transaction_​result
{transaction_​error="commit_​cancelled"}
counterResult of loading and executing a transaction. (The process for committing the transaction was cancelled internally.)
bank_​transaction_​result
{transaction_​error="bundle_​peer"}
counterResult of loading and executing a transaction. (Transaction is part of a bundle and one of the peer transactions failed.)
bank_​processing_​failedcounterCount of transactions for which the processing stage failed and won't land on chain
bank_​fee_​only_​transactionscounterCount of transactions that will land on chain but without executing
bank_​executed_​failed_​transactionscounterCount of transactions that execute on chain but failed
bank_​successful_​transactionscounterCount of transactions that execute on chain and succeed
bank_​cost_​model_​undercountcounterCount of transactions that used more CUs than the cost model should have permitted them to

Poh Tile

MetricTypeDescription
poh_​begin_​leader_​delay_​secondshistogramDelay between when we become leader in a slot and when we receive the bank.
poh_​first_​microblock_​delay_​secondshistogramDelay between when we become leader in a slot and when we receive the first microblock.
poh_​slot_​done_​delay_​secondshistogramDelay between when we become leader in a slot and when we finish the slot.
poh_​bundle_​initialize_​delay_​secondshistogramDelay in starting the slot caused by loading the information needed to generate the bundle crank transactions

Shred Tile

MetricTypeDescription
shred_​cluster_​contact_​info_​cnthistogramNumber of contact infos in the cluster contact info message
shred_​microblocks_​abandonedcounterThe number of microblocks that were abandoned because we switched slots without finishing the current slot
shred_​invalid_​block_​idcounterThe number of times a block was created with unknown parent block_id
shred_​batch_​szhistogramThe size (in bytes) of each microblock batch that is shredded
shred_​batch_​microblock_​cnthistogramThe number of microblocks in each microblock batch that is shredded
shred_​shredding_​duration_​secondshistogramDuration of producing one FEC set from the shredder
shred_​add_​shred_​duration_​secondshistogramDuration of verifying and processing one shred received from the network
shred_​shred_​processed
{shred_​processing_​result="bad_​slot"}
counterThe result of processing a shred from the network (Shred was for a slot for which we don't know the leader)
shred_​shred_​processed
{shred_​processing_​result="parse_​failed"}
counterThe result of processing a shred from the network (Shred parsing failed)
shred_​shred_​processed
{shred_​processing_​result="rejected"}
counterThe result of processing a shred from the network (Shred was invalid for one of many reasons)
shred_​shred_​processed
{shred_​processing_​result="ignored"}
counterThe result of processing a shred from the network (Shred was ignored because we had already received or reconstructed it)
shred_​shred_​processed
{shred_​processing_​result="okay"}
counterThe result of processing a shred from the network (Shred accepted to an incomplete FEC set)
shred_​shred_​processed
{shred_​processing_​result="completes"}
counterThe result of processing a shred from the network (Shred accepted and resulted in a valid, complete FEC set)
shred_​fec_​set_​spilledcounterThe number of FEC sets that were spilled because they didn't complete in time and we needed space
shred_​shred_​rejected_​initialcounterThe number of shreds that were rejected before any resources were allocated for the FEC set
shred_​shred_​rejected_​unchainedcounterThe number of shreds that were rejected because they're not chained merkle shreds
shred_​fec_​rejected_​fatalcounterThe number of FEC sets that were rejected for reasons that cause the whole FEC set to become invalid
shred_​force_​complete_​requestcounterThe number of times we received a FEC force complete message
shred_​force_​complete_​failurecounterThe number of times we failed to force complete a FEC set on request
shred_​force_​complete_​successcounterThe number of times we successfully forced completed a FEC set on request
shred_​shred_​out_​rcvcounterThe number of times we received a repair shred
shred_​shred_​turbine_​rcvcounterThe number of times we received a turbine shred
shred_​store_​insert_​waithistogramTime in seconds spent waiting for the store to insert a new FEC set
shred_​store_​insert_​workhistogramTime in seconds spent on inserting a new FEC set

Store Tile

MetricTypeDescription
store_​transactions_​insertedcounterCount of transactions produced while we were leader in the shreds that have been inserted so far

Sign Tile

MetricTypeDescription
sign_​sign_​duration_​secondshistogramDuration of signing a message

Metric Tile

MetricTypeDescription
metric_​boot_​timestamp_​nanosgaugeTimestamp when validator was started (nanoseconds since epoch)

Replay Tile

MetricTypeDescription
replay_​store_​link_​waithistogramTime in seconds spent waiting for the store to link a new FEC set
replay_​store_​link_​workhistogramTime in seconds spent on linking a new FEC set
replay_​store_​read_​waithistogramTime in seconds spent waiting for the store to read a FEC set
replay_​store_​read_​workhistogramTime in seconds spent on reading a FEC set
replay_​store_​publish_​waithistogramTime in seconds spent waiting for the store to publish a new FEC set
replay_​store_​publish_​workhistogramTime in seconds spent on publishing a new FEC set
replay_​root_​slotgaugeThe slot at which our node has most recently rooted
replay_​root_​distancegaugeThe distance in slots between our current root and the current reset slot
replay_​leader_​slotgaugeThe slot at which we are currently leader, or 0 if none
replay_​next_​leader_​slotgaugeThe slot at which we are next leader, or 0 if none. If we are currently leader, this is the same as the current leader slot
replay_​reset_​slotgaugeThe slot at which we last reset the replay stage, or 0 if unknown
replay_​max_​live_​banksgaugeThe maximum number of banks we can have alive
replay_​live_​banksgaugeThe number of banks we currently have alive
replay_​slots_​totalcounterCount of slots replayed successfully
replay_​transactions_​totalcounterCount of transactions processed overall on the current fork

Storei Tile

MetricTypeDescription
storei_​first_​turbine_​slotgauge
storei_​current_​turbine_​slotgauge

Gossip Tile

MetricTypeDescription
gossip_​ping_​tracker_​capacitycounter
gossip_​ping_​tracker_​count
{ping_​tracked_​type="unpinged"}
gauge(Peer is known but has not been pinged yet)
gossip_​ping_​tracker_​count
{ping_​tracked_​type="invalid"}
gauge(Peer was pinged but has not yet responded, or responded with an invalid pong)
gossip_​ping_​tracker_​count
{ping_​tracked_​type="valid"}
gauge(Peer was pinged and is currently valid)
gossip_​ping_​tracker_​count
{ping_​tracked_​type="valid_​refreshing"}
gauge(Peer was pinged and is currently valid, and is being refreshed with a new ping)
gossip_​ping_​tracker_​pong_​result
{pong_​response="staked"}
counter(Pong ignored as node is staked)
gossip_​ping_​tracker_​pong_​result
{pong_​response="entrypoint"}
counter(Pong ignored as node is an entrypoint)
gossip_​ping_​tracker_​pong_​result
{pong_​response="untracked"}
counter(Pong ignored as node has no outstanding ping)
gossip_​ping_​tracker_​pong_​result
{pong_​response="address"}
counter(Pong ignored as responding node doesn't match pinged address)
gossip_​ping_​tracker_​pong_​result
{pong_​response="token"}
counter(Pong ignored as token was not valid)
gossip_​ping_​tracker_​pong_​result
{pong_​response="success"}
counter(Pong accepted)
gossip_​ping_​tracker_​evicted_​countcounter
gossip_​ping_​tracked_​countcounter
gossip_​ping_​tracker_​stake_​changed_​countcounter
gossip_​ping_​tracker_​address_​changed_​countcounter
gossip_​crds_​capacitygauge
gossip_​crds_​count
{crds_​value="contact_​info_​v1"}
gauge(Contact Info V1)
gossip_​crds_​count
{crds_​value="vote"}
gauge(Vote)
gossip_​crds_​count
{crds_​value="lowest_​slot"}
gauge(Lowest Slot)
gossip_​crds_​count
{crds_​value="snapshot_​hashes"}
gauge(Snapshot Hashes)
gossip_​crds_​count
{crds_​value="accounts_​hashes"}
gauge(Accounts Hashes)
gossip_​crds_​count
{crds_​value="epoch_​slots"}
gauge(Epoch Slots)
gossip_​crds_​count
{crds_​value="version_​v1"}
gauge(Version V1)
gossip_​crds_​count
{crds_​value="version_​v2"}
gauge(Version V2)
gossip_​crds_​count
{crds_​value="node_​instance"}
gauge(Node Instance)
gossip_​crds_​count
{crds_​value="duplicate_​shred"}
gauge(Duplicate Shred)
gossip_​crds_​count
{crds_​value="incremental_​snapshot_​hashes"}
gauge(Incremental Snapshot Hashes)
gossip_​crds_​count
{crds_​value="contact_​info_​v2"}
gauge(Contact Info V2)
gossip_​crds_​count
{crds_​value="restart_​last_​voted_​fork_​slots"}
gauge(Restart Last Voted Fork Slots)
gossip_​crds_​count
{crds_​value="restart_​heaviest_​fork"}
gauge(Restart Heaviest Fork)
gossip_​crds_​expired_​countcounter
gossip_​crds_​evicted_​countcounter
gossip_​crds_​peer_​capacitygauge
gossip_​crds_​peer_​staked_​countgauge
gossip_​crds_​peer_​unstaked_​countgauge
gossip_​crds_​peer_​total_​stakegauge
gossip_​crds_​peer_​evicted_​countcounter
gossip_​crds_​purged_​capacitygauge
gossip_​crds_​purged_​countgauge
gossip_​crds_​purged_​expired_​countcounter
gossip_​crds_​purged_​evicted_​countcounter
gossip_​contact_​info_​unrecognized_​socket_​tagscounter
gossip_​contact_​info_​ipv6counter
gossip_​crds_​rx_​count
{gossip_​crds_​outcome="upserted_​pull_​response"}
counter(Pull Response (upserted))
gossip_​crds_​rx_​count
{gossip_​crds_​outcome="upserted_​push"}
counter(Push (upserted))
gossip_​crds_​rx_​count
{gossip_​crds_​outcome="dropped_​pull_​response_​stale"}
counter(Pull Response (newer entry already present in table))
gossip_​crds_​rx_​count
{gossip_​crds_​outcome="dropped_​pull_​response_​wallclock"}
counter(Pull Response (outside expiry window and no contact info entry))
gossip_​crds_​rx_​count
{gossip_​crds_​outcome="dropped_​pull_​response_​duplicate"}
counter(Pull Response (duplicate))
gossip_​crds_​rx_​count
{gossip_​crds_​outcome="dropped_​push_​stale"}
counter(Push (newer entry already present in table))
gossip_​crds_​rx_​count
{gossip_​crds_​outcome="dropped_​push_​duplicate"}
counter(Push (duplicate))
gossip_​message_​tx_​count
{gossip_​message="pull_​request"}
counter(Pull Request)
gossip_​message_​tx_​count
{gossip_​message="pull_​response"}
counter(Pull Response)
gossip_​message_​tx_​count
{gossip_​message="push"}
counter(Push)
gossip_​message_​tx_​count
{gossip_​message="prune"}
counter(Prune)
gossip_​message_​tx_​count
{gossip_​message="ping"}
counter(Ping)
gossip_​message_​tx_​count
{gossip_​message="pong"}
counter(Pong)
gossip_​message_​tx_​bytes
{gossip_​message="pull_​request"}
counter(Pull Request)
gossip_​message_​tx_​bytes
{gossip_​message="pull_​response"}
counter(Pull Response)
gossip_​message_​tx_​bytes
{gossip_​message="push"}
counter(Push)
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_​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)
gossip_​crds_​tx_​push_​count
{crds_​value="snapshot_​hashes"}
counter(Snapshot Hashes)
gossip_​crds_​tx_​push_​count
{crds_​value="accounts_​hashes"}
counter(Accounts Hashes)
gossip_​crds_​tx_​push_​count
{crds_​value="epoch_​slots"}
counter(Epoch Slots)
gossip_​crds_​tx_​push_​count
{crds_​value="version_​v1"}
counter(Version V1)
gossip_​crds_​tx_​push_​count
{crds_​value="version_​v2"}
counter(Version V2)
gossip_​crds_​tx_​push_​count
{crds_​value="node_​instance"}
counter(Node Instance)
gossip_​crds_​tx_​push_​count
{crds_​value="duplicate_​shred"}
counter(Duplicate Shred)
gossip_​crds_​tx_​push_​count
{crds_​value="incremental_​snapshot_​hashes"}
counter(Incremental Snapshot Hashes)
gossip_​crds_​tx_​push_​count
{crds_​value="contact_​info_​v2"}
counter(Contact Info V2)
gossip_​crds_​tx_​push_​count
{crds_​value="restart_​last_​voted_​fork_​slots"}
counter(Restart Last Voted Fork Slots)
gossip_​crds_​tx_​push_​count
{crds_​value="restart_​heaviest_​fork"}
counter(Restart Heaviest Fork)
gossip_​crds_​tx_​push_​bytes
{crds_​value="contact_​info_​v1"}
counter(Contact Info V1)
gossip_​crds_​tx_​push_​bytes
{crds_​value="vote"}
counter(Vote)
gossip_​crds_​tx_​push_​bytes
{crds_​value="lowest_​slot"}
counter(Lowest Slot)
gossip_​crds_​tx_​push_​bytes
{crds_​value="snapshot_​hashes"}
counter(Snapshot Hashes)
gossip_​crds_​tx_​push_​bytes
{crds_​value="accounts_​hashes"}
counter(Accounts Hashes)
gossip_​crds_​tx_​push_​bytes
{crds_​value="epoch_​slots"}
counter(Epoch Slots)
gossip_​crds_​tx_​push_​bytes
{crds_​value="version_​v1"}
counter(Version V1)
gossip_​crds_​tx_​push_​bytes
{crds_​value="version_​v2"}
counter(Version V2)
gossip_​crds_​tx_​push_​bytes
{crds_​value="node_​instance"}
counter(Node Instance)
gossip_​crds_​tx_​push_​bytes
{crds_​value="duplicate_​shred"}
counter(Duplicate Shred)
gossip_​crds_​tx_​push_​bytes
{crds_​value="incremental_​snapshot_​hashes"}
counter(Incremental Snapshot Hashes)
gossip_​crds_​tx_​push_​bytes
{crds_​value="contact_​info_​v2"}
counter(Contact Info V2)
gossip_​crds_​tx_​push_​bytes
{crds_​value="restart_​last_​voted_​fork_​slots"}
counter(Restart Last Voted Fork Slots)
gossip_​crds_​tx_​push_​bytes
{crds_​value="restart_​heaviest_​fork"}
counter(Restart Heaviest Fork)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="contact_​info_​v1"}
counter(Contact Info V1)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="vote"}
counter(Vote)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="lowest_​slot"}
counter(Lowest Slot)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="snapshot_​hashes"}
counter(Snapshot Hashes)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="accounts_​hashes"}
counter(Accounts Hashes)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="epoch_​slots"}
counter(Epoch Slots)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="version_​v1"}
counter(Version V1)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="version_​v2"}
counter(Version V2)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="node_​instance"}
counter(Node Instance)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="duplicate_​shred"}
counter(Duplicate Shred)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="incremental_​snapshot_​hashes"}
counter(Incremental Snapshot Hashes)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="contact_​info_​v2"}
counter(Contact Info V2)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="restart_​last_​voted_​fork_​slots"}
counter(Restart Last Voted Fork Slots)
gossip_​crds_​tx_​pull_​response_​count
{crds_​value="restart_​heaviest_​fork"}
counter(Restart Heaviest Fork)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="contact_​info_​v1"}
counter(Contact Info V1)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="vote"}
counter(Vote)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="lowest_​slot"}
counter(Lowest Slot)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="snapshot_​hashes"}
counter(Snapshot Hashes)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="accounts_​hashes"}
counter(Accounts Hashes)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="epoch_​slots"}
counter(Epoch Slots)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="version_​v1"}
counter(Version V1)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="version_​v2"}
counter(Version V2)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="node_​instance"}
counter(Node Instance)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="duplicate_​shred"}
counter(Duplicate Shred)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="incremental_​snapshot_​hashes"}
counter(Incremental Snapshot Hashes)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="contact_​info_​v2"}
counter(Contact Info V2)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="restart_​last_​voted_​fork_​slots"}
counter(Restart Last Voted Fork Slots)
gossip_​crds_​tx_​pull_​response_​bytes
{crds_​value="restart_​heaviest_​fork"}
counter(Restart Heaviest Fork)

Netlnk Tile

MetricTypeDescription
netlnk_​drop_​eventscounterNumber of netlink drop events caught
netlnk_​link_​full_​syncscounterNumber of full link table syncs done
netlnk_​route_​full_​syncscounterNumber of full route table syncs done
netlnk_​updates
{netlink_​msg="link"}
counterNumber of netlink live updates processed (Link)
netlnk_​updates
{netlink_​msg="neigh"}
counterNumber of netlink live updates processed (Neighbor Table Entry)
netlnk_​updates
{netlink_​msg="ipv4_​route"}
counterNumber of netlink live updates processed (IPv4 Route Table Entry)
netlnk_​interface_​countgaugeNumber of network interfaces
netlnk_​route_​count
{route_​table="local"}
gaugeNumber of IPv4 routes (Local)
netlnk_​route_​count
{route_​table="main"}
gaugeNumber of IPv4 routes (Main)
netlnk_​neigh_​probe_​sentcounterNumber of neighbor solicit requests sent to kernel
netlnk_​neigh_​probe_​failscounterNumber of neighbor solicit requests that failed to send (kernel too slow)
netlnk_​neigh_​probe_​rate_​limit_​hostcounterNumber of neighbor solicit that exceeded the per-host rate limit
netlnk_​neigh_​probe_​rate_​limit_​globalcounterNumber of neighbor solicit that exceeded the global rate limit

Sock Tile

MetricTypeDescription
sock_​syscalls_​sendmmsg
{sock_​err="no_​error"}
counterNumber of sendmmsg syscalls dispatched (No error)
sock_​syscalls_​sendmmsg
{sock_​err="slow"}
counterNumber of sendmmsg syscalls dispatched (ENOBUFS, EAGAIN error)
sock_​syscalls_​sendmmsg
{sock_​err="perm"}
counterNumber of sendmmsg syscalls dispatched (EPERM error (blocked by netfilter))
sock_​syscalls_​sendmmsg
{sock_​err="unreach"}
counterNumber of sendmmsg syscalls dispatched (ENETUNREACH, EHOSTUNREACH error)
sock_​syscalls_​sendmmsg
{sock_​err="down"}
counterNumber of sendmmsg syscalls dispatched (ENONET, ENETDOWN, EHOSTDOWN error)
sock_​syscalls_​sendmmsg
{sock_​err="other"}
counterNumber of sendmmsg syscalls dispatched (Unrecognized error code)
sock_​syscalls_​recvmmsgcounterNumber of recvmsg syscalls dispatched
sock_​rx_​pkt_​cntcounterNumber of packets received
sock_​tx_​pkt_​cntcounterNumber of packets sent
sock_​tx_​drop_​cntcounterNumber of packets failed to send
sock_​tx_​bytes_​totalcounterTotal number of bytes transmitted (including Ethernet header).
sock_​rx_​bytes_​totalcounterTotal number of bytes received (including Ethernet header).

Repair Tile

MetricTypeDescription
repair_​total_​pkt_​countcounterHow many network packets we have sent, including reqs, pings, pongs, etc.
repair_​sent_​pkt_​types
{repair_​sent_​request_​types="needed_​window"}
counterWhat types of client messages are we sending (Need Window)
repair_​sent_​pkt_​types
{repair_​sent_​request_​types="needed_​highest_​window"}
counterWhat types of client messages are we sending (Need Highest Window)
repair_​sent_​pkt_​types
{repair_​sent_​request_​types="needed_​orphan"}
counterWhat types of client messages are we sending (Need Orphans)
repair_​sent_​pkt_​types
{repair_​sent_​request_​types="pong"}
counterWhat types of client messages are we sending (Pong)
repair_​repaired_​slotscounterUntil which slots have we fully repaired
repair_​current_​slotcounterOur view of the current cluster slot, max slot received
repair_​request_​peerscounterHow many peers have we requested
repair_​sign_​tile_​unavailcounterHow many times no sign tiles were available to send request
repair_​eager_​repair_​aggressescounterHow many times we pass eager repair threshold
repair_​slot_​complete_​timehistogramTime in seconds it took to complete a slot
repair_​response_​latencyhistogramTime in nanoseconds it took to receive a repair request response
repair_​sign_​duration_​secondshistogramDuration of signing a message

Send Tile

MetricTypeDescription
send_​leader_​not_​foundcounterTotal number of times slot leader not found
send_​unstaked_​cicounterTotal number of times we received contact info for an unstaked node
send_​ci_​removedcounterTotal number of times we removed contact info
send_​new_​contact_​info_​quic_​vote
{new_​contact_​outcome="unroutable"}
counterTotal number of contact infos received and handled for QUIC Vote port (Skipped (unroutable))
send_​new_​contact_​info_​quic_​vote
{new_​contact_​outcome="initialized"}
counterTotal number of contact infos received and handled for QUIC Vote port (Initialized)
send_​new_​contact_​info_​quic_​vote
{new_​contact_​outcome="changed"}
counterTotal number of contact infos received and handled for QUIC Vote port (Contact info changed)
send_​new_​contact_​info_​quic_​vote
{new_​contact_​outcome="no_​change"}
counterTotal number of contact infos received and handled for QUIC Vote port (Contact info unchanged)
send_​new_​contact_​info_​quic_​tpu
{new_​contact_​outcome="unroutable"}
counterTotal number of contact infos received and handled for QUIC TPU port (Skipped (unroutable))
send_​new_​contact_​info_​quic_​tpu
{new_​contact_​outcome="initialized"}
counterTotal number of contact infos received and handled for QUIC TPU port (Initialized)
send_​new_​contact_​info_​quic_​tpu
{new_​contact_​outcome="changed"}
counterTotal number of contact infos received and handled for QUIC TPU port (Contact info changed)
send_​new_​contact_​info_​quic_​tpu
{new_​contact_​outcome="no_​change"}
counterTotal number of contact infos received and handled for QUIC TPU port (Contact info unchanged)
send_​new_​contact_​info_​udp_​vote
{new_​contact_​outcome="unroutable"}
counterTotal number of contact infos received and handled for UDP Vote port (Skipped (unroutable))
send_​new_​contact_​info_​udp_​vote
{new_​contact_​outcome="initialized"}
counterTotal number of contact infos received and handled for UDP Vote port (Initialized)
send_​new_​contact_​info_​udp_​vote
{new_​contact_​outcome="changed"}
counterTotal number of contact infos received and handled for UDP Vote port (Contact info changed)
send_​new_​contact_​info_​udp_​vote
{new_​contact_​outcome="no_​change"}
counterTotal number of contact infos received and handled for UDP Vote port (Contact info unchanged)
send_​new_​contact_​info_​udp_​tpu
{new_​contact_​outcome="unroutable"}
counterTotal number of contact infos received and handled for UDP TPU port (Skipped (unroutable))
send_​new_​contact_​info_​udp_​tpu
{new_​contact_​outcome="initialized"}
counterTotal number of contact infos received and handled for UDP TPU port (Initialized)
send_​new_​contact_​info_​udp_​tpu
{new_​contact_​outcome="changed"}
counterTotal number of contact infos received and handled for UDP TPU port (Contact info changed)
send_​new_​contact_​info_​udp_​tpu
{new_​contact_​outcome="no_​change"}
counterTotal number of contact infos received and handled for UDP TPU port (Contact info unchanged)
send_​send_​result_​quic_​vote
{txn_​send_​result="success"}
counterTotal count of results from trying to send via QUIC Vote port (Success)
send_​send_​result_​quic_​vote
{txn_​send_​result="no_​ci"}
counterTotal count of results from trying to send via QUIC Vote port (No contact info)
send_​send_​result_​quic_​vote
{txn_​send_​result="no_​conn"}
counterTotal count of results from trying to send via QUIC Vote port (No QUIC connection)
send_​send_​result_​quic_​vote
{txn_​send_​result="no_​stream"}
counterTotal count of results from trying to send via QUIC Vote port (No QUIC stream)
send_​send_​result_​quic_​tpu
{txn_​send_​result="success"}
counterTotal count of results from trying to send via QUIC TPU port (Success)
send_​send_​result_​quic_​tpu
{txn_​send_​result="no_​ci"}
counterTotal count of results from trying to send via QUIC TPU port (No contact info)
send_​send_​result_​quic_​tpu
{txn_​send_​result="no_​conn"}
counterTotal count of results from trying to send via QUIC TPU port (No QUIC connection)
send_​send_​result_​quic_​tpu
{txn_​send_​result="no_​stream"}
counterTotal count of results from trying to send via QUIC TPU port (No QUIC stream)
send_​send_​result_​udp_​vote
{txn_​send_​result="success"}
counterTotal count of results from trying to send via UDP Vote port (Success)
send_​send_​result_​udp_​vote
{txn_​send_​result="no_​ci"}
counterTotal count of results from trying to send via UDP Vote port (No contact info)
send_​send_​result_​udp_​vote
{txn_​send_​result="no_​conn"}
counterTotal count of results from trying to send via UDP Vote port (No QUIC connection)
send_​send_​result_​udp_​vote
{txn_​send_​result="no_​stream"}
counterTotal count of results from trying to send via UDP Vote port (No QUIC stream)
send_​send_​result_​udp_​tpu
{txn_​send_​result="success"}
counterTotal count of results from trying to send via UDP TPU port (Success)
send_​send_​result_​udp_​tpu
{txn_​send_​result="no_​ci"}
counterTotal count of results from trying to send via UDP TPU port (No contact info)
send_​send_​result_​udp_​tpu
{txn_​send_​result="no_​conn"}
counterTotal count of results from trying to send via UDP TPU port (No QUIC connection)
send_​send_​result_​udp_​tpu
{txn_​send_​result="no_​stream"}
counterTotal count of results from trying to send via UDP TPU port (No QUIC stream)
send_​ensure_​conn_​result_​quic_​vote
{send_​ensure_​conn_​result="no_​leader"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC Vote port (No QUIC connection)
send_​ensure_​conn_​result_​quic_​vote
{send_​ensure_​conn_​result="no_​ci"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC Vote port (No contact info)
send_​ensure_​conn_​result_​quic_​vote
{send_​ensure_​conn_​result="new_​connection"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC Vote port (Initiated connection)
send_​ensure_​conn_​result_​quic_​vote
{send_​ensure_​conn_​result="conn_​failed"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC Vote port (Connection failed)
send_​ensure_​conn_​result_​quic_​vote
{send_​ensure_​conn_​result="connected"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC Vote port (Connection exists)
send_​ensure_​conn_​result_​quic_​vote
{send_​ensure_​conn_​result="cooldown"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC Vote port (Connection cooldown)
send_​ensure_​conn_​result_​quic_​tpu
{send_​ensure_​conn_​result="no_​leader"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC TPU port (No QUIC connection)
send_​ensure_​conn_​result_​quic_​tpu
{send_​ensure_​conn_​result="no_​ci"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC TPU port (No contact info)
send_​ensure_​conn_​result_​quic_​tpu
{send_​ensure_​conn_​result="new_​connection"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC TPU port (Initiated connection)
send_​ensure_​conn_​result_​quic_​tpu
{send_​ensure_​conn_​result="conn_​failed"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC TPU port (Connection failed)
send_​ensure_​conn_​result_​quic_​tpu
{send_​ensure_​conn_​result="connected"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC TPU port (Connection exists)
send_​ensure_​conn_​result_​quic_​tpu
{send_​ensure_​conn_​result="cooldown"}
counterTotal count of results from trying to ensure a connection for a leader for QUIC TPU port (Connection cooldown)
send_​handshake_​complete
{send_​quic_​ports="quic_​vote"}
counterTotal number of times we completed a handshake (QUIC Vote port)
send_​handshake_​complete
{send_​quic_​ports="quic_​tpu"}
counterTotal number of times we completed a handshake (QUIC TPU port)
send_​quic_​conn_​final
{send_​quic_​ports="quic_​vote"}
counterTotal number of times QUIC connection closed (QUIC Vote port)
send_​quic_​conn_​final
{send_​quic_​ports="quic_​tpu"}
counterTotal number of times QUIC connection closed (QUIC TPU port)
send_​staked_​no_​cigaugeLast counted # staked accounts without contact info
send_​stale_​cigaugeLast counted # staked accounts with stale contact info
send_​received_​packetscounterTotal count of QUIC packets received
send_​received_​bytescounterTotal bytes received via QUIC
send_​sent_​packetscounterTotal count of QUIC packets sent
send_​sent_​bytescounterTotal bytes sent via QUIC
send_​retry_​sentcounterTotal count of QUIC retry packets sent
send_​connections_​allocgaugeNumber of currently allocated QUIC connections
send_​connections_​state
{quic_​conn_​state="invalid"}
gaugeNumber of QUIC connections in each state (freed)
send_​connections_​state
{quic_​conn_​state="handshake"}
gaugeNumber of QUIC connections in each state (handshaking peer)
send_​connections_​state
{quic_​conn_​state="handshake_​complete"}
gaugeNumber of QUIC connections in each state (handshake complete, confirming with peer)
send_​connections_​state
{quic_​conn_​state="active"}
gaugeNumber of QUIC connections in each state (active connection)
send_​connections_​state
{quic_​conn_​state="peer_​close"}
gaugeNumber of QUIC connections in each state (peer requested close)
send_​connections_​state
{quic_​conn_​state="abort"}
gaugeNumber of QUIC connections in each state (connection terminating due to error)
send_​connections_​state
{quic_​conn_​state="close_​pending"}
gaugeNumber of QUIC connections in each state (connection is closing)
send_​connections_​state
{quic_​conn_​state="dead"}
gaugeNumber of QUIC connections in each state (connection about to be freed)
send_​connections_​createdcounterTotal count of QUIC connections created
send_​connections_​closedcounterTotal count of QUIC connections closed
send_​connections_​abortedcounterTotal count of QUIC connections aborted
send_​connections_​timed_​outcounterTotal count of QUIC connections timed out
send_​connections_​retriedcounterTotal count of QUIC connections retried
send_​connection_​error_​no_​slotscounterTotal count of connection errors due to no slots
send_​connection_​error_​retry_​failcounterTotal count of connection retry failures
send_​pkt_​crypto_​failed
{quic_​enc_​level="initial"}
counterTotal count of packets with crypto failures (initial)
send_​pkt_​crypto_​failed
{quic_​enc_​level="early"}
counterTotal count of packets with crypto failures (early data)
send_​pkt_​crypto_​failed
{quic_​enc_​level="handshake"}
counterTotal count of packets with crypto failures (handshake)
send_​pkt_​crypto_​failed
{quic_​enc_​level="app"}
counterTotal count of packets with crypto failures (app data)
send_​pkt_​no_​key
{quic_​enc_​level="initial"}
counterTotal count of packets with no key (initial)
send_​pkt_​no_​key
{quic_​enc_​level="early"}
counterTotal count of packets with no key (early data)
send_​pkt_​no_​key
{quic_​enc_​level="handshake"}
counterTotal count of packets with no key (handshake)
send_​pkt_​no_​key
{quic_​enc_​level="app"}
counterTotal count of packets with no key (app data)
send_​pkt_​no_​conn
{quic_​pkt_​handle="initial"}
counterTotal count of packets with no connection (initial)
send_​pkt_​no_​conn
{quic_​pkt_​handle="retry"}
counterTotal count of packets with no connection (retry)
send_​pkt_​no_​conn
{quic_​pkt_​handle="handshake"}
counterTotal count of packets with no connection (handshake)
send_​pkt_​no_​conn
{quic_​pkt_​handle="one_​rtt"}
counterTotal count of packets with no connection (1-RTT)
send_​pkt_​tx_​alloc_​failcounterTotal count of packet TX allocation failures
send_​pkt_​net_​header_​invalidcounterTotal count of packets with invalid network headers
send_​pkt_​quic_​header_​invalidcounterTotal count of packets with invalid QUIC headers
send_​pkt_​underszcounterTotal count of undersized packets
send_​pkt_​overszcounterTotal count of oversized packets
send_​pkt_​vernegcounterTotal count of version negotiation packets
send_​pkt_​retransmissions
{quic_​enc_​level="initial"}
counterTotal count of QUIC packet retransmissions. (initial)
send_​pkt_​retransmissions
{quic_​enc_​level="early"}
counterTotal count of QUIC packet retransmissions. (early data)
send_​pkt_​retransmissions
{quic_​enc_​level="handshake"}
counterTotal count of QUIC packet retransmissions. (handshake)
send_​pkt_​retransmissions
{quic_​enc_​level="app"}
counterTotal count of QUIC packet retransmissions. (app data)
send_​handshakes_​createdcounterTotal count of QUIC handshakes created
send_​handshake_​error_​alloc_​failcounterTotal count of handshake allocation failures
send_​handshake_​evictedcounterTotal count of handshakes evicted
send_​stream_​received_​eventscounterTotal count of stream events received
send_​stream_​received_​bytescounterTotal bytes received via streams
send_​received_​frames
{quic_​frame_​type="unknown"}
counterTotal count of QUIC frames received (Unknown frame type)
send_​received_​frames
{quic_​frame_​type="ack"}
counterTotal count of QUIC frames received (ACK frame)
send_​received_​frames
{quic_​frame_​type="reset_​stream"}
counterTotal count of QUIC frames received (RESET_STREAM frame)
send_​received_​frames
{quic_​frame_​type="stop_​sending"}
counterTotal count of QUIC frames received (STOP_SENDING frame)
send_​received_​frames
{quic_​frame_​type="crypto"}
counterTotal count of QUIC frames received (CRYPTO frame)
send_​received_​frames
{quic_​frame_​type="new_​token"}
counterTotal count of QUIC frames received (NEW_TOKEN frame)
send_​received_​frames
{quic_​frame_​type="stream"}
counterTotal count of QUIC frames received (STREAM frame)
send_​received_​frames
{quic_​frame_​type="max_​data"}
counterTotal count of QUIC frames received (MAX_DATA frame)
send_​received_​frames
{quic_​frame_​type="max_​stream_​data"}
counterTotal count of QUIC frames received (MAX_STREAM_DATA frame)
send_​received_​frames
{quic_​frame_​type="max_​streams"}
counterTotal count of QUIC frames received (MAX_STREAMS frame)
send_​received_​frames
{quic_​frame_​type="data_​blocked"}
counterTotal count of QUIC frames received (DATA_BLOCKED frame)
send_​received_​frames
{quic_​frame_​type="stream_​data_​blocked"}
counterTotal count of QUIC frames received (STREAM_DATA_BLOCKED frame)
send_​received_​frames
{quic_​frame_​type="streams_​blocked"}
counterTotal count of QUIC frames received (STREAMS_BLOCKED(bidi) frame)
send_​received_​frames
{quic_​frame_​type="new_​conn_​id"}
counterTotal count of QUIC frames received (NEW_CONN_ID frame)
send_​received_​frames
{quic_​frame_​type="retire_​conn_​id"}
counterTotal count of QUIC frames received (RETIRE_CONN_ID frame)
send_​received_​frames
{quic_​frame_​type="path_​challenge"}
counterTotal count of QUIC frames received (PATH_CHALLENGE frame)
send_​received_​frames
{quic_​frame_​type="path_​response"}
counterTotal count of QUIC frames received (PATH_RESPONSE frame)
send_​received_​frames
{quic_​frame_​type="conn_​close_​quic"}
counterTotal count of QUIC frames received (CONN_CLOSE(transport) frame)
send_​received_​frames
{quic_​frame_​type="conn_​close_​app"}
counterTotal count of QUIC frames received (CONN_CLOSE(app) frame)
send_​received_​frames
{quic_​frame_​type="handshake_​done"}
counterTotal count of QUIC frames received (HANDSHAKE_DONE frame)
send_​received_​frames
{quic_​frame_​type="ping"}
counterTotal count of QUIC frames received (PING frame)
send_​received_​frames
{quic_​frame_​type="padding"}
counterTotal count of QUIC frames received (PADDING frame)
send_​frame_​fail_​parsecounterTotal count of frame parse failures
send_​frame_​tx_​alloc
{frame_​tx_​alloc_​result="success"}
counterResults of attempts to acquire QUIC frame metadata. (Success)
send_​frame_​tx_​alloc
{frame_​tx_​alloc_​result="fail_​empty_​pool"}
counterResults of attempts to acquire QUIC frame metadata. (PktMetaPoolEmpty)
send_​frame_​tx_​alloc
{frame_​tx_​alloc_​result="fail_​conn_​max"}
counterResults of attempts to acquire QUIC frame metadata. (ConnMaxedInflightFrames)
send_​ack_​tx
{quic_​ack_​tx="noop"}
counterTotal count of ACK frames transmitted (non-ACK-eliciting packet)
send_​ack_​tx
{quic_​ack_​tx="new"}
counterTotal count of ACK frames transmitted (new ACK range)
send_​ack_​tx
{quic_​ack_​tx="merged"}
counterTotal count of ACK frames transmitted (merged into existing ACK range)
send_​ack_​tx
{quic_​ack_​tx="drop"}
counterTotal count of ACK frames transmitted (out of buffers)
send_​ack_​tx
{quic_​ack_​tx="cancel"}
counterTotal count of ACK frames transmitted (ACK suppressed by handler)
send_​service_​duration_​secondshistogramDuration spent in service
send_​receive_​duration_​secondshistogramDuration spent processing packets
send_​sign_​duration_​nanoshistogramDuration spent waiting for tls_cv signatures

Snapct Tile

MetricTypeDescription
snapct_​stategaugeState of the tile
snapct_​full_​num_​retriescounterNumber of times we aborted and retried full snapshot download because the peer was too slow
snapct_​incremental_​num_​retriescounterNumber of times we aborted and retried incremental snapshot download because the peer was too slow
snapct_​full_​bytes_​readgaugeNumber of bytes read so far from the full snapshot. Might decrease if snapshot load is aborted and restarted
snapct_​full_​bytes_​writtengaugeNumber of bytes written so far from the full snapshot. Might decrease if snapshot load is aborted and restarted
snapct_​full_​bytes_​totalgaugeTotal size of the full snapshot file. Might change if snapshot load is aborted and restarted
snapct_​full_​download_​retriesgaugeNumber of times we retried the full snapshot download because the peer was too slow
snapct_​incremental_​bytes_​readgaugeNumber of bytes read so far from the incremental snapshot. Might decrease if snapshot load is aborted and restarted
snapct_​incremental_​bytes_​writtengaugeNumber of bytes written so far from the incremental snapshot. Might decrease if snapshot load is aborted and restarted
snapct_​incremental_​bytes_​totalgaugeTotal size of the incremental snapshot file. Might change if snapshot load is aborted and restarted
snapct_​incremental_​download_​retriesgaugeNumber of times we retried the incremental snapshot download because the peer was too slow
snapct_​predicted_​slotgaugeThe predicted slot from which replay starts after snapshot loading finishes. Might change if snapshot load is aborted and restarted
snapct_​gossip_​fresh_​countgaugeNumber of fresh gossip peers seen when collecting gossip peers.
snapct_​gossip_​total_​countgaugeNumber of total gossip peers seen when collecting gossip peers.

Snapld Tile

MetricTypeDescription
snapld_​stategaugeState of the tile. 0=IDLE, 1=PROCESSING, 2=FINISHING, 3=ERROR, 4=SHUTDOWN

Snapdc Tile

MetricTypeDescription
snapdc_​stategaugeState of the tile. 0=IDLE, 1=PROCESSING, 2=FINISHING, 3=ERROR, 4=SHUTDOWN
snapdc_​full_​compressed_​bytes_​readgaugeNumber of bytes read so far from the compressed full snapshot file. Might decrease if snapshot load is aborted and restarted
snapdc_​full_​decompressed_​bytes_​readgaugeNumber of bytes read so far from the decompressed file. Might decrease if snapshot load is aborted and restarted
snapdc_​incremental_​compressed_​bytes_​readgaugeNumber of bytes read so far from the compressed incremental snapshot file. Might decrease if snapshot load is aborted and restarted
snapdc_​incremental_​decompressed_​bytes_​readgaugeNumber of bytes read so far from the decompressed incremental snapshot file. Might decrease if snapshot load is aborted and restarted

Snapin Tile

MetricTypeDescription
snapin_​stategaugeState of the tile. 0=IDLE, 1=PROCESSING, 2=FINISHING, 3=ERROR, 4=SHUTDOWN
snapin_​full_​bytes_​readgaugeNumber of bytes read so far from the full snapshot. Might decrease if snapshot load is aborted and restarted
snapin_​incremental_​bytes_​readgaugeNumber of bytes read so far from the incremental snapshot. Might decrease if snapshot load is aborted and restarted
snapin_​accounts_​insertedgaugeNumber of accounts inserted during snapshot loading. Might decrease if snapshot load is aborted and restarted

Ipecho Tile

MetricTypeDescription
ipecho_​shred_​versiongaugeThe current shred version used by the validator
ipecho_​connection_​countgaugeThe number of active connections to the ipecho service
ipecho_​connections_​closed_​okcounterThe number of connections to the ipecho service that have been made and closed normally
ipecho_​connections_​closed_​errorcounterThe number of connections to the ipecho service that have been made and closed abnormally
ipecho_​bytes_​readcounterThe total number of bytes read from all connections to the ipecho service
ipecho_​bytes_​writtencounterThe total number of bytes written to all connections to the ipecho service

Gossvf Tile

MetricTypeDescription
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="success_​pull_​request"}
counter(Pull Request (success))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="success_​pull_​response"}
counter(Pull Response (success))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="success_​push"}
counter(Push (success))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="success_​prune"}
counter(Prune (success))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="success_​ping"}
counter(Ping (success))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="success_​pong"}
counter(Pong (success))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​unparseable"}
counter(Unparseable)
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​pull_​request_​not_​contact_​info"}
counter(Pull Request (not contact info))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​pull_​request_​loopback"}
counter(Pull Request (loopback))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​pull_​request_​inactive"}
counter(Pull Request (inactive))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​pull_​request_​wallclock"}
counter(Pull Request (wallclock))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​pull_​request_​signature"}
counter(Pull Request (signature))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​pull_​request_​shred_​version"}
counter(Pull Request (shred version))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​prune_​destination"}
counter(Prune (destination))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​prune_​wallclock"}
counter(Prune (wallclock))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​prune_​signature"}
counter(Prune (signature))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​push_​no_​valid_​crds"}
counter(Push (no valid crds))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​pull_​response_​no_​valid_​crds"}
counter(Pull Response (no valid crds))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​ping_​signature"}
counter(Ping (signature))
gossvf_​message_​rx_​count
{gossvf_​message_​outcome="dropped_​pong_​signature"}
counter(Pong (signature))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="success_​pull_​request"}
counter(Pull Request (success))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="success_​pull_​response"}
counter(Pull Response (success))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="success_​push"}
counter(Push (success))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="success_​prune"}
counter(Prune (success))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="success_​ping"}
counter(Ping (success))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="success_​pong"}
counter(Pong (success))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​unparseable"}
counter(Unparseable)
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​pull_​request_​not_​contact_​info"}
counter(Pull Request (not contact info))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​pull_​request_​loopback"}
counter(Pull Request (loopback))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​pull_​request_​inactive"}
counter(Pull Request (inactive))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​pull_​request_​wallclock"}
counter(Pull Request (wallclock))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​pull_​request_​signature"}
counter(Pull Request (signature))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​pull_​request_​shred_​version"}
counter(Pull Request (shred version))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​prune_​destination"}
counter(Prune (destination))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​prune_​wallclock"}
counter(Prune (wallclock))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​prune_​signature"}
counter(Prune (signature))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​push_​no_​valid_​crds"}
counter(Push (no valid crds))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​pull_​response_​no_​valid_​crds"}
counter(Pull Response (no valid crds))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​ping_​signature"}
counter(Ping (signature))
gossvf_​message_​rx_​bytes
{gossvf_​message_​outcome="dropped_​pong_​signature"}
counter(Pong (signature))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="success_​pull_​response"}
counter(Pull Response (success))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="success_​push"}
counter(Push (success))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​pull_​response_​duplicate"}
counter(Pull Response (duplicate))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​pull_​response_​signature"}
counter(Pull Response (signature))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​pull_​response_​relayer_​no_​contact_​info"}
counter(Pull Response (relayer no contact info))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​pull_​response_​relayer_​shred_​version"}
counter(Pull Response (relayer shred version))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​pull_​response_​origin_​no_​contact_​info"}
counter(Pull Response (origin no contact info))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​pull_​response_​origin_​shred_​version"}
counter(Pull Response (origin shred version))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​pull_​response_​inactive"}
counter(Pull Response (inactive))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​push_​signature"}
counter(Push (signature))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​push_​relayer_​no_​contact_​info"}
counter(Push (relayer no contact info))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​push_​relayer_​shred_​version"}
counter(Push (relayer shred version))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​push_​origin_​no_​contact_​info"}
counter(Push (origin no contact info))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​push_​origin_​shred_​version"}
counter(Push (origin shred version))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​push_​inactive"}
counter(Push (inactive))
gossvf_​crds_​rx_​count
{gossvf_​crds_​outcome="dropped_​push_​wallclock"}
counter(Push (wallclock))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="success_​pull_​response"}
counter(Pull Response (success))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="success_​push"}
counter(Push (success))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​pull_​response_​duplicate"}
counter(Pull Response (duplicate))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​pull_​response_​signature"}
counter(Pull Response (signature))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​pull_​response_​relayer_​no_​contact_​info"}
counter(Pull Response (relayer no contact info))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​pull_​response_​relayer_​shred_​version"}
counter(Pull Response (relayer shred version))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​pull_​response_​origin_​no_​contact_​info"}
counter(Pull Response (origin no contact info))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​pull_​response_​origin_​shred_​version"}
counter(Pull Response (origin shred version))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​pull_​response_​inactive"}
counter(Pull Response (inactive))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​push_​signature"}
counter(Push (signature))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​push_​relayer_​no_​contact_​info"}
counter(Push (relayer no contact info))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​push_​relayer_​shred_​version"}
counter(Push (relayer shred version))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​push_​origin_​no_​contact_​info"}
counter(Push (origin no contact info))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​push_​origin_​shred_​version"}
counter(Push (origin shred version))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​push_​inactive"}
counter(Push (inactive))
gossvf_​crds_​rx_​bytes
{gossvf_​crds_​outcome="dropped_​push_​wallclock"}
counter(Push (wallclock))

Bankf Tile

MetricTypeDescription
bankf_​transaction_​result
{transaction_​result="success"}
counterResult of loading and executing a transaction. (Transaction executed successfully)
bankf_​transaction_​result
{transaction_​result="instructon_​error"}
counterResult of loading and executing a transaction. (An error occurred while processing an instruction)
bankf_​transaction_​result
{transaction_​result="account_​not_​found"}
counterResult of loading and executing a transaction. (The transaction fee payer address was not found)
bankf_​transaction_​result
{transaction_​result="program_​account_​not_​found"}
counterResult of loading and executing a transaction. (A program account referenced by the transaction was not found)
bankf_​transaction_​result
{transaction_​result="insufficient_​funds_​for_​fee"}
counterResult of loading and executing a transaction. (The transaction fee payer did not have balance to pay the fee)
bankf_​transaction_​result
{transaction_​result="invalid_​account_​for_​fee"}
counterResult of loading and executing a transaction. (The transaction fee payer account is not owned by the system program, or has data that is not a nonce)
bankf_​transaction_​result
{transaction_​result="already_​processed"}
counterResult of loading and executing a transaction. (The transaction has already been processed in a recent block)
bankf_​transaction_​result
{transaction_​result="blockhash_​not_​found"}
counterResult of loading and executing a transaction. (The transaction references a blockhash that is not recent, or advances a nonce with the wrong value)
bankf_​transaction_​result
{transaction_​result="invalid_​program_​for_​execution"}
counterResult of loading and executing a transaction. (A program account referenced by the transaction was no executable. TODO: No longer needed with SIMD-0162)
bankf_​transaction_​result
{transaction_​result="address_​lookup_​table_​not_​found"}
counterResult of loading and executing a transaction. (The transaction references an ALUT account that does not exist or is inactive)
bankf_​transaction_​result
{transaction_​result="invalid_​address_​lookup_​table_​owner"}
counterResult of loading and executing a transaction. (The transaction references an ALUT account that is not owned by the ALUT program account)
bankf_​transaction_​result
{transaction_​result="invalid_​address_​lookup_​table_​data"}
counterResult of loading and executing a transaction. (The transaction references an ALUT account that contains data which is not a valid ALUT)
bankf_​transaction_​result
{transaction_​result="invalid_​address_​lookup_​table_​index"}
counterResult of loading and executing a transaction. (The transaction references an account offset from the ALUT which does not exist)
bankf_​transaction_​result
{transaction_​result="max_​loaded_​accounts_​data_​size_​exceeded"}
counterResult of loading and executing a transaction. (The total account data size of the loaded accounts exceeds the consensus limit)
bankf_​transaction_​result
{transaction_​result="duplicate_​instruction"}
counterResult of loading and executing a transaction. (A compute budget program instruction was invoked more than once)
bankf_​transaction_​result
{transaction_​result="invalid_​loaded_​accounts_​data_​size_​limit"}
counterResult of loading and executing a transaction. (The compute budget program was invoked and set the loaded accounts data size to zero)
bankf_​transaction_​result
{transaction_​result="account_​in_​use"}
counterResult of loading and executing a transaction. (The transaction conflicts with another transaction in the microblock. TODO: No longer possible with smart dispatcher)
bankf_​transaction_​result
{transaction_​result="account_​loaded_​twice"}
counterResult of loading and executing a transaction. (The transaction references the same account twice)
bankf_​transaction_​result
{transaction_​result="signature_​failure"}
counterResult of loading and executing a transaction. (The transaction had an invalid signature)
bankf_​transaction_​result
{transaction_​result="too_​many_​account_​locks"}
counterResult of loading and executing a transaction. (The transaction references too many accounts. TODO: No longer possible with smart dispatcher)
bankf_​transaction_​result
{transaction_​result="insufficient_​funds_​for_​rent"}
counterResult of loading and executing a transaction. (The transaction would leave an account with a lower balance than the rent-exempt minimum)
bankf_​transaction_​result
{transaction_​result="unbalanced_​transaction"}
counterResult of loading and executing a transaction. (The total referenced account lamports before and after the transaction was unbalanced)
bankf_​transaction_​result
{transaction_​result="bundle_​peer"}
counterResult of loading and executing a transaction. (The transaction was part of a bundle and an earlier transaction in the bundle failed)

Resolf Tile

MetricTypeDescription
resolf_​no_​bank_​dropcounterCount of transactions dropped because the bank was not available
resolf_​stash_​operation
{resolve_​stash_​operation="inserted"}
counterCount of operations that happened on the transaction stash (A transaction with an unknown blockhash was added to the stash)
resolf_​stash_​operation
{resolve_​stash_​operation="overrun"}
counterCount of operations that happened on the transaction stash (A transaction with an unknown blockhash was dropped because the stash was full)
resolf_​stash_​operation
{resolve_​stash_​operation="published"}
counterCount of operations that happened on the transaction stash (A transaction with an unknown blockhash was published as the blockhash became known)
resolf_​stash_​operation
{resolve_​stash_​operation="removed"}
counterCount of operations that happened on the transaction stash (A transaction with an unknown blockhash was removed from the stash without publishing, due to a bad LUT resolved failure, or no bank. These errors are double counted with the respective metrics for those categories.)
resolf_​lut_​resolved
{lut_​resolve_​result="invalid_​lookup_​index"}
counterCount of address lookup tables resolved (The transaction referenced an index in a LUT that didn't exist)
resolf_​lut_​resolved
{lut_​resolve_​result="account_​uninitialized"}
counterCount of address lookup tables resolved (The account referenced as a LUT hasn't been initialized)
resolf_​lut_​resolved
{lut_​resolve_​result="invalid_​account_​data"}
counterCount of address lookup tables resolved (The account referenced as a LUT couldn't be parsed)
resolf_​lut_​resolved
{lut_​resolve_​result="invalid_​account_​owner"}
counterCount of address lookup tables resolved (The account referenced as a LUT wasn't owned by the ALUT program ID)
resolf_​lut_​resolved
{lut_​resolve_​result="account_​not_​found"}
counterCount of address lookup tables resolved (The account referenced as a LUT couldn't be found)
resolf_​lut_​resolved
{lut_​resolve_​result="success"}
counterCount of address lookup tables resolved (Resolved successfully)
resolf_​blockhash_​expiredcounterCount of transactions that failed to resolve because the blockhash was expired
resolf_​transaction_​bundle_​peer_​failurecounterCount of transactions that failed to resolve because a peer transaction in the bundle failed
resolf_​db_​racescounterNumber of database races encountered (diagnostic counter, not indicative of issues)

Backt Tile

MetricTypeDescription
backt_​final_​slotgaugeThe slot after which the backtest will complete
backt_​start_​slotgaugeThe slot at which the backtest started

Exec Tile

MetricTypeDescription
exec_​progcache_​missescounterNumber of program cache misses
exec_​progcache_​hitscounterNumber of program cache hits
exec_​progcache_​fillscounterNumber of program cache insertions
exec_​progcache_​fill_​tot_​szcounterTotal number of bytes inserted into program cache
exec_​progcache_​fill_​failscounterNumber of program cache load fails (tombstones inserted)
exec_​progcache_​dup_​insertscounterNumber of time two tiles raced to insert the same cache entry
exec_​progcache_​invalidationscounterNumber of program cache invalidations

Snapwr Tile

MetricTypeDescription
snapwr_​stategaugeState of the tile. 0=IDLE, 1=PROCESSING, 4=SHUTDOWN
snapwr_​vinyl_​bytes_​writtengaugeNumber of bytes written so far to the vinyl snapshot file. Might decrease if snapshot creation is aborted and restarted