> ## Documentation Index
> Fetch the complete documentation index at: https://cockroachlabs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Metrics

export const InternalLink = ({version, path = "", children, ...props}) => {
  let detectedVersion = version || "stable";
  if (typeof window !== 'undefined' && !version) {
    const match = window.location.pathname.match(/\/docs\/([^/]+)/);
    if (match) {
      detectedVersion = match[1];
    }
  }
  const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
  return <a href={`/docs/${detectedVersion}/${normalizedPath}`} {...props}>
      {children}
    </a>;
};

As part of normal operation, CockroachDB continuously records metrics that track performance, latency, usage, and many other runtime indicators. These metrics are often useful in diagnosing problems, troubleshooting performance, or planning cluster infrastructure modifications. This page documents locations where metrics are exposed for analysis.

## Available metrics

<table className="crdb-fixed-table"><thead><tr><th style={{width: "24%"}}>CockroachDB Metric Name</th><th style={{width: "38%"}}>Description</th><th style={{width: "10%"}}>Type</th><th style={{width: "10%"}}>Unit</th><th style={{width: "18%"}}>Supported Deployments</th></tr></thead><tbody> <tr><td><div id="addsstable.applications" class="anchored"><code>addsstable.applications</code></div></td><td>Number of SSTable ingestions applied (i.e. applied by Replicas)</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="addsstable.copies" class="anchored"><code>addsstable.copies</code></div></td><td>number of SSTable ingestions that required copying files during application</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="addsstable.proposals" class="anchored"><code>addsstable.proposals</code></div></td><td>Number of SSTable ingestions proposed (i.e. sent to Raft by lease holders)</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="admission.io.overload" class="anchored"><code>admission.io.overload</code></div></td><td>1-normalized float indicating whether IO admission control considers the store as overloaded with respect to compaction out of L0 (considers sub-level and file counts).</td><td>GAUGE</td><td>PERCENT</td><td>self-hosted</td></tr> <tr><td><div id="auth.cert.conn.latency" class="anchored"><code>auth.cert.conn.latency</code></div></td><td>Latency to establish and authenticate a SQL connection using certificate</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>self-hosted</td></tr> <tr><td><div id="auth.gss.conn.latency" class="anchored"><code>auth.gss.conn.latency</code></div></td><td>Latency to establish and authenticate a SQL connection using GSS</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>self-hosted</td></tr> <tr><td><div id="auth.jwt.conn.latency" class="anchored"><code>auth.jwt.conn.latency</code></div></td><td>Latency to establish and authenticate a SQL connection using JWT Token</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>self-hosted</td></tr> <tr><td><div id="auth.ldap.conn.latency" class="anchored"><code>auth.ldap.conn.latency</code></div></td><td>Latency to establish and authenticate a SQL connection using LDAP</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>self-hosted</td></tr> <tr><td><div id="auth.password.conn.latency" class="anchored"><code>auth.password.conn.latency</code></div></td><td>Latency to establish and authenticate a SQL connection using password</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>self-hosted</td></tr> <tr><td><div id="auth.scram.conn.latency" class="anchored"><code>auth.scram.conn.latency</code></div></td><td>Latency to establish and authenticate a SQL connection using SCRAM</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>self-hosted</td></tr> <tr><td><div id="build.timestamp" class="anchored"><code>build.timestamp</code></div></td><td>Build information</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="capacity" class="anchored"><code>capacity</code></div></td><td>Total storage capacity</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="capacity.available" class="anchored"><code>capacity.available</code></div></td><td>Available storage capacity</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="capacity.reserved" class="anchored"><code>capacity.reserved</code></div></td><td>Capacity reserved for snapshots</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="capacity.used" class="anchored"><code>capacity.used</code></div></td><td>Used storage capacity</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="changefeed.aggregator_progress" class="anchored"><code>changefeed.aggregator\_progress</code></div></td><td>The earliest timestamp up to which any aggregator is guaranteed to have emitted all values for</td><td>GAUGE</td><td>TIMESTAMP\_NS</td><td>self-hosted</td></tr> <tr><td><div id="changefeed.backfill_count" class="anchored"><code>changefeed.backfill\_count</code></div></td><td>Number of changefeeds currently executing backfill</td><td>GAUGE</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="changefeed.backfill_pending_ranges" class="anchored"><code>changefeed.backfill\_pending\_ranges</code></div></td><td>Number of ranges in an ongoing backfill that are yet to be fully emitted</td><td>GAUGE</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="changefeed.checkpoint_progress" class="anchored"><code>changefeed.checkpoint\_progress</code></div></td><td>The earliest timestamp of any changefeed's persisted checkpoint (values prior to this timestamp will never need to be re-emitted)</td><td>GAUGE</td><td>TIMESTAMP\_NS</td><td>self-hosted</td></tr> <tr><td><div id="changefeed.commit_latency" class="anchored"><code>changefeed.commit\_latency</code></div></td><td>Event commit latency: a difference between event MVCC timestamp and the time it was acknowledged by the downstream sink.  If the sink batches events,  then the difference between the oldest event in the batch and acknowledgement is recorded; Excludes latency during backfill</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="changefeed.emitted_bytes" class="anchored"><code>changefeed.emitted\_bytes</code></div></td><td>Bytes emitted by all feeds</td><td>COUNTER</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="changefeed.emitted_messages" class="anchored"><code>changefeed.emitted\_messages</code></div></td><td>Messages emitted by all feeds</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="changefeed.error_retries" class="anchored"><code>changefeed.error\_retries</code></div></td><td>Total retryable errors encountered by all changefeeds</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="changefeed.failures" class="anchored"><code>changefeed.failures</code></div></td><td>Total number of changefeed jobs which have failed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="changefeed.lagging_ranges" class="anchored"><code>changefeed.lagging\_ranges</code></div></td><td>The number of ranges considered to be lagging behind</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="changefeed.max_behind_nanos" class="anchored"><code>changefeed.max\_behind\_nanos</code></div></td><td>The most any changefeed's persisted checkpoint is behind the present</td><td>GAUGE</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="changefeed.message_size_hist" class="anchored"><code>changefeed.message\_size\_hist</code></div></td><td>Message size histogram</td><td>HISTOGRAM</td><td>BYTES</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="changefeed.running" class="anchored"><code>changefeed.running</code></div></td><td>Number of currently running changefeeds, including sinkless</td><td>GAUGE</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="clock-offset.meannanos" class="anchored"><code>clock-offset.meannanos</code></div></td><td>Mean clock offset with other nodes</td><td>GAUGE</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="clock-offset.stddevnanos" class="anchored"><code>clock-offset.stddevnanos</code></div></td><td>Stddev clock offset with other nodes</td><td>GAUGE</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="cluster.preserve-downgrade-option.last-updated" class="anchored"><code>cluster.preserve-downgrade-option.last-updated</code></div></td><td>Unix timestamp of last updated time for cluster.preserve\_downgrade\_option</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="distsender.batches" class="anchored"><code>distsender.batches</code></div></td><td>Number of batches processed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="distsender.batches.partial" class="anchored"><code>distsender.batches.partial</code></div></td><td>Number of partial batches processed after being divided on range boundaries</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="distsender.errors.notleaseholder" class="anchored"><code>distsender.errors.notleaseholder</code></div></td><td>Number of NotLeaseHolderErrors encountered from replica-addressed RPCs</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="distsender.rpc.sent" class="anchored"><code>distsender.rpc.sent</code></div></td><td>Number of replica-addressed RPCs sent</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="distsender.rpc.sent.local" class="anchored"><code>distsender.rpc.sent.local</code></div></td><td>Number of replica-addressed RPCs sent through the local-server optimization</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="distsender.rpc.sent.nextreplicaerror" class="anchored"><code>distsender.rpc.sent.nextreplicaerror</code></div></td><td>Number of replica-addressed RPCs sent due to per-replica errors</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="exec.error" class="anchored"><code>exec.error</code></div></td><td>Number of batch KV requests that failed to execute on this node. This count excludes transaction restart/abort errors. However, it will include other errors expected during normal operation, such as ConditionFailedError. This metric is thus not an indicator of KV health.</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="exec.latency" class="anchored"><code>exec.latency</code></div></td><td>Latency of batch KV requests (including errors) executed on this node. This measures requests already addressed to a single replica, from the moment at which they arrive at the internal gRPC endpoint to the moment at which the response (or an error) is returned. This latency includes in particular commit waits, conflict resolution and replication, and end-users can easily produce high measurements via long-running transactions that conflict with foreground traffic. This metric thus does not provide a good signal for understanding the health of the KV layer. </td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="exec.success" class="anchored"><code>exec.success</code></div></td><td>Number of batch KV requests executed successfully on this node. A request is considered to have executed 'successfully' if it either returns a result or a transaction restart/abort error. </td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="gcbytesage" class="anchored"><code>gcbytesage</code></div></td><td>Cumulative age of non-live data</td><td>GAUGE</td><td>SECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="gossip.bytes.received" class="anchored"><code>gossip.bytes.received</code></div></td><td>Number of received gossip bytes</td><td>COUNTER</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="gossip.bytes.sent" class="anchored"><code>gossip.bytes.sent</code></div></td><td>Number of sent gossip bytes</td><td>COUNTER</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="gossip.connections.incoming" class="anchored"><code>gossip.connections.incoming</code></div></td><td>Number of active incoming gossip connections</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="gossip.connections.outgoing" class="anchored"><code>gossip.connections.outgoing</code></div></td><td>Number of active outgoing gossip connections</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="gossip.connections.refused" class="anchored"><code>gossip.connections.refused</code></div></td><td>Number of refused incoming gossip connections</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="gossip.infos.received" class="anchored"><code>gossip.infos.received</code></div></td><td>Number of received gossip Info objects</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="gossip.infos.sent" class="anchored"><code>gossip.infos.sent</code></div></td><td>Number of sent gossip Info objects</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="intentage" class="anchored"><code>intentage</code></div></td><td>Cumulative age of locks</td><td>GAUGE</td><td>SECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="intentbytes" class="anchored"><code>intentbytes</code></div></td><td>Number of bytes in intent KV pairs</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="intentcount" class="anchored"><code>intentcount</code></div></td><td>Count of intent keys</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.auto_config_env_runner.currently_paused" class="anchored"><code>jobs.auto\_config\_env\_runner.currently\_paused</code></div></td><td>Number of auto\_config\_env\_runner jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_config_env_runner.protected_age_sec" class="anchored"><code>jobs.auto\_config\_env\_runner.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by auto\_config\_env\_runner jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_config_env_runner.protected_record_count" class="anchored"><code>jobs.auto\_config\_env\_runner.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by auto\_config\_env\_runner jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_config_runner.currently_paused" class="anchored"><code>jobs.auto\_config\_runner.currently\_paused</code></div></td><td>Number of auto\_config\_runner jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_config_runner.protected_age_sec" class="anchored"><code>jobs.auto\_config\_runner.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by auto\_config\_runner jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_config_runner.protected_record_count" class="anchored"><code>jobs.auto\_config\_runner.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by auto\_config\_runner jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_config_task.currently_paused" class="anchored"><code>jobs.auto\_config\_task.currently\_paused</code></div></td><td>Number of auto\_config\_task jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_config_task.protected_age_sec" class="anchored"><code>jobs.auto\_config\_task.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by auto\_config\_task jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_config_task.protected_record_count" class="anchored"><code>jobs.auto\_config\_task.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by auto\_config\_task jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_create_partial_stats.currently_paused" class="anchored"><code>jobs.auto\_create\_partial\_stats.currently\_paused</code></div></td><td>Number of auto\_create\_partial\_stats jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_create_partial_stats.protected_age_sec" class="anchored"><code>jobs.auto\_create\_partial\_stats.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by auto\_create\_partial\_stats jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_create_partial_stats.protected_record_count" class="anchored"><code>jobs.auto\_create\_partial\_stats.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by auto\_create\_partial\_stats jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_create_stats.currently_paused" class="anchored"><code>jobs.auto\_create\_stats.currently\_paused</code></div></td><td>Number of auto\_create\_stats jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_create_stats.currently_running" class="anchored"><code>jobs.auto\_create\_stats.currently\_running</code></div></td><td>Number of auto\_create\_stats jobs currently running in Resume or OnFailOrCancel state</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_create_stats.protected_age_sec" class="anchored"><code>jobs.auto\_create\_stats.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by auto\_create\_stats jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_create_stats.protected_record_count" class="anchored"><code>jobs.auto\_create\_stats.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by auto\_create\_stats jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_create_stats.resume_failed" class="anchored"><code>jobs.auto\_create\_stats.resume\_failed</code></div></td><td>Number of auto\_create\_stats jobs which failed with a non-retriable error</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_schema_telemetry.currently_paused" class="anchored"><code>jobs.auto\_schema\_telemetry.currently\_paused</code></div></td><td>Number of auto\_schema\_telemetry jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_schema_telemetry.protected_age_sec" class="anchored"><code>jobs.auto\_schema\_telemetry.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by auto\_schema\_telemetry jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_schema_telemetry.protected_record_count" class="anchored"><code>jobs.auto\_schema\_telemetry.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by auto\_schema\_telemetry jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_span_config_reconciliation.currently_paused" class="anchored"><code>jobs.auto\_span\_config\_reconciliation.currently\_paused</code></div></td><td>Number of auto\_span\_config\_reconciliation jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_span_config_reconciliation.protected_age_sec" class="anchored"><code>jobs.auto\_span\_config\_reconciliation.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by auto\_span\_config\_reconciliation jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_span_config_reconciliation.protected_record_count" class="anchored"><code>jobs.auto\_span\_config\_reconciliation.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by auto\_span\_config\_reconciliation jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_sql_stats_compaction.currently_paused" class="anchored"><code>jobs.auto\_sql\_stats\_compaction.currently\_paused</code></div></td><td>Number of auto\_sql\_stats\_compaction jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_sql_stats_compaction.protected_age_sec" class="anchored"><code>jobs.auto\_sql\_stats\_compaction.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by auto\_sql\_stats\_compaction jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_sql_stats_compaction.protected_record_count" class="anchored"><code>jobs.auto\_sql\_stats\_compaction.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by auto\_sql\_stats\_compaction jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_update_sql_activity.currently_paused" class="anchored"><code>jobs.auto\_update\_sql\_activity.currently\_paused</code></div></td><td>Number of auto\_update\_sql\_activity jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_update_sql_activity.protected_age_sec" class="anchored"><code>jobs.auto\_update\_sql\_activity.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by auto\_update\_sql\_activity jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.auto_update_sql_activity.protected_record_count" class="anchored"><code>jobs.auto\_update\_sql\_activity.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by auto\_update\_sql\_activity jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.backup.currently_paused" class="anchored"><code>jobs.backup.currently\_paused</code></div></td><td>Number of backup jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.backup.currently_running" class="anchored"><code>jobs.backup.currently\_running</code></div></td><td>Number of backup jobs currently running in Resume or OnFailOrCancel state</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.backup.protected_age_sec" class="anchored"><code>jobs.backup.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by backup jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.backup.protected_record_count" class="anchored"><code>jobs.backup.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by backup jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.changefeed.currently_paused" class="anchored"><code>jobs.changefeed.currently\_paused</code></div></td><td>Number of changefeed jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.changefeed.expired_pts_records" class="anchored"><code>jobs.changefeed.expired\_pts\_records</code></div></td><td>Number of expired protected timestamp records owned by changefeed jobs</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.changefeed.protected_age_sec" class="anchored"><code>jobs.changefeed.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by changefeed jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.changefeed.protected_record_count" class="anchored"><code>jobs.changefeed.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by changefeed jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.changefeed.resume_retry_error" class="anchored"><code>jobs.changefeed.resume\_retry\_error</code></div></td><td>Number of changefeed jobs which failed with a retriable error</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.create_stats.currently_paused" class="anchored"><code>jobs.create\_stats.currently\_paused</code></div></td><td>Number of create\_stats jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.create_stats.currently_running" class="anchored"><code>jobs.create\_stats.currently\_running</code></div></td><td>Number of create\_stats jobs currently running in Resume or OnFailOrCancel state</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.create_stats.protected_age_sec" class="anchored"><code>jobs.create\_stats.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by create\_stats jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.create_stats.protected_record_count" class="anchored"><code>jobs.create\_stats.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by create\_stats jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.history_retention.currently_paused" class="anchored"><code>jobs.history\_retention.currently\_paused</code></div></td><td>Number of history\_retention jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.history_retention.protected_age_sec" class="anchored"><code>jobs.history\_retention.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by history\_retention jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.history_retention.protected_record_count" class="anchored"><code>jobs.history\_retention.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by history\_retention jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.import.currently_paused" class="anchored"><code>jobs.import.currently\_paused</code></div></td><td>Number of import jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.import.protected_age_sec" class="anchored"><code>jobs.import.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by import jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.import.protected_record_count" class="anchored"><code>jobs.import.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by import jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.import_rollback.currently_paused" class="anchored"><code>jobs.import\_rollback.currently\_paused</code></div></td><td>Number of import\_rollback jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.import_rollback.protected_age_sec" class="anchored"><code>jobs.import\_rollback.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by import\_rollback jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.import_rollback.protected_record_count" class="anchored"><code>jobs.import\_rollback.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by import\_rollback jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.key_visualizer.currently_paused" class="anchored"><code>jobs.key\_visualizer.currently\_paused</code></div></td><td>Number of key\_visualizer jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.key_visualizer.protected_age_sec" class="anchored"><code>jobs.key\_visualizer.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by key\_visualizer jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.key_visualizer.protected_record_count" class="anchored"><code>jobs.key\_visualizer.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by key\_visualizer jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.logical_replication.currently_paused" class="anchored"><code>jobs.logical\_replication.currently\_paused</code></div></td><td>Number of logical\_replication jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.logical_replication.protected_age_sec" class="anchored"><code>jobs.logical\_replication.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by logical\_replication jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.logical_replication.protected_record_count" class="anchored"><code>jobs.logical\_replication.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by logical\_replication jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.migration.currently_paused" class="anchored"><code>jobs.migration.currently\_paused</code></div></td><td>Number of migration jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.migration.protected_age_sec" class="anchored"><code>jobs.migration.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by migration jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.migration.protected_record_count" class="anchored"><code>jobs.migration.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by migration jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.mvcc_statistics_update.currently_paused" class="anchored"><code>jobs.mvcc\_statistics\_update.currently\_paused</code></div></td><td>Number of mvcc\_statistics\_update jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.mvcc_statistics_update.protected_age_sec" class="anchored"><code>jobs.mvcc\_statistics\_update.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by mvcc\_statistics\_update jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.mvcc_statistics_update.protected_record_count" class="anchored"><code>jobs.mvcc\_statistics\_update.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by mvcc\_statistics\_update jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.new_schema_change.currently_paused" class="anchored"><code>jobs.new\_schema\_change.currently\_paused</code></div></td><td>Number of new\_schema\_change jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.new_schema_change.protected_age_sec" class="anchored"><code>jobs.new\_schema\_change.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by new\_schema\_change jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.new_schema_change.protected_record_count" class="anchored"><code>jobs.new\_schema\_change.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by new\_schema\_change jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.poll_jobs_stats.currently_paused" class="anchored"><code>jobs.poll\_jobs\_stats.currently\_paused</code></div></td><td>Number of poll\_jobs\_stats jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.poll_jobs_stats.protected_age_sec" class="anchored"><code>jobs.poll\_jobs\_stats.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by poll\_jobs\_stats jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.poll_jobs_stats.protected_record_count" class="anchored"><code>jobs.poll\_jobs\_stats.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by poll\_jobs\_stats jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.replication_stream_ingestion.currently_paused" class="anchored"><code>jobs.replication\_stream\_ingestion.currently\_paused</code></div></td><td>Number of replication\_stream\_ingestion jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.replication_stream_ingestion.protected_age_sec" class="anchored"><code>jobs.replication\_stream\_ingestion.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by replication\_stream\_ingestion jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.replication_stream_ingestion.protected_record_count" class="anchored"><code>jobs.replication\_stream\_ingestion.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by replication\_stream\_ingestion jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.replication_stream_producer.currently_paused" class="anchored"><code>jobs.replication\_stream\_producer.currently\_paused</code></div></td><td>Number of replication\_stream\_producer jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.replication_stream_producer.protected_age_sec" class="anchored"><code>jobs.replication\_stream\_producer.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by replication\_stream\_producer jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.replication_stream_producer.protected_record_count" class="anchored"><code>jobs.replication\_stream\_producer.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by replication\_stream\_producer jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.restore.currently_paused" class="anchored"><code>jobs.restore.currently\_paused</code></div></td><td>Number of restore jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.restore.protected_age_sec" class="anchored"><code>jobs.restore.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by restore jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.restore.protected_record_count" class="anchored"><code>jobs.restore.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by restore jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.currently_paused" class="anchored"><code>jobs.row\_level\_ttl.currently\_paused</code></div></td><td>Number of row\_level\_ttl jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.currently_running" class="anchored"><code>jobs.row\_level\_ttl.currently\_running</code></div></td><td>Number of row\_level\_ttl jobs currently running in Resume or OnFailOrCancel state</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.delete_duration" class="anchored"><code>jobs.row\_level\_ttl.delete\_duration</code></div></td><td>Duration for delete requests during row level TTL.</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.num_active_spans" class="anchored"><code>jobs.row\_level\_ttl.num\_active\_spans</code></div></td><td>Number of active spans the TTL job is deleting from.</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.protected_age_sec" class="anchored"><code>jobs.row\_level\_ttl.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by row\_level\_ttl jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.protected_record_count" class="anchored"><code>jobs.row\_level\_ttl.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by row\_level\_ttl jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.resume_completed" class="anchored"><code>jobs.row\_level\_ttl.resume\_completed</code></div></td><td>Number of row\_level\_ttl jobs which successfully resumed to completion</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.resume_failed" class="anchored"><code>jobs.row\_level\_ttl.resume\_failed</code></div></td><td>Number of row\_level\_ttl jobs which failed with a non-retriable error</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.rows_deleted" class="anchored"><code>jobs.row\_level\_ttl.rows\_deleted</code></div></td><td>Number of rows deleted by the row level TTL job.</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.rows_selected" class="anchored"><code>jobs.row\_level\_ttl.rows\_selected</code></div></td><td>Number of rows selected for deletion by the row level TTL job.</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.select_duration" class="anchored"><code>jobs.row\_level\_ttl.select\_duration</code></div></td><td>Duration for select requests during row level TTL.</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.span_total_duration" class="anchored"><code>jobs.row\_level\_ttl.span\_total\_duration</code></div></td><td>Duration for processing a span during row level TTL.</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.total_expired_rows" class="anchored"><code>jobs.row\_level\_ttl.total\_expired\_rows</code></div></td><td>Approximate number of rows that have expired the TTL on the TTL table.</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.row_level_ttl.total_rows" class="anchored"><code>jobs.row\_level\_ttl.total\_rows</code></div></td><td>Approximate number of rows on the TTL table.</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="jobs.schema_change.currently_paused" class="anchored"><code>jobs.schema\_change.currently\_paused</code></div></td><td>Number of schema\_change jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.schema_change.protected_age_sec" class="anchored"><code>jobs.schema\_change.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by schema\_change jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.schema_change.protected_record_count" class="anchored"><code>jobs.schema\_change.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by schema\_change jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.schema_change_gc.currently_paused" class="anchored"><code>jobs.schema\_change\_gc.currently\_paused</code></div></td><td>Number of schema\_change\_gc jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.schema_change_gc.protected_age_sec" class="anchored"><code>jobs.schema\_change\_gc.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by schema\_change\_gc jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.schema_change_gc.protected_record_count" class="anchored"><code>jobs.schema\_change\_gc.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by schema\_change\_gc jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.standby_read_ts_poller.currently_paused" class="anchored"><code>jobs.standby\_read\_ts\_poller.currently\_paused</code></div></td><td>Number of standby\_read\_ts\_poller jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.standby_read_ts_poller.protected_age_sec" class="anchored"><code>jobs.standby\_read\_ts\_poller.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by standby\_read\_ts\_poller jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.standby_read_ts_poller.protected_record_count" class="anchored"><code>jobs.standby\_read\_ts\_poller.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by standby\_read\_ts\_poller jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.typedesc_schema_change.currently_paused" class="anchored"><code>jobs.typedesc\_schema\_change.currently\_paused</code></div></td><td>Number of typedesc\_schema\_change jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.typedesc_schema_change.protected_age_sec" class="anchored"><code>jobs.typedesc\_schema\_change.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by typedesc\_schema\_change jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.typedesc_schema_change.protected_record_count" class="anchored"><code>jobs.typedesc\_schema\_change.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by typedesc\_schema\_change jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.update_table_metadata_cache.currently_paused" class="anchored"><code>jobs.update\_table\_metadata\_cache.currently\_paused</code></div></td><td>Number of update\_table\_metadata\_cache jobs currently considered Paused</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="jobs.update_table_metadata_cache.protected_age_sec" class="anchored"><code>jobs.update\_table\_metadata\_cache.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by update\_table\_metadata\_cache jobs</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="jobs.update_table_metadata_cache.protected_record_count" class="anchored"><code>jobs.update\_table\_metadata\_cache.protected\_record\_count</code></div></td><td>Number of protected timestamp records held by update\_table\_metadata\_cache jobs</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="keybytes" class="anchored"><code>keybytes</code></div></td><td>Number of bytes taken up by keys</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="keycount" class="anchored"><code>keycount</code></div></td><td>Count of all keys</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="leases.epoch" class="anchored"><code>leases.epoch</code></div></td><td>Number of replica leaseholders using epoch-based leases</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="leases.error" class="anchored"><code>leases.error</code></div></td><td>Number of failed lease requests</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="leases.expiration" class="anchored"><code>leases.expiration</code></div></td><td>Number of replica leaseholders using expiration-based leases</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="leases.success" class="anchored"><code>leases.success</code></div></td><td>Number of successful lease requests</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="leases.transfers.error" class="anchored"><code>leases.transfers.error</code></div></td><td>Number of failed lease transfers</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="leases.transfers.success" class="anchored"><code>leases.transfers.success</code></div></td><td>Number of successful lease transfers</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="livebytes" class="anchored"><code>livebytes</code></div></td><td>Number of bytes of live data (keys plus values)</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="livecount" class="anchored"><code>livecount</code></div></td><td>Count of live keys</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="liveness.epochincrements" class="anchored"><code>liveness.epochincrements</code></div></td><td>Number of times this node has incremented its liveness epoch</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="liveness.heartbeatfailures" class="anchored"><code>liveness.heartbeatfailures</code></div></td><td>Number of failed node liveness heartbeats from this node</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="liveness.heartbeatlatency" class="anchored"><code>liveness.heartbeatlatency</code></div></td><td>Node liveness heartbeat latency</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="liveness.heartbeatsuccesses" class="anchored"><code>liveness.heartbeatsuccesses</code></div></td><td>Number of successful node liveness heartbeats from this node</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="liveness.livenodes" class="anchored"><code>liveness.livenodes</code></div></td><td>Number of live nodes in the cluster (will be 0 if this node is not itself live)</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="node-id" class="anchored"><code>node-id</code></div></td><td>node ID with labels for advertised RPC and HTTP addresses</td><td>GAUGE</td><td>CONST</td><td>self-hosted</td></tr> <tr><td><div id="physical_replication.logical_bytes" class="anchored"><code>physical\_replication.logical\_bytes</code></div></td><td>Logical bytes (sum of keys + values) ingested by all replication jobs</td><td>COUNTER</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="physical_replication.replicated_time_seconds" class="anchored"><code>physical\_replication.replicated\_time\_seconds</code></div></td><td>The replicated time of the physical replication stream in seconds since the unix epoch.</td><td>GAUGE</td><td>SECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.consistency.pending" class="anchored"><code>queue.consistency.pending</code></div></td><td>Number of pending replicas in the consistency checker queue</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.consistency.process.failure" class="anchored"><code>queue.consistency.process.failure</code></div></td><td>Number of replicas which failed processing in the consistency checker queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.consistency.process.success" class="anchored"><code>queue.consistency.process.success</code></div></td><td>Number of replicas successfully processed by the consistency checker queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.consistency.processingnanos" class="anchored"><code>queue.consistency.processingnanos</code></div></td><td>Nanoseconds spent processing replicas in the consistency checker queue</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.abortspanconsidered" class="anchored"><code>queue.gc.info.abortspanconsidered</code></div></td><td>Number of AbortSpan entries old enough to be considered for removal</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.abortspangcnum" class="anchored"><code>queue.gc.info.abortspangcnum</code></div></td><td>Number of AbortSpan entries fit for removal</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.abortspanscanned" class="anchored"><code>queue.gc.info.abortspanscanned</code></div></td><td>Number of transactions present in the AbortSpan scanned from the engine</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.clearrangefailed" class="anchored"><code>queue.gc.info.clearrangefailed</code></div></td><td>Number of failed ClearRange operations during GC</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.gc.info.clearrangesuccess" class="anchored"><code>queue.gc.info.clearrangesuccess</code></div></td><td>Number of successful ClearRange operations during GC</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.gc.info.intentsconsidered" class="anchored"><code>queue.gc.info.intentsconsidered</code></div></td><td>Number of 'old' intents</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.intenttxns" class="anchored"><code>queue.gc.info.intenttxns</code></div></td><td>Number of associated distinct transactions</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.numkeysaffected" class="anchored"><code>queue.gc.info.numkeysaffected</code></div></td><td>Number of keys with GC'able data</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.pushtxn" class="anchored"><code>queue.gc.info.pushtxn</code></div></td><td>Number of attempted pushes</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.resolvesuccess" class="anchored"><code>queue.gc.info.resolvesuccess</code></div></td><td>Number of successful intent resolutions</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.resolvetotal" class="anchored"><code>queue.gc.info.resolvetotal</code></div></td><td>Number of attempted intent resolutions</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.transactionspangcaborted" class="anchored"><code>queue.gc.info.transactionspangcaborted</code></div></td><td>Number of GC'able entries corresponding to aborted txns</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.transactionspangccommitted" class="anchored"><code>queue.gc.info.transactionspangccommitted</code></div></td><td>Number of GC'able entries corresponding to committed txns</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.transactionspangcpending" class="anchored"><code>queue.gc.info.transactionspangcpending</code></div></td><td>Number of GC'able entries corresponding to pending txns</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.info.transactionspanscanned" class="anchored"><code>queue.gc.info.transactionspanscanned</code></div></td><td>Number of entries in transaction spans scanned from the engine</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.pending" class="anchored"><code>queue.gc.pending</code></div></td><td>Number of pending replicas in the MVCC GC queue</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.process.failure" class="anchored"><code>queue.gc.process.failure</code></div></td><td>Number of replicas which failed processing in the MVCC GC queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.process.success" class="anchored"><code>queue.gc.process.success</code></div></td><td>Number of replicas successfully processed by the MVCC GC queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.gc.processingnanos" class="anchored"><code>queue.gc.processingnanos</code></div></td><td>Nanoseconds spent processing replicas in the MVCC GC queue</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.raftlog.pending" class="anchored"><code>queue.raftlog.pending</code></div></td><td>Number of pending replicas in the Raft log queue</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.raftlog.process.failure" class="anchored"><code>queue.raftlog.process.failure</code></div></td><td>Number of replicas which failed processing in the Raft log queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.raftlog.process.success" class="anchored"><code>queue.raftlog.process.success</code></div></td><td>Number of replicas successfully processed by the Raft log queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.raftlog.processingnanos" class="anchored"><code>queue.raftlog.processingnanos</code></div></td><td>Nanoseconds spent processing replicas in the Raft log queue</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.raftsnapshot.pending" class="anchored"><code>queue.raftsnapshot.pending</code></div></td><td>Number of pending replicas in the Raft repair queue</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.raftsnapshot.process.failure" class="anchored"><code>queue.raftsnapshot.process.failure</code></div></td><td>Number of replicas which failed processing in the Raft repair queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.raftsnapshot.process.success" class="anchored"><code>queue.raftsnapshot.process.success</code></div></td><td>Number of replicas successfully processed by the Raft repair queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.raftsnapshot.processingnanos" class="anchored"><code>queue.raftsnapshot.processingnanos</code></div></td><td>Nanoseconds spent processing replicas in the Raft repair queue</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicagc.pending" class="anchored"><code>queue.replicagc.pending</code></div></td><td>Number of pending replicas in the replica GC queue</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicagc.process.failure" class="anchored"><code>queue.replicagc.process.failure</code></div></td><td>Number of replicas which failed processing in the replica GC queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicagc.process.success" class="anchored"><code>queue.replicagc.process.success</code></div></td><td>Number of replicas successfully processed by the replica GC queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicagc.processingnanos" class="anchored"><code>queue.replicagc.processingnanos</code></div></td><td>Nanoseconds spent processing replicas in the replica GC queue</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicagc.removereplica" class="anchored"><code>queue.replicagc.removereplica</code></div></td><td>Number of replica removals attempted by the replica GC queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicate.addreplica" class="anchored"><code>queue.replicate.addreplica</code></div></td><td>Number of replica additions attempted by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicate.addreplica.error" class="anchored"><code>queue.replicate.addreplica.error</code></div></td><td>Number of failed replica additions processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.addreplica.success" class="anchored"><code>queue.replicate.addreplica.success</code></div></td><td>Number of successful replica additions processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.pending" class="anchored"><code>queue.replicate.pending</code></div></td><td>Number of pending replicas in the replicate queue</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicate.process.failure" class="anchored"><code>queue.replicate.process.failure</code></div></td><td>Number of replicas which failed processing in the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicate.process.success" class="anchored"><code>queue.replicate.process.success</code></div></td><td>Number of replicas successfully processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicate.processingnanos" class="anchored"><code>queue.replicate.processingnanos</code></div></td><td>Nanoseconds spent processing replicas in the replicate queue</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicate.purgatory" class="anchored"><code>queue.replicate.purgatory</code></div></td><td>Number of replicas in the replicate queue's purgatory, awaiting allocation options</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicate.rebalancereplica" class="anchored"><code>queue.replicate.rebalancereplica</code></div></td><td>Number of replica rebalancer-initiated additions attempted by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicate.removedeadreplica" class="anchored"><code>queue.replicate.removedeadreplica</code></div></td><td>Number of dead replica removals attempted by the replicate queue (typically in response to a node outage)</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicate.removedeadreplica.error" class="anchored"><code>queue.replicate.removedeadreplica.error</code></div></td><td>Number of failed dead replica removals processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.removedeadreplica.success" class="anchored"><code>queue.replicate.removedeadreplica.success</code></div></td><td>Number of successful dead replica removals processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.removedecommissioningreplica.error" class="anchored"><code>queue.replicate.removedecommissioningreplica.error</code></div></td><td>Number of failed decommissioning replica removals processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.removedecommissioningreplica.success" class="anchored"><code>queue.replicate.removedecommissioningreplica.success</code></div></td><td>Number of successful decommissioning replica removals processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.removereplica" class="anchored"><code>queue.replicate.removereplica</code></div></td><td>Number of replica removals attempted by the replicate queue (typically in response to a rebalancer-initiated addition)</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.replicate.removereplica.error" class="anchored"><code>queue.replicate.removereplica.error</code></div></td><td>Number of failed replica removals processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.removereplica.success" class="anchored"><code>queue.replicate.removereplica.success</code></div></td><td>Number of successful replica removals processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.replacedeadreplica.error" class="anchored"><code>queue.replicate.replacedeadreplica.error</code></div></td><td>Number of failed dead replica replacements processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.replacedeadreplica.success" class="anchored"><code>queue.replicate.replacedeadreplica.success</code></div></td><td>Number of successful dead replica replacements processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.replacedecommissioningreplica.error" class="anchored"><code>queue.replicate.replacedecommissioningreplica.error</code></div></td><td>Number of failed decommissioning replica replacements processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.replacedecommissioningreplica.success" class="anchored"><code>queue.replicate.replacedecommissioningreplica.success</code></div></td><td>Number of successful decommissioning replica replacements processed by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="queue.replicate.transferlease" class="anchored"><code>queue.replicate.transferlease</code></div></td><td>Number of range lease transfers attempted by the replicate queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.split.pending" class="anchored"><code>queue.split.pending</code></div></td><td>Number of pending replicas in the split queue</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.split.process.failure" class="anchored"><code>queue.split.process.failure</code></div></td><td>Number of replicas which failed processing in the split queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.split.process.success" class="anchored"><code>queue.split.process.success</code></div></td><td>Number of replicas successfully processed by the split queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.split.processingnanos" class="anchored"><code>queue.split.processingnanos</code></div></td><td>Nanoseconds spent processing replicas in the split queue</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.tsmaintenance.pending" class="anchored"><code>queue.tsmaintenance.pending</code></div></td><td>Number of pending replicas in the time series maintenance queue</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.tsmaintenance.process.failure" class="anchored"><code>queue.tsmaintenance.process.failure</code></div></td><td>Number of replicas which failed processing in the time series maintenance queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.tsmaintenance.process.success" class="anchored"><code>queue.tsmaintenance.process.success</code></div></td><td>Number of replicas successfully processed by the time series maintenance queue</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="queue.tsmaintenance.processingnanos" class="anchored"><code>queue.tsmaintenance.processingnanos</code></div></td><td>Nanoseconds spent processing replicas in the time series maintenance queue</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.commandsapplied" class="anchored"><code>raft.commandsapplied</code></div></td><td>Number of Raft commands applied. This measurement is taken on the Raft apply loops of all Replicas (leaders and followers alike), meaning that it does not measure the number of Raft commands \*proposed\* (in the hypothetical extreme case, all Replicas may apply all commands through snapshots, thus not increasing this metric at all). Instead, it is a proxy for how much work is being done advancing the Replica state machines on this node.</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.heartbeats.pending" class="anchored"><code>raft.heartbeats.pending</code></div></td><td>Number of pending heartbeats and responses waiting to be coalesced</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.process.commandcommit.latency" class="anchored"><code>raft.process.commandcommit.latency</code></div></td><td>Latency histogram for applying a batch of Raft commands to the state machine. This metric is misnamed: it measures the latency for \*applying\* a batch of committed Raft commands to a Replica state machine. This requires only non-durable I/O (except for replication configuration changes). Note that a "batch" in this context is really a sub-batch of the batch received for application during raft ready handling. The 'raft.process.applycommitted.latency' histogram is likely more suitable in most cases, as it measures the total latency across all sub-batches (i.e. the sum of commandcommit.latency for a complete batch). </td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.process.logcommit.latency" class="anchored"><code>raft.process.logcommit.latency</code></div></td><td>Latency histogram for committing Raft log entries to stable storage This measures the latency of durably committing a group of newly received Raft entries as well as the HardState entry to disk. This excludes any data processing, i.e. we measure purely the commit latency of the resulting Engine write. Homogeneous bands of p50-p99 latencies (in the presence of regular Raft traffic), make it likely that the storage layer is healthy. Spikes in the latency bands can either hint at the presence of large sets of Raft entries being received, or at performance issues at the storage layer. </td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.process.tickingnanos" class="anchored"><code>raft.process.tickingnanos</code></div></td><td>Nanoseconds spent in store.processRaft() processing replica.Tick()</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.process.workingnanos" class="anchored"><code>raft.process.workingnanos</code></div></td><td>Nanoseconds spent in store.processRaft() working. This is the sum of the measurements passed to the raft.process.handleready.latency histogram. </td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.app" class="anchored"><code>raft.rcvd.app</code></div></td><td>Number of MsgApp messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.appresp" class="anchored"><code>raft.rcvd.appresp</code></div></td><td>Number of MsgAppResp messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.dropped" class="anchored"><code>raft.rcvd.dropped</code></div></td><td>Number of incoming Raft messages dropped (due to queue length or size)</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.heartbeat" class="anchored"><code>raft.rcvd.heartbeat</code></div></td><td>Number of (coalesced, if enabled) MsgHeartbeat messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.heartbeatresp" class="anchored"><code>raft.rcvd.heartbeatresp</code></div></td><td>Number of (coalesced, if enabled) MsgHeartbeatResp messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.prevote" class="anchored"><code>raft.rcvd.prevote</code></div></td><td>Number of MsgPreVote messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.prevoteresp" class="anchored"><code>raft.rcvd.prevoteresp</code></div></td><td>Number of MsgPreVoteResp messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.prop" class="anchored"><code>raft.rcvd.prop</code></div></td><td>Number of MsgProp messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.snap" class="anchored"><code>raft.rcvd.snap</code></div></td><td>Number of MsgSnap messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.timeoutnow" class="anchored"><code>raft.rcvd.timeoutnow</code></div></td><td>Number of MsgTimeoutNow messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.transferleader" class="anchored"><code>raft.rcvd.transferleader</code></div></td><td>Number of MsgTransferLeader messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.vote" class="anchored"><code>raft.rcvd.vote</code></div></td><td>Number of MsgVote messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.rcvd.voteresp" class="anchored"><code>raft.rcvd.voteresp</code></div></td><td>Number of MsgVoteResp messages received by this store</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raft.ticks" class="anchored"><code>raft.ticks</code></div></td><td>Number of Raft ticks queued</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raftlog.behind" class="anchored"><code>raftlog.behind</code></div></td><td>Number of Raft log entries followers on other stores are behind. This gauge provides a view of the aggregate number of log entries the Raft leaders on this node think the followers are behind. Since a raft leader may not always have a good estimate for this information for all of its followers, and since followers are expected to be behind (when they are not required as part of a quorum) \*and\* the aggregate thus scales like the count of such followers, it is difficult to meaningfully interpret this metric.</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="raftlog.truncated" class="anchored"><code>raftlog.truncated</code></div></td><td>Number of Raft log entries truncated</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="range.adds" class="anchored"><code>range.adds</code></div></td><td>Number of range additions</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="range.merges" class="anchored"><code>range.merges</code></div></td><td>Number of range merges</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="range.raftleadertransfers" class="anchored"><code>range.raftleadertransfers</code></div></td><td>Number of raft leader transfers</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="range.removes" class="anchored"><code>range.removes</code></div></td><td>Number of range removals</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="range.snapshots.generated" class="anchored"><code>range.snapshots.generated</code></div></td><td>Number of generated snapshots</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="range.snapshots.rcvd-bytes" class="anchored"><code>range.snapshots.rcvd-bytes</code></div></td><td>Number of snapshot bytes received</td><td>COUNTER</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.rebalancing.rcvd-bytes" class="anchored"><code>range.snapshots.rebalancing.rcvd-bytes</code></div></td><td>Number of rebalancing snapshot bytes received</td><td>COUNTER</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.rebalancing.sent-bytes" class="anchored"><code>range.snapshots.rebalancing.sent-bytes</code></div></td><td>Number of rebalancing snapshot bytes sent</td><td>COUNTER</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.recovery.rcvd-bytes" class="anchored"><code>range.snapshots.recovery.rcvd-bytes</code></div></td><td>Number of raft recovery snapshot bytes received</td><td>COUNTER</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.recovery.sent-bytes" class="anchored"><code>range.snapshots.recovery.sent-bytes</code></div></td><td>Number of raft recovery snapshot bytes sent</td><td>COUNTER</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.recv-in-progress" class="anchored"><code>range.snapshots.recv-in-progress</code></div></td><td>Number of non-empty snapshots being received</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.recv-queue" class="anchored"><code>range.snapshots.recv-queue</code></div></td><td>Number of snapshots queued to receive</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.recv-total-in-progress" class="anchored"><code>range.snapshots.recv-total-in-progress</code></div></td><td>Number of total snapshots being received</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.send-in-progress" class="anchored"><code>range.snapshots.send-in-progress</code></div></td><td>Number of non-empty snapshots being sent</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.send-queue" class="anchored"><code>range.snapshots.send-queue</code></div></td><td>Number of snapshots queued to send</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.send-total-in-progress" class="anchored"><code>range.snapshots.send-total-in-progress</code></div></td><td>Number of total snapshots being sent</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.sent-bytes" class="anchored"><code>range.snapshots.sent-bytes</code></div></td><td>Number of snapshot bytes sent</td><td>COUNTER</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.unknown.rcvd-bytes" class="anchored"><code>range.snapshots.unknown.rcvd-bytes</code></div></td><td>Number of unknown snapshot bytes received</td><td>COUNTER</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="range.snapshots.unknown.sent-bytes" class="anchored"><code>range.snapshots.unknown.sent-bytes</code></div></td><td>Number of unknown snapshot bytes sent</td><td>COUNTER</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="range.splits" class="anchored"><code>range.splits</code></div></td><td>Number of range splits</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rangekeybytes" class="anchored"><code>rangekeybytes</code></div></td><td>Number of bytes taken up by range keys (e.g. MVCC range tombstones)</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rangekeycount" class="anchored"><code>rangekeycount</code></div></td><td>Count of all range keys (e.g. MVCC range tombstones)</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="ranges" class="anchored"><code>ranges</code></div></td><td>Number of ranges</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="ranges.overreplicated" class="anchored"><code>ranges.overreplicated</code></div></td><td>Number of ranges with more live replicas than the replication target</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="ranges.unavailable" class="anchored"><code>ranges.unavailable</code></div></td><td>Number of ranges with fewer live replicas than needed for quorum</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="ranges.underreplicated" class="anchored"><code>ranges.underreplicated</code></div></td><td>Number of ranges with fewer live replicas than the replication target</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rangevalbytes" class="anchored"><code>rangevalbytes</code></div></td><td>Number of bytes taken up by range key values (e.g. MVCC range tombstones)</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rangevalcount" class="anchored"><code>rangevalcount</code></div></td><td>Count of all range key values (e.g. MVCC range tombstones)</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.cpunanospersecond" class="anchored"><code>rebalancing.cpunanospersecond</code></div></td><td>Average CPU nanoseconds spent on processing replica operations in the last 30 minutes.</td><td>GAUGE</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.lease.transfers" class="anchored"><code>rebalancing.lease.transfers</code></div></td><td>Number of lease transfers motivated by store-level load imbalances</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.queriespersecond" class="anchored"><code>rebalancing.queriespersecond</code></div></td><td>Number of kv-level requests received per second by the store, considering the last 30 minutes, as used in rebalancing decisions.</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.range.rebalances" class="anchored"><code>rebalancing.range.rebalances</code></div></td><td>Number of range rebalance operations motivated by store-level load imbalances</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.readbytespersecond" class="anchored"><code>rebalancing.readbytespersecond</code></div></td><td>Number of bytes read recently per second, considering the last 30 minutes.</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.readspersecond" class="anchored"><code>rebalancing.readspersecond</code></div></td><td>Number of keys read recently per second, considering the last 30 minutes.</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.replicas.cpunanospersecond" class="anchored"><code>rebalancing.replicas.cpunanospersecond</code></div></td><td>Histogram of average CPU nanoseconds spent on processing replica operations in the last 30 minutes.</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.replicas.queriespersecond" class="anchored"><code>rebalancing.replicas.queriespersecond</code></div></td><td>Histogram of average kv-level requests received per second by replicas on the store in the last 30 minutes.</td><td>HISTOGRAM</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.requestspersecond" class="anchored"><code>rebalancing.requestspersecond</code></div></td><td>Number of requests received recently per second, considering the last 30 minutes.</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.state.imbalanced_overfull_options_exhausted" class="anchored"><code>rebalancing.state.imbalanced\_overfull\_options\_exhausted</code></div></td><td>Number of occurrences where this store was overfull but failed to shed load after exhausting available rebalance options</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.writebytespersecond" class="anchored"><code>rebalancing.writebytespersecond</code></div></td><td>Number of bytes written recently per second, considering the last 30 minutes.</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rebalancing.writespersecond" class="anchored"><code>rebalancing.writespersecond</code></div></td><td>Number of keys written (i.e. applied by raft) per second to the store, considering the last 30 minutes.</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="replicas" class="anchored"><code>replicas</code></div></td><td>Number of replicas</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="replicas.leaders" class="anchored"><code>replicas.leaders</code></div></td><td>Number of raft leaders</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="replicas.leaders_invalid_lease" class="anchored"><code>replicas.leaders\_invalid\_lease</code></div></td><td>Number of replicas that are Raft leaders whose lease is invalid</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="replicas.leaders_not_leaseholders" class="anchored"><code>replicas.leaders\_not\_leaseholders</code></div></td><td>Number of replicas that are Raft leaders whose range lease is held by another store</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="replicas.leaseholders" class="anchored"><code>replicas.leaseholders</code></div></td><td>Number of lease holders</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="replicas.quiescent" class="anchored"><code>replicas.quiescent</code></div></td><td>Number of quiesced replicas</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="replicas.reserved" class="anchored"><code>replicas.reserved</code></div></td><td>Number of replicas reserved for snapshots</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="requests.backpressure.split" class="anchored"><code>requests.backpressure.split</code></div></td><td>Number of backpressured writes waiting on a Range split. A Range will backpressure (roughly) non-system traffic when the range is above the configured size until the range splits. When the rate of this metric is nonzero over extended periods of time, it should be investigated why splits are not occurring. </td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="requests.slow.distsender" class="anchored"><code>requests.slow\.distsender</code></div></td><td>Number of range-bound RPCs currently stuck or retrying for a long time. Note that this is not a good signal for KV health. The remote side of the RPCs tracked here may experience contention, so an end user can easily cause values for this metric to be emitted by leaving a transaction open for a long time and contending with it using a second transaction.</td><td>GAUGE</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="requests.slow.lease" class="anchored"><code>requests.slow\.lease</code></div></td><td>Number of requests that have been stuck for a long time acquiring a lease. This gauge registering a nonzero value usually indicates range or replica unavailability, and should be investigated. In the common case, we also expect to see 'requests.slow\.raft' to register a nonzero value, indicating that the lease requests are not getting a timely response from the replication layer. </td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="requests.slow.raft" class="anchored"><code>requests.slow\.raft</code></div></td><td>Number of requests that have been stuck for a long time in the replication layer. An (evaluated) request has to pass through the replication layer, notably the quota pool and raft. If it fails to do so within a highly permissive duration, the gauge is incremented (and decremented again once the request is either applied or returns an error). A nonzero value indicates range or replica unavailability, and should be investigated. </td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.block.cache.hits" class="anchored"><code>rocksdb.block.cache.hits</code></div></td><td>Count of block cache hits</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.block.cache.misses" class="anchored"><code>rocksdb.block.cache.misses</code></div></td><td>Count of block cache misses</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.block.cache.usage" class="anchored"><code>rocksdb.block.cache.usage</code></div></td><td>Bytes used by the block cache</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.bloom.filter.prefix.checked" class="anchored"><code>rocksdb.bloom.filter.prefix.checked</code></div></td><td>Number of times the bloom filter was checked</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.bloom.filter.prefix.useful" class="anchored"><code>rocksdb.bloom.filter.prefix.useful</code></div></td><td>Number of times the bloom filter helped avoid iterator creation</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.compactions" class="anchored"><code>rocksdb.compactions</code></div></td><td>Number of table compactions</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.flushes" class="anchored"><code>rocksdb.flushes</code></div></td><td>Number of table flushes</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.memtable.total-size" class="anchored"><code>rocksdb.memtable.total-size</code></div></td><td>Current size of memtable in bytes</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.num-sstables" class="anchored"><code>rocksdb.num-sstables</code></div></td><td>Number of storage engine SSTables</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.read-amplification" class="anchored"><code>rocksdb.read-amplification</code></div></td><td>Number of disk reads per query</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rocksdb.table-readers-mem-estimate" class="anchored"><code>rocksdb.table-readers-mem-estimate</code></div></td><td>Memory used by index and filter blocks</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="round-trip-latency" class="anchored"><code>round-trip-latency</code></div></td><td>Distribution of round-trip latencies with other nodes. This only reflects successful heartbeats and measures gRPC overhead as well as possible head-of-line blocking. Elevated values in this metric may hint at network issues and/or saturation, but they are no proof of them. CPU overload can similarly elevate this metric. The operator should look towards OS-level metrics such as packet loss, retransmits, etc, to conclusively diagnose network issues. Heartbeats are not very frequent (\~seconds), so they may not capture rare or short-lived degradations. </td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="rpc.connection.avg_round_trip_latency" class="anchored"><code>rpc.connection.avg\_round\_trip\_latency</code></div></td><td>Sum of exponentially weighted moving average of round-trip latencies, as measured through a gRPC RPC. Dividing this Gauge by rpc.connection.healthy gives an approximation of average latency, but the top-level round-trip-latency histogram is more useful. Instead, users should consult the label families of this metric if they are available (which requires prometheus and the cluster setting 'server.child\_metrics.enabled'); these provide per-peer moving averages. This metric does not track failed connection. A failed connection's contribution is reset to zero. </td><td>GAUGE</td><td>NANOSECONDS</td><td>self-hosted</td></tr> <tr><td><div id="rpc.connection.failures" class="anchored"><code>rpc.connection.failures</code></div></td><td>Counter of failed connections. This includes both the event in which a healthy connection terminates as well as unsuccessful reconnection attempts. Connections that are terminated as part of local node shutdown are excluded. Decommissioned peers are excluded. </td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="rpc.connection.healthy" class="anchored"><code>rpc.connection.healthy</code></div></td><td>Gauge of current connections in a healthy state (i.e. bidirectionally connected and heartbeating)</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="rpc.connection.healthy_nanos" class="anchored"><code>rpc.connection.healthy\_nanos</code></div></td><td>Gauge of nanoseconds of healthy connection time On the prometheus endpoint scraped with the cluster setting 'server.child\_metrics.enabled' set, the constituent parts of this metric are available on a per-peer basis and one can read off for how long a given peer has been connected</td><td>GAUGE</td><td>NANOSECONDS</td><td>self-hosted</td></tr> <tr><td><div id="rpc.connection.heartbeats" class="anchored"><code>rpc.connection.heartbeats</code></div></td><td>Counter of successful heartbeats.</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="rpc.connection.unhealthy" class="anchored"><code>rpc.connection.unhealthy</code></div></td><td>Gauge of current connections in an unhealthy state (not bidirectionally connected or heartbeating)</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="rpc.connection.unhealthy_nanos" class="anchored"><code>rpc.connection.unhealthy\_nanos</code></div></td><td>Gauge of nanoseconds of unhealthy connection time. On the prometheus endpoint scraped with the cluster setting 'server.child\_metrics.enabled' set, the constituent parts of this metric are available on a per-peer basis and one can read off for how long a given peer has been unreachable</td><td>GAUGE</td><td>NANOSECONDS</td><td>self-hosted</td></tr> <tr><td><div id="schedules.BACKUP.failed" class="anchored"><code>schedules.BACKUP.failed</code></div></td><td>Number of BACKUP jobs failed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="schedules.BACKUP.last-completed-time" class="anchored"><code>schedules.BACKUP.last-completed-time</code></div></td><td>The unix timestamp of the most recently completed backup by a schedule specified as maintaining this metric</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="schedules.BACKUP.protected_age_sec" class="anchored"><code>schedules.BACKUP.protected\_age\_sec</code></div></td><td>The age of the oldest PTS record protected by BACKUP schedules</td><td>GAUGE</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="schedules.BACKUP.protected_record_count" class="anchored"><code>schedules.BACKUP.protected\_record\_count</code></div></td><td>Number of PTS records held by BACKUP schedules</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="schedules.BACKUP.started" class="anchored"><code>schedules.BACKUP.started</code></div></td><td>Number of BACKUP jobs started</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="schedules.BACKUP.succeeded" class="anchored"><code>schedules.BACKUP.succeeded</code></div></td><td>Number of BACKUP jobs succeeded</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="schedules.scheduled-row-level-ttl-executor.failed" class="anchored"><code>schedules.scheduled-row-level-ttl-executor.failed</code></div></td><td>Number of scheduled-row-level-ttl-executor jobs failed</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="seconds.until.enterprise.license.expiry" class="anchored"><code>seconds.until.enterprise.license.expiry</code></div></td><td>Seconds until enterprise license expiry (0 if no license present or running without enterprise features)</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.expiration.ca" class="anchored"><code>security.certificate.expiration.ca</code></div></td><td>Expiration for the CA certificate. 0 means no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="security.certificate.expiration.ca-client-tenant" class="anchored"><code>security.certificate.expiration.ca-client-tenant</code></div></td><td>Expiration for the Tenant Client CA certificate. 0 means no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.expiration.client" class="anchored"><code>security.certificate.expiration.client</code></div></td><td>Minimum expiration for client certificates, labeled by SQL user. 0 means no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.expiration.client-ca" class="anchored"><code>security.certificate.expiration.client-ca</code></div></td><td>Expiration for the client CA certificate. 0 means no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.expiration.client-tenant" class="anchored"><code>security.certificate.expiration.client-tenant</code></div></td><td>Expiration for the Tenant Client certificate. 0 means no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.expiration.node" class="anchored"><code>security.certificate.expiration.node</code></div></td><td>Expiration for the node certificate. 0 means no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.expiration.node-client" class="anchored"><code>security.certificate.expiration.node-client</code></div></td><td>Expiration for the node's client certificate. 0 means no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.expiration.ui" class="anchored"><code>security.certificate.expiration.ui</code></div></td><td>Expiration for the UI certificate. 0 means no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.expiration.ui-ca" class="anchored"><code>security.certificate.expiration.ui-ca</code></div></td><td>Expiration for the UI CA certificate. 0 means no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.ttl.ca" class="anchored"><code>security.certificate.ttl.ca</code></div></td><td>Seconds till expiration for the CA certificate. 0 means expired, no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.ttl.ca-client-tenant" class="anchored"><code>security.certificate.ttl.ca-client-tenant</code></div></td><td>Seconds till expiration for the Tenant Client CA certificate. 0 means expired, no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.ttl.client" class="anchored"><code>security.certificate.ttl.client</code></div></td><td>Seconds till expiration for the client certificates, labeled by SQL user. 0 means expired, no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.ttl.client-ca" class="anchored"><code>security.certificate.ttl.client-ca</code></div></td><td>Seconds till expiration for the client CA certificate. 0 means expired, no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.ttl.client-tenant" class="anchored"><code>security.certificate.ttl.client-tenant</code></div></td><td>Seconds till expiration for the Tenant Client certificate. 0 means expired, no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.ttl.node" class="anchored"><code>security.certificate.ttl.node</code></div></td><td>Seconds till expiration for the node certificate. 0 means expired, no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.ttl.node-client" class="anchored"><code>security.certificate.ttl.node-client</code></div></td><td>Seconds till expiration for the node's client certificate. 0 means expired, no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.ttl.ui" class="anchored"><code>security.certificate.ttl.ui</code></div></td><td>Seconds till expiration for the UI certificate. 0 means expired, no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="security.certificate.ttl.ui-ca" class="anchored"><code>security.certificate.ttl.ui-ca</code></div></td><td>Seconds till expiration for the UI CA certificate. 0 means expired, no certificate or error.</td><td>GAUGE</td><td>TIMESTAMP\_SEC</td><td>self-hosted</td></tr> <tr><td><div id="sql.bytesin" class="anchored"><code>sql.bytesin</code></div></td><td>Number of SQL bytes received</td><td>COUNTER</td><td>BYTES</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.bytesout" class="anchored"><code>sql.bytesout</code></div></td><td>Number of SQL bytes sent</td><td>COUNTER</td><td>BYTES</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.conn.latency" class="anchored"><code>sql.conn.latency</code></div></td><td>Latency to establish and authenticate a SQL connection</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.conns" class="anchored"><code>sql.conns</code></div></td><td>Number of open SQL connections</td><td>GAUGE</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.crud_query.count" class="anchored"><code>sql.crud\_query.count</code></div></td><td>Number of SQL SELECT, INSERT, UPDATE, DELETE statements successfully executed</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="sql.crud_query.started.count" class="anchored"><code>sql.crud\_query.started.count</code></div></td><td>Number of SQL SELECT, INSERT, UPDATE, DELETE statements started</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="sql.ddl.count" class="anchored"><code>sql.ddl.count</code></div></td><td>Number of SQL DDL statements successfully executed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.delete.count" class="anchored"><code>sql.delete.count</code></div></td><td>Number of SQL DELETE statements successfully executed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.distsql.contended_queries.count" class="anchored"><code>sql.distsql.contended\_queries.count</code></div></td><td>Number of SQL queries that experienced contention</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.distsql.exec.latency" class="anchored"><code>sql.distsql.exec.latency</code></div></td><td>Latency of DistSQL statement execution</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.distsql.flows.active" class="anchored"><code>sql.distsql.flows.active</code></div></td><td>Number of distributed SQL flows currently active</td><td>GAUGE</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.distsql.flows.total" class="anchored"><code>sql.distsql.flows.total</code></div></td><td>Number of distributed SQL flows executed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.distsql.queries.active" class="anchored"><code>sql.distsql.queries.active</code></div></td><td>Number of invocations of the execution engine currently active (multiple of which may occur for a single SQL statement)</td><td>GAUGE</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.distsql.queries.total" class="anchored"><code>sql.distsql.queries.total</code></div></td><td>Number of invocations of the execution engine executed (multiple of which may occur for a single SQL statement)</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.distsql.select.count" class="anchored"><code>sql.distsql.select.count</code></div></td><td>Number of SELECT statements planned to be distributed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.distsql.service.latency" class="anchored"><code>sql.distsql.service.latency</code></div></td><td>Latency of DistSQL request execution</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.exec.latency" class="anchored"><code>sql.exec.latency</code></div></td><td>Latency of SQL statement execution</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.exec.latency.detail" class="anchored"><code>sql.exec.latency.detail</code></div></td><td>Latency of SQL statement execution, by statement fingerprint</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>self-hosted</td></tr> <tr><td><div id="sql.failure.count" class="anchored"><code>sql.failure.count</code></div></td><td>Number of statements resulting in a planning or runtime error</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.full.scan.count" class="anchored"><code>sql.full.scan.count</code></div></td><td>Number of full table or index scans</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.guardrails.max_row_size_err.count" class="anchored"><code>sql.guardrails.max\_row\_size\_err.count</code></div></td><td>Number of rows observed violating sql.guardrails.max\_row\_size\_err</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="sql.guardrails.max_row_size_log.count" class="anchored"><code>sql.guardrails.max\_row\_size\_log.count</code></div></td><td>Number of rows observed violating sql.guardrails.max\_row\_size\_log</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="sql.insert.count" class="anchored"><code>sql.insert.count</code></div></td><td>Number of SQL INSERT statements successfully executed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.mem.distsql.current" class="anchored"><code>sql.mem.distsql.current</code></div></td><td>Current sql statement memory usage for distsql</td><td>GAUGE</td><td>BYTES</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.mem.distsql.max" class="anchored"><code>sql.mem.distsql.max</code></div></td><td>Memory usage per sql statement for distsql</td><td>HISTOGRAM</td><td>BYTES</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.mem.internal.session.current" class="anchored"><code>sql.mem.internal.session.current</code></div></td><td>Current sql session memory usage for internal</td><td>GAUGE</td><td>BYTES</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.mem.internal.session.max" class="anchored"><code>sql.mem.internal.session.max</code></div></td><td>Memory usage per sql session for internal</td><td>HISTOGRAM</td><td>BYTES</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.mem.internal.txn.current" class="anchored"><code>sql.mem.internal.txn.current</code></div></td><td>Current sql transaction memory usage for internal</td><td>GAUGE</td><td>BYTES</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.mem.internal.txn.max" class="anchored"><code>sql.mem.internal.txn.max</code></div></td><td>Memory usage per sql transaction for internal</td><td>HISTOGRAM</td><td>BYTES</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.mem.root.current" class="anchored"><code>sql.mem.root.current</code></div></td><td>Current sql statement memory usage for root</td><td>GAUGE</td><td>BYTES</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.mem.root.max" class="anchored"><code>sql.mem.root.max</code></div></td><td>Memory usage per sql statement for root</td><td>HISTOGRAM</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="sql.misc.count" class="anchored"><code>sql.misc.count</code></div></td><td>Number of other SQL statements successfully executed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.new_conns" class="anchored"><code>sql.new\_conns</code></div></td><td>Number of SQL connections created</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.pgwire_cancel.ignored" class="anchored"><code>sql.pgwire\_cancel.ignored</code></div></td><td>Number of pgwire query cancel requests that were ignored due to rate limiting</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="sql.pgwire_cancel.successful" class="anchored"><code>sql.pgwire\_cancel.successful</code></div></td><td>Number of pgwire query cancel requests that were successful</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="sql.pgwire_cancel.total" class="anchored"><code>sql.pgwire\_cancel.total</code></div></td><td>Number of pgwire query cancel requests</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="sql.query.count" class="anchored"><code>sql.query.count</code></div></td><td>Number of SQL operations started including queries, and transaction control statements</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.query.unique.count" class="anchored"><code>sql.query.unique.count</code></div></td><td>Cardinality estimate of the set of statement fingerprints</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="sql.select.count" class="anchored"><code>sql.select.count</code></div></td><td>Number of SQL SELECT statements successfully executed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.service.latency" class="anchored"><code>sql.service.latency</code></div></td><td>Latency of SQL request execution</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.statements.active" class="anchored"><code>sql.statements.active</code></div></td><td>Number of currently active user SQL statements</td><td>GAUGE</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.txn.abort.count" class="anchored"><code>sql.txn.abort.count</code></div></td><td>Number of SQL transaction abort errors</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.txn.begin.count" class="anchored"><code>sql.txn.begin.count</code></div></td><td>Number of SQL transaction BEGIN statements successfully executed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.txn.commit.count" class="anchored"><code>sql.txn.commit.count</code></div></td><td>Number of SQL transaction COMMIT statements successfully executed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.txn.contended.count" class="anchored"><code>sql.txn.contended.count</code></div></td><td>Number of SQL transactions experienced contention</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="sql.txn.latency" class="anchored"><code>sql.txn.latency</code></div></td><td>Latency of SQL transactions</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.txn.rollback.count" class="anchored"><code>sql.txn.rollback.count</code></div></td><td>Number of SQL transaction ROLLBACK statements successfully executed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.txns.open" class="anchored"><code>sql.txns.open</code></div></td><td>Number of currently open user SQL transactions</td><td>GAUGE</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sql.update.count" class="anchored"><code>sql.update.count</code></div></td><td>Number of SQL UPDATE statements successfully executed</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="storage.keys.range-key-set.count" class="anchored"><code>storage.keys.range-key-set.count</code></div></td><td>Approximate count of RangeKeySet internal keys across the storage engine.</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="storage.l0-level-score" class="anchored"><code>storage.l0-level-score</code></div></td><td>Compaction score of level 0</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="storage.l0-level-size" class="anchored"><code>storage.l0-level-size</code></div></td><td>Size of the SSTables in level 0</td><td>GAUGE</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="storage.l0-num-files" class="anchored"><code>storage.l0-num-files</code></div></td><td>Number of SSTables in Level 0</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="storage.l0-sublevels" class="anchored"><code>storage.l0-sublevels</code></div></td><td>Number of Level 0 sublevels</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="storage.l1-level-score" class="anchored"><code>storage.l1-level-score</code></div></td><td>Compaction score of level 1</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="storage.l1-level-size" class="anchored"><code>storage.l1-level-size</code></div></td><td>Size of the SSTables in level 1</td><td>GAUGE</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="storage.l2-level-score" class="anchored"><code>storage.l2-level-score</code></div></td><td>Compaction score of level 2</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="storage.l2-level-size" class="anchored"><code>storage.l2-level-size</code></div></td><td>Size of the SSTables in level 2</td><td>GAUGE</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="storage.l3-level-score" class="anchored"><code>storage.l3-level-score</code></div></td><td>Compaction score of level 3</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="storage.l3-level-size" class="anchored"><code>storage.l3-level-size</code></div></td><td>Size of the SSTables in level 3</td><td>GAUGE</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="storage.l4-level-score" class="anchored"><code>storage.l4-level-score</code></div></td><td>Compaction score of level 4</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="storage.l4-level-size" class="anchored"><code>storage.l4-level-size</code></div></td><td>Size of the SSTables in level 4</td><td>GAUGE</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="storage.l5-level-score" class="anchored"><code>storage.l5-level-score</code></div></td><td>Compaction score of level 5</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="storage.l5-level-size" class="anchored"><code>storage.l5-level-size</code></div></td><td>Size of the SSTables in level 5</td><td>GAUGE</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="storage.l6-level-score" class="anchored"><code>storage.l6-level-score</code></div></td><td>Compaction score of level 6</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="storage.l6-level-size" class="anchored"><code>storage.l6-level-size</code></div></td><td>Size of the SSTables in level 6</td><td>GAUGE</td><td>BYTES</td><td>self-hosted</td></tr> <tr><td><div id="storage.marked-for-compaction-files" class="anchored"><code>storage.marked-for-compaction-files</code></div></td><td>Count of SSTables marked for compaction</td><td>GAUGE</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="storage.write-stalls" class="anchored"><code>storage.write-stalls</code></div></td><td>Number of instances of intentional write stalls to backpressure incoming writes</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="sys.cgo.allocbytes" class="anchored"><code>sys.cgo.allocbytes</code></div></td><td>Current bytes of memory allocated by cgo</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.cgo.totalbytes" class="anchored"><code>sys.cgo.totalbytes</code></div></td><td>Total bytes of memory allocated by cgo, but not released</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.cgocalls" class="anchored"><code>sys.cgocalls</code></div></td><td>Total number of cgo calls</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.cpu.combined.percent-normalized" class="anchored"><code>sys.cpu.combined.percent-normalized</code></div></td><td>Current user+system cpu percentage consumed by the CRDB process, normalized 0-1 by number of cores</td><td>GAUGE</td><td>PERCENT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.cpu.host.combined.percent-normalized" class="anchored"><code>sys.cpu.host.combined.percent-normalized</code></div></td><td>Current user+system cpu percentage across the whole machine, normalized 0-1 by number of cores</td><td>GAUGE</td><td>PERCENT</td><td>self-hosted</td></tr> <tr><td><div id="sys.cpu.sys.ns" class="anchored"><code>sys.cpu.sys.ns</code></div></td><td>Total system cpu time consumed by the CRDB process</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.cpu.sys.percent" class="anchored"><code>sys.cpu.sys.percent</code></div></td><td>Current system cpu percentage consumed by the CRDB process</td><td>GAUGE</td><td>PERCENT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.cpu.user.ns" class="anchored"><code>sys.cpu.user.ns</code></div></td><td>Total user cpu time consumed by the CRDB process</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.cpu.user.percent" class="anchored"><code>sys.cpu.user.percent</code></div></td><td>Current user cpu percentage consumed by the CRDB process</td><td>GAUGE</td><td>PERCENT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.fd.open" class="anchored"><code>sys.fd.open</code></div></td><td>Process open file descriptors</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.fd.softlimit" class="anchored"><code>sys.fd.softlimit</code></div></td><td>Process open FD soft limit</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.gc.count" class="anchored"><code>sys.gc.count</code></div></td><td>Total number of GC runs</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.gc.pause.ns" class="anchored"><code>sys.gc.pause.ns</code></div></td><td>Total GC pause</td><td>COUNTER</td><td>NANOSECONDS</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.gc.pause.percent" class="anchored"><code>sys.gc.pause.percent</code></div></td><td>Current GC pause percentage</td><td>GAUGE</td><td>PERCENT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.go.allocbytes" class="anchored"><code>sys.go.allocbytes</code></div></td><td>Current bytes of memory allocated by go</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.go.totalbytes" class="anchored"><code>sys.go.totalbytes</code></div></td><td>Total bytes of memory allocated by go, but not released</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.goroutines" class="anchored"><code>sys.goroutines</code></div></td><td>Current number of goroutines</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.host.disk.iopsinprogress" class="anchored"><code>sys.host.disk.iopsinprogress</code></div></td><td>IO operations currently in progress on this host (as reported by the OS)</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.host.disk.read.bytes" class="anchored"><code>sys.host.disk.read.bytes</code></div></td><td>Bytes read from all disks since this process started (as reported by the OS)</td><td>COUNTER</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.host.disk.read.count" class="anchored"><code>sys.host.disk.read.count</code></div></td><td>Disk read operations across all disks since this process started (as reported by the OS)</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.host.disk.write.bytes" class="anchored"><code>sys.host.disk.write.bytes</code></div></td><td>Bytes written to all disks since this process started (as reported by the OS)</td><td>COUNTER</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.host.disk.write.count" class="anchored"><code>sys.host.disk.write.count</code></div></td><td>Disk write operations across all disks since this process started (as reported by the OS)</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.host.net.recv.bytes" class="anchored"><code>sys.host.net.recv.bytes</code></div></td><td>Bytes received on all network interfaces since this process started (as reported by the OS)</td><td>COUNTER</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.host.net.send.bytes" class="anchored"><code>sys.host.net.send.bytes</code></div></td><td>Bytes sent on all network interfaces since this process started (as reported by the OS)</td><td>COUNTER</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.rss" class="anchored"><code>sys.rss</code></div></td><td>Current process RSS</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.runnable.goroutines.per.cpu" class="anchored"><code>sys.runnable.goroutines.per.cpu</code></div></td><td>Average number of goroutines that are waiting to run, normalized by number of cores</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.totalmem" class="anchored"><code>sys.totalmem</code></div></td><td>Total memory (both free and used)</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sys.uptime" class="anchored"><code>sys.uptime</code></div></td><td>Process uptime</td><td>COUNTER</td><td>SECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="sysbytes" class="anchored"><code>sysbytes</code></div></td><td>Number of bytes in system KV pairs</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="syscount" class="anchored"><code>syscount</code></div></td><td>Count of system KV pairs</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.consumption.cross_region_network_ru" class="anchored"><code>tenant.consumption.cross\_region\_network\_ru</code></div></td><td>Total number of RUs charged for cross-region network traffic</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="tenant.consumption.external_io_egress_bytes" class="anchored"><code>tenant.consumption.external\_io\_egress\_bytes</code></div></td><td>Total number of bytes written to external services such as cloud storage providers</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="tenant.consumption.pgwire_egress_bytes" class="anchored"><code>tenant.consumption.pgwire\_egress\_bytes</code></div></td><td>Total number of bytes transferred from a SQL pod to the client</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="tenant.consumption.read_batches" class="anchored"><code>tenant.consumption.read\_batches</code></div></td><td>Total number of KV read batches</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="tenant.consumption.read_bytes" class="anchored"><code>tenant.consumption.read\_bytes</code></div></td><td>Total number of bytes read from KV</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="tenant.consumption.read_requests" class="anchored"><code>tenant.consumption.read\_requests</code></div></td><td>Total number of KV read requests</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="tenant.consumption.request_units" class="anchored"><code>tenant.consumption.request\_units</code></div></td><td>Total RU consumption</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="tenant.consumption.sql_pods_cpu_seconds" class="anchored"><code>tenant.consumption.sql\_pods\_cpu\_seconds</code></div></td><td>Total amount of CPU used by SQL pods</td><td>COUNTER</td><td>SECONDS</td><td>self-hosted</td></tr> <tr><td><div id="tenant.consumption.write_batches" class="anchored"><code>tenant.consumption.write\_batches</code></div></td><td>Total number of KV write batches</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="tenant.consumption.write_bytes" class="anchored"><code>tenant.consumption.write\_bytes</code></div></td><td>Total number of bytes written to KV</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="tenant.consumption.write_requests" class="anchored"><code>tenant.consumption.write\_requests</code></div></td><td>Total number of KV write requests</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.cross_region_network_ru" class="anchored"><code>tenant.sql\_usage.cross\_region\_network\_ru</code></div></td><td>Total number of RUs charged for cross-region network traffic</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.estimated_cpu_seconds" class="anchored"><code>tenant.sql\_usage.estimated\_cpu\_seconds</code></div></td><td>Estimated amount of CPU consumed by a virtual cluster</td><td>COUNTER</td><td>SECONDS</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.external_io_egress_bytes" class="anchored"><code>tenant.sql\_usage.external\_io\_egress\_bytes</code></div></td><td>Total number of bytes written to external services such as cloud storage providers</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.external_io_ingress_bytes" class="anchored"><code>tenant.sql\_usage.external\_io\_ingress\_bytes</code></div></td><td>Total number of bytes read from external services such as cloud storage providers</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.kv_request_units" class="anchored"><code>tenant.sql\_usage.kv\_request\_units</code></div></td><td>RU consumption attributable to KV</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.pgwire_egress_bytes" class="anchored"><code>tenant.sql\_usage.pgwire\_egress\_bytes</code></div></td><td>Total number of bytes transferred from a SQL pod to the client</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.provisioned_vcpus" class="anchored"><code>tenant.sql\_usage.provisioned\_vcpus</code></div></td><td>Number of vcpus available to the virtual cluster</td><td>GAUGE</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.read_batches" class="anchored"><code>tenant.sql\_usage.read\_batches</code></div></td><td>Total number of KV read batches</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.read_bytes" class="anchored"><code>tenant.sql\_usage.read\_bytes</code></div></td><td>Total number of bytes read from KV</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.read_requests" class="anchored"><code>tenant.sql\_usage.read\_requests</code></div></td><td>Total number of KV read requests</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.request_units" class="anchored"><code>tenant.sql\_usage.request\_units</code></div></td><td>RU consumption</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.sql_pods_cpu_seconds" class="anchored"><code>tenant.sql\_usage.sql\_pods\_cpu\_seconds</code></div></td><td>Total amount of CPU used by SQL pods</td><td>COUNTER</td><td>SECONDS</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.write_batches" class="anchored"><code>tenant.sql\_usage.write\_batches</code></div></td><td>Total number of KV write batches</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.write_bytes" class="anchored"><code>tenant.sql\_usage.write\_bytes</code></div></td><td>Total number of bytes written to KV</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="tenant.sql_usage.write_requests" class="anchored"><code>tenant.sql\_usage.write\_requests</code></div></td><td>Total number of KV write requests</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />self-hosted</td></tr> <tr><td><div id="timeseries.write.bytes" class="anchored"><code>timeseries.write.bytes</code></div></td><td>Total size in bytes of metric samples written to disk</td><td>COUNTER</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="timeseries.write.errors" class="anchored"><code>timeseries.write.errors</code></div></td><td>Total errors encountered while attempting to write metrics to disk</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="timeseries.write.samples" class="anchored"><code>timeseries.write.samples</code></div></td><td>Total number of metric samples written to disk</td><td>COUNTER</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="totalbytes" class="anchored"><code>totalbytes</code></div></td><td>Total number of bytes taken up by keys and values including non-live data</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="txn.aborts" class="anchored"><code>txn.aborts</code></div></td><td>Number of aborted KV transactions</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="txn.commits" class="anchored"><code>txn.commits</code></div></td><td>Number of committed KV transactions (including 1PC)</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="txn.commits1PC" class="anchored"><code>txn.commits1PC</code></div></td><td>Number of KV transaction one-phase commits</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="txn.durations" class="anchored"><code>txn.durations</code></div></td><td>KV transaction durations</td><td>HISTOGRAM</td><td>NANOSECONDS</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="txn.restarts" class="anchored"><code>txn.restarts</code></div></td><td>Number of restarted KV transactions</td><td>HISTOGRAM</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="txn.restarts.asyncwritefailure" class="anchored"><code>txn.restarts.asyncwritefailure</code></div></td><td>Number of restarts due to async consensus writes that failed to leave intents</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="txn.restarts.readwithinuncertainty" class="anchored"><code>txn.restarts.readwithinuncertainty</code></div></td><td>Number of restarts due to reading a new value within the uncertainty interval</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="txn.restarts.serializable" class="anchored"><code>txn.restarts.serializable</code></div></td><td>Number of restarts due to a forwarded commit timestamp and isolation=SERIALIZABLE</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="txn.restarts.txnaborted" class="anchored"><code>txn.restarts.txnaborted</code></div></td><td>Number of restarts due to an abort by a concurrent transaction (usually due to deadlock)</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="txn.restarts.txnpush" class="anchored"><code>txn.restarts.txnpush</code></div></td><td>Number of restarts due to a transaction push failure</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="txn.restarts.unknown" class="anchored"><code>txn.restarts.unknown</code></div></td><td>Number of restarts due to a unknown reasons</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="txn.restarts.writetooold" class="anchored"><code>txn.restarts.writetooold</code></div></td><td>Number of restarts due to a concurrent writer committing first</td><td>COUNTER</td><td>COUNT</td><td>Standard/<wbr />Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="txnwaitqueue.deadlocks_total" class="anchored"><code>txnwaitqueue.deadlocks\_total</code></div></td><td>Number of deadlocks detected by the txn wait queue</td><td>COUNTER</td><td>COUNT</td><td>self-hosted</td></tr> <tr><td><div id="valbytes" class="anchored"><code>valbytes</code></div></td><td>Number of bytes taken up by values</td><td>GAUGE</td><td>BYTES</td><td>Advanced/<wbr />self-hosted</td></tr> <tr><td><div id="valcount" class="anchored"><code>valcount</code></div></td><td>Count of all values</td><td>GAUGE</td><td>COUNT</td><td>Advanced/<wbr />self-hosted</td></tr> </tbody></table>

## See also

* <InternalLink path="troubleshooting-overview">Troubleshooting Overview</InternalLink>
* <InternalLink path="support-resources">Support Resources</InternalLink>
* <InternalLink path="monitoring-and-alerting#raw-status-endpoints">Raw Status Endpoints</InternalLink>
* <InternalLink path="essential-metrics-self-hosted">Essential Metrics for CockroachDB self-hosted Deployments</InternalLink>
* <InternalLink path="essential-metrics-advanced">Essential Metrics for CockroachDB Advanced Deployments</InternalLink>
