NativeLink
Reference

Metrics reference

Every OpenTelemetry instrument NativeLink declares, with its type, unit, attributes, Prometheus series, and whether the binary actually emits it. Autogenerated from the Rust source and its call sites.

NativeLink v1.7.2 declares 40 OpenTelemetry instruments. This page is generated from the declarations in nativelink-util/src/metrics.rs and from every .add() and .record() call site across the workspace, so the Emitted column is not a claim, it is the result of looking.

That column is the reason this page is generated rather than written. Declaring an instrument costs nothing and emits nothing; the instrument only produces a series when some code path calls it. A catalogue written by hand cannot tell those two states apart, and the gap between them is where dashboards go quietly wrong.

Every instrument at a glance

InstrumentPrometheus seriesKindEmittedUnder what conditions
cache.operation.durationnativelink_cache_operation_durationHistogramConditionallyonly for stores explicitly wrapped in a cache_metrics spec
cache.operationsnativelink_cache_operations_totalCounterConditionallyonly for stores explicitly wrapped in a cache_metrics spec
cache.ionativelink_cache_io_totalCounterConditionallyonly for stores explicitly wrapped in a cache_metrics spec
cache.sizenativelink_cache_sizeUpDownCounterYeswhenever the code path runs
cache.entriesnativelink_cache_entriesUpDownCounterYeswhenever the code path runs
cache.item.sizenativelink_cache_item_sizeHistogramConditionallyonly for stores explicitly wrapped in a cache_metrics spec
execution.stage.durationnativelink_execution_stage_durationHistogramConditionallyscheduler process only
execution.total.durationnativelink_execution_total_durationHistogramConditionallyscheduler process only
execution.queue.timenativelink_execution_queue_timeHistogramConditionallyscheduler process only
execution.active.countnativelink_execution_active_count (unreferenced)UpDownCounterConditionallyscheduler process only
execution.completed.countnativelink_execution_completed_count_totalCounterConditionallyscheduler process only
execution.stage.transitionsnativelink_execution_stage_transitions_totalCounterConditionallyscheduler process only
execution.cpu.timenativelink_execution_cpu_time (unreferenced)HistogramConditionallyscheduler process only
execution.peak.memorynativelink_execution_peak_memory (unreferenced)HistogramConditionallyscheduler process only
execution.output.sizenativelink_execution_output_sizeHistogramConditionallyscheduler process only
execution.retry.countnativelink_execution_retry_count_totalCounterConditionallyscheduler process only
worker.connected.countnativelink_worker_connected_count (unreferenced)UpDownCounterConditionallyscheduler process only
worker.connectionsnativelink_worker_connections (unreferenced)CounterConditionallyscheduler process only
worker.disconnectionsnativelink_worker_disconnections (unreferenced)CounterConditionallyscheduler process only
scheduler.dispatch.requeuesnativelink_scheduler_dispatch_requeues (unreferenced)CounterConditionallyscheduler process only
worker.keepalivesnativelink_worker_keepalives (unreferenced)CounterConditionallyscheduler process only
worker.keepalive.gapnativelink_worker_keepalive_gap (unreferenced)HistogramConditionallyscheduler process only
worker.state.countnativelink_worker_state_count (unreferenced)UpDownCounterConditionallyscheduler process only
rpc.server.durationnativelink_rpc_server_duration (unreferenced)HistogramYeswhenever the code path runs
scheduler.matching.durationnativelink_scheduler_matching_duration (unreferenced)HistogramConditionallyscheduler process only
scheduler.matching.passesnativelink_scheduler_matching_passes (unreferenced)CounterConditionallyscheduler process only
scheduler.unsatisfiable.queuednativelink_scheduler_unsatisfiable_queued (unreferenced)GaugeConditionallyscheduler process only
scheduler.unsatisfiable.failednativelink_scheduler_unsatisfiable_failed (unreferenced)CounterConditionallyscheduler process only
scheduler.queue.depthnativelink_scheduler_queue_depth (unreferenced)GaugeConditionallyscheduler process only
scheduler.queue.retirednativelink_scheduler_queue_retired (unreferenced)CounterConditionallyscheduler process only
scheduler.matching.parked_dispatchednativelink_scheduler_matching_parked_dispatched (unreferenced)CounterConditionallyscheduler process only
scheduler.awaited_action.orphansnativelink_scheduler_awaited_action_orphans (unreferenced)CounterConditionallyscheduler process only
scheduler.sweep.failuresnativelink_scheduler_sweep_failures (unreferenced)CounterConditionallyscheduler process only
scheduler.hints.resolutionsnativelink_scheduler_hints_resolutions (unreferenced)CounterConditionallyscheduler process only
store.tier.operationsnativelink_store_tier_operations (unreferenced)CounterConditionallyonly through a fast_slow store
store.tier.ionativelink_store_tier_io (unreferenced)CounterConditionallyonly through a fast_slow store
health.checksnativelink_health_checks (unreferenced)CounterYeswhenever the code path runs
connection.pool.availablenativelink_connection_pool_available (unreferenced)HistogramYeswhenever the code path runs
connection.pool.acquisitionsnativelink_connection_pool_acquisitions (unreferenced)CounterYeswhenever the code path runs
connection.reconnectsnativelink_connection_reconnects (unreferenced)CounterYeswhenever the code path runs

How an instrument becomes a Prometheus series

NativeLink speaks OTLP only; there is no Prometheus scrape endpoint in the binary. The names in the middle column above are what the shipped OpenTelemetry collector produces after two transformations:

  1. The Prometheus exporter in otel-collector-config.yaml is configured with namespace: nativelink, which prefixes every series with nativelink_.
  2. The exporter rewrites the OTLP name into Prometheus form: dots become underscores, and monotonic counters gain a _total suffix. Histograms fan out into _bucket, _sum and _count series.

cache.operations (a counter) is therefore scraped as nativelink_cache_operations_total, and cache.operation.duration (a histogram) as nativelink_cache_operation_duration_bucket and friends. Change the collector's namespace and every name on this page changes with it.

Where a name in the Prometheus series column is unmarked, it is not a prediction: it is the name that actually appears in the shipped rules, dashboards and alerts under deployment-examples/metrics/ and kubernetes/. A name marked (unreferenced) is derived from the two rules above, because no shipped artifact mentions that metric at all: nothing has ever queried it, so nothing has confirmed the exporter's spelling of it.

Declared but never emitted

Every instrument declared in metrics.rs has at least one call site.

Cache metrics

Global cache metrics instruments.

Declared as CACHE_METRICS in nativelink-util/src/metrics.rs:438, backed by the CacheMetrics struct.

Every cache instrument is emitted from one place: the cache_metrics store wrapper. A store that is not wrapped emits nothing, no matter how the collector is configured.

cache.operation.duration

Histogram of cache operation durations in milliseconds

PropertyValue
Instrument typeHistogram<f64>
Fieldcache_operation_duration
Unitms
Prometheus seriesnativelink_cache_operation_duration
EmittedConditionally. only for stores explicitly wrapped in a cache_metrics spec
Declared atnativelink-util/src/metrics.rs:442
Emitted fromnativelink-store/src/cache_metrics_store.rs:73

Histogram buckets: 19 explicit boundaries, from 0.001 to 5000.0 ms. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

cache.operations

Counter of cache operations by type and result

cache.io

Counter of bytes read/written during cache operations

PropertyValue
Instrument typeCounter<u64>
Fieldcache_io
UnitBy
Prometheus seriesnativelink_cache_io_total
EmittedConditionally. only for stores explicitly wrapped in a cache_metrics spec
Declared atnativelink-util/src/metrics.rs:481
Emitted fromnativelink-store/src/cache_metrics_store.rs:80, nativelink-store/src/cache_metrics_store.rs:248

cache.size

Current total size of all cached data in bytes

PropertyValue
Instrument typeUpDownCounter<i64>
Fieldcache_size
UnitBy
Prometheus seriesnativelink_cache_size
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:487
Emitted fromnativelink-util/src/evicting_map.rs:468

cache.entries

Current number of entries in cache

PropertyValue
Instrument typeUpDownCounter<i64>
Fieldcache_entries
Unit{entry}
Prometheus seriesnativelink_cache_entries
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:493
Emitted fromnativelink-util/src/evicting_map.rs:468

cache.item.size

Histogram of individual cache entry sizes in bytes

PropertyValue
Instrument typeHistogram<u64>
Fieldcache_entry_size
UnitBy
Prometheus seriesnativelink_cache_item_size
EmittedConditionally. only for stores explicitly wrapped in a cache_metrics spec
Declared atnativelink-util/src/metrics.rs:499
Emitted fromnativelink-store/src/cache_metrics_store.rs:83

Execution metrics

Global remote execution metrics instruments.

Declared as EXECUTION_METRICS in nativelink-util/src/metrics.rs:539, backed by the ExecutionMetrics struct.

Execution instruments are emitted from the scheduler process as actions change state, plus the per-action CPU time and peak memory a worker reports back when it finishes. Worker processes emit no execution metrics of their own.

execution.stage.duration

Histogram of stage durations in seconds

PropertyValue
Instrument typeHistogram<f64>
Fieldexecution_stage_duration
Units
Prometheus seriesnativelink_execution_stage_duration
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:543
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:109

Histogram buckets: 15 explicit boundaries, from 0.001 to 3600.0 s. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

execution.total.duration

Histogram of total execution durations in seconds

PropertyValue
Instrument typeHistogram<f64>
Fieldexecution_total_duration
Units
Prometheus seriesnativelink_execution_total_duration
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:568
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:109

Histogram buckets: 13 explicit boundaries, from 0.01 to 7200.0 s. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

execution.queue.time

Histogram of queue wait times in seconds

PropertyValue
Instrument typeHistogram<f64>
Fieldexecution_queue_time
Units
Prometheus seriesnativelink_execution_queue_time
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:593
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:109

Histogram buckets: 12 explicit boundaries, from 0.001 to 600.0 s. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

execution.active.count

Current number of actions in each stage

PropertyValue
Instrument typeUpDownCounter<i64>
Fieldexecution_active_count
Unit{action}
Prometheus seriesnativelink_execution_active_count (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:613
Emitted fromnativelink-scheduler/src/memory_awaited_action_db.rs:425, nativelink-scheduler/src/memory_awaited_action_db.rs:672, nativelink-scheduler/src/memory_awaited_action_db.rs:679, nativelink-scheduler/src/memory_awaited_action_db.rs:824, nativelink-scheduler/src/store_awaited_action_db.rs:716

execution.completed.count

Total number of completed executions

PropertyValue
Instrument typeCounter<u64>
Fieldexecution_completed_count
Unit{action}
Prometheus seriesnativelink_execution_completed_count_total
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:619
Emitted fromnativelink-scheduler/src/memory_awaited_action_db.rs:698, nativelink-scheduler/src/memory_awaited_action_db.rs:710, nativelink-scheduler/src/simple_scheduler_state_manager.rs:108, nativelink-scheduler/src/simple_scheduler_state_manager.rs:118

execution.stage.transitions

Number of stage transitions

PropertyValue
Instrument typeCounter<u64>
Fieldexecution_stage_transitions
Unit{transition}
Prometheus seriesnativelink_execution_stage_transitions_total
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:625
Emitted fromnativelink-scheduler/src/memory_awaited_action_db.rs:665, nativelink-scheduler/src/simple_scheduler_state_manager.rs:97

execution.cpu.time

CPU time an action used, as sampled by the worker.

PropertyValue
Instrument typeHistogram<f64>
Fieldexecution_cpu_time
Units
Prometheus seriesnativelink_execution_cpu_time (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:631
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:1784

Histogram buckets: 12 explicit boundaries, from 0.1 to 7200.0 s. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

execution.peak.memory

Peak memory an action used, as sampled by the worker.

PropertyValue
Instrument typeHistogram<u64>
Fieldexecution_peak_memory
UnitBy
Prometheus seriesnativelink_execution_peak_memory (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:640
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:1776

Histogram buckets: 8 explicit boundaries, from 1_048_576.0 to 68_719_476_736.0 By. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

execution.output.size

Histogram of output sizes in bytes

PropertyValue
Instrument typeHistogram<u64>
Fieldexecution_output_size
UnitBy
Prometheus seriesnativelink_execution_output_size
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:656
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:109

Histogram buckets: 8 explicit boundaries, from 1_024.0 to 10_737_418_240.0 By. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

execution.retry.count

Counter for execution retries

PropertyValue
Instrument typeCounter<u64>
Fieldexecution_retry_count
Unit{retry}
Prometheus seriesnativelink_execution_retry_count_total
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:672
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:130

Worker fleet metrics

Global worker fleet metrics instruments.

Declared as WORKER_METRICS in nativelink-util/src/metrics.rs:881, backed by the WorkerMetrics struct.

Worker fleet instruments are emitted from the scheduler process as workers connect, heartbeat, pause, drain and leave. They describe the pool as this scheduler instance sees it.

worker.connected.count

Workers currently connected.

PropertyValue
Instrument typeUpDownCounter<i64>
Fieldworker_connected_count
Unit{worker}
Prometheus seriesnativelink_worker_connected_count (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:885
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:442, nativelink-scheduler/src/api_worker_scheduler.rs:1378

worker.connections

Workers that have joined, cumulative.

PropertyValue
Instrument typeCounter<u64>
Fieldworker_connections
Unit{worker}
Prometheus seriesnativelink_worker_connections (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:891
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:442

worker.disconnections

Workers that have left, cumulative, by reason.

PropertyValue
Instrument typeCounter<u64>
Fieldworker_disconnections
Unit{worker}
Prometheus seriesnativelink_worker_disconnections (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:897
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:1378

scheduler.dispatch.requeues

Dispatches requeued untried, by reason.

PropertyValue
Instrument typeCounter<u64>
Fielddispatch_requeues
Unit—
Prometheus seriesnativelink_scheduler_dispatch_requeues (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:903
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:1137, nativelink-scheduler/src/api_worker_scheduler.rs:1574, nativelink-scheduler/src/api_worker_scheduler.rs:1872, nativelink-scheduler/src/api_worker_scheduler.rs:1903

worker.keepalives

Keepalives received, cumulative.

PropertyValue
Instrument typeCounter<u64>
Fieldworker_keepalives
Unit{keepalive}
Prometheus seriesnativelink_worker_keepalives (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:908
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:400

worker.keepalive.gap

Seconds between consecutive messages from a worker.

PropertyValue
Instrument typeHistogram<f64>
Fieldworker_keepalive_gap
Units
Prometheus seriesnativelink_worker_keepalive_gap (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:914
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:348

Histogram buckets: 12 explicit boundaries, from 1.0 to 60.0 s. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

worker.state.count

Connected workers currently paused or draining.

gRPC server metrics

Global gRPC serving metrics.

One duration histogram covers rate, errors and latency: the count gives rate, the status attribute separates errors, and the buckets give latency.

Declared as RPC_METRICS in nativelink-util/src/metrics.rs:1025, backed by the RpcMetrics struct.

Emitted by the OtlpLayer tower middleware on every gRPC server NativeLink starts, so a CAS, a scheduler and a worker API endpoint each report their own.

rpc.server.duration

Duration of inbound gRPC calls, by service, method and status.

PropertyValue
Instrument typeHistogram<f64>
Fieldrpc_server_duration
Units
Prometheus seriesnativelink_rpc_server_duration (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:1029
Emitted fromnativelink-util/src/telemetry.rs:375

Histogram buckets: 15 explicit boundaries, from 0.001 to 300.0 s. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

Scheduler metrics

Global scheduler metrics.

Declared as SCHEDULER_METRICS in nativelink-util/src/metrics.rs:1078, backed by the SchedulerOtlpMetrics struct.

Emitted from the scheduler process once per matching pass, whether or not the pass assigned anything.

scheduler.matching.duration

How long a matching pass takes. The saturation signal: this climbing while the queue is non-empty means matching is the bottleneck.

PropertyValue
Instrument typeHistogram<f64>
Fieldmatching_duration
Units
Prometheus seriesnativelink_scheduler_matching_duration (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1082
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:449

Histogram buckets: 13 explicit boundaries, from 0.0001 to 10.0 s. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

scheduler.matching.passes

Matching passes, by result.

PropertyValue
Instrument typeCounter<u64>
Fieldmatching_passes
Unit{pass}
Prometheus seriesnativelink_scheduler_matching_passes (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1091
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:449

scheduler.unsatisfiable.queued

Queued actions seen in the last matching pass that no worker connected to this scheduler could run even when idle. Per scheduler instance, judged against that instance's own workers.

PropertyValue
Instrument typeGauge<u64>
Fieldunsatisfiable_queued
Unit{action}
Prometheus seriesnativelink_scheduler_unsatisfiable_queued (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1097
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:1019

scheduler.unsatisfiable.failed

Queued actions failed because no worker could ever run them, by the properties that could not be satisfied.

PropertyValue
Instrument typeCounter<u64>
Fieldunsatisfiable_failed
Unit{action}
Prometheus seriesnativelink_scheduler_unsatisfiable_failed (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1105
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:551

scheduler.queue.depth

Queued actions the last matching pass read.

PropertyValue
Instrument typeGauge<u64>
Fieldqueue_depth
Unit{action}
Prometheus seriesnativelink_scheduler_queue_depth (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1111
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:1020

scheduler.queue.retired

Queued actions retired for having no client.

PropertyValue
Instrument typeCounter<u64>
Fieldqueue_retired
Unit{action}
Prometheus seriesnativelink_scheduler_queue_retired (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1117
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:597

scheduler.matching.parked_dispatched

Actions a pass parked for want of room and dispatched when room opened before the pass ended, ahead of the newer actions it was reading.

PropertyValue
Instrument typeCounter<u64>
Fieldparked_dispatched
Unit{action}
Prometheus seriesnativelink_scheduler_matching_parked_dispatched (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1123
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:996

scheduler.awaited_action.orphans

Listed operations whose record was gone on read, by site.

PropertyValue
Instrument typeCounter<u64>
Fieldawaited_action_orphans
Unit{operation}
Prometheus seriesnativelink_scheduler_awaited_action_orphans (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1131
Emitted fromnativelink-scheduler/src/admin.rs:107, nativelink-scheduler/src/simple_scheduler.rs:591, nativelink-scheduler/src/simple_scheduler_state_manager.rs:545, nativelink-scheduler/src/simple_scheduler_state_manager.rs:1467, nativelink-scheduler/src/simple_scheduler_state_manager.rs:1490

scheduler.sweep.failures

Abandoned-queue sweeps that failed before finishing.

PropertyValue
Instrument typeCounter<u64>
Fieldsweep_failures
Unit{sweep}
Prometheus seriesnativelink_scheduler_sweep_failures (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1139
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:1241

scheduler.hints.resolutions

Actions sized by the historical resource scheduler, by source.

PropertyValue
Instrument typeCounter<u64>
Fieldhint_resolutions
Unit{action}
Prometheus seriesnativelink_scheduler_hints_resolutions (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1145
Emitted fromnativelink-scheduler/src/historical_resource_scheduler.rs:513, nativelink-scheduler/src/historical_resource_scheduler.rs:517, nativelink-scheduler/src/historical_resource_scheduler.rs:520

Store tier metrics

Global tiered-store metrics.

Declared as STORE_TIER_METRICS in nativelink-util/src/metrics.rs:1264, backed by the StoreTierMetrics struct.

Emitted from the fast_slow store wrapper only. A deployment without a fast_slow store emits none of these.

store.tier.operations

Reads served per tier, by result.

PropertyValue
Instrument typeCounter<u64>
Fieldtier_operations
Unit{operation}
Prometheus seriesnativelink_store_tier_operations (not referenced by any shipped rule or dashboard)
EmittedConditionally. only through a fast_slow store
Declared atnativelink-util/src/metrics.rs:1268
Emitted fromnativelink-store/src/fast_slow_store.rs:340, nativelink-store/src/fast_slow_store.rs:807, nativelink-store/src/fast_slow_store.rs:823, nativelink-store/src/fast_slow_store.rs:833, nativelink-store/src/fast_slow_store.rs:858, nativelink-store/src/fast_slow_store.rs:880

store.tier.io

Bytes moved per tier and direction.

PropertyValue
Instrument typeCounter<u64>
Fieldtier_io
UnitBy
Prometheus seriesnativelink_store_tier_io (not referenced by any shipped rule or dashboard)
EmittedConditionally. only through a fast_slow store
Declared atnativelink-util/src/metrics.rs:1274
Emitted fromnativelink-store/src/fast_slow_store.rs:349, nativelink-store/src/fast_slow_store.rs:824, nativelink-store/src/fast_slow_store.rs:859, nativelink-store/src/fast_slow_store.rs:881

Health check metrics

Global health-check metrics.

Declared as HEALTH_METRICS in nativelink-util/src/metrics.rs:1315, backed by the HealthMetrics struct.

Emitted each time the health check endpoint runs, one observation per registered health indicator.

health.checks

Health check results, by namespace and status.

PropertyValue
Instrument typeCounter<u64>
Fieldhealth_checks
Unit{check}
Prometheus seriesnativelink_health_checks (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:1319
Emitted fromnativelink-util/src/health_utils.rs:248

Connection pool metrics

Global connection-pool metrics.

Declared as CONNECTION_METRICS in nativelink-util/src/metrics.rs:1346, backed by the ConnectionMetrics struct.

Emitted by the gRPC connection manager and the Redis store as they hand out and re-establish connections. A deployment that uses neither emits none of these.

connection.pool.available

Free slots at the moment a connection was taken.

PropertyValue
Instrument typeHistogram<u64>
Fieldpool_available
Unit{connection}
Prometheus seriesnativelink_connection_pool_available (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:1350
Emitted fromnativelink-store/src/redis_store.rs:559, nativelink-util/src/connection_manager.rs:341, nativelink-util/src/connection_manager.rs:351

Histogram buckets: 11 explicit boundaries, from 0.0 to 512.0 {connection}. Anything past the last boundary lands in the +Inf bucket, so a quantile computed above it is a lower bound, not a measurement.

connection.pool.acquisitions

Acquisitions, by pool and result.

PropertyValue
Instrument typeCounter<u64>
Fieldpool_acquisitions
Unit{acquisition}
Prometheus seriesnativelink_connection_pool_acquisitions (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:1359
Emitted fromnativelink-store/src/redis_store.rs:559, nativelink-util/src/connection_manager.rs:341, nativelink-util/src/connection_manager.rs:351

connection.reconnects

Reconnects, by pool.

PropertyValue
Instrument typeCounter<u64>
Fieldreconnects
Unit{reconnect}
Prometheus seriesnativelink_connection_reconnects (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:1365
Emitted fromnativelink-store/src/redis_store.rs:319

Attributes

Every attribute key NativeLink attaches to a metric, and the closed set of values it can take. The Prometheus label is the key with dots replaced by underscores.

Cache attributes

AttributePrometheus labelRust constantValues
cache.typecache_typeCACHE_TYPEopen (free-form string)
cache.operation.namecache_operation_nameCACHE_OPERATIONread, write, delete, evict
cache.operation.resultcache_operation_resultCACHE_RESULThit, miss, expired, success, error

Execution attributes

AttributePrometheus labelRust constantValues
execution.stageexecution_stageEXECUTION_STAGEunknown, cache_check, queued, executing, completed
execution.resultexecution_resultEXECUTION_RESULTsuccess, failure, cancelled, timeout, cache_hit
execution.instanceexecution_instanceEXECUTION_INSTANCEopen (free-form string)
execution.priorityexecution_priorityEXECUTION_PRIORITYopen (free-form string)
execution.worker_idexecution_worker_idEXECUTION_WORKER_IDopen (free-form string)
execution.outcomeexecution_outcomeEXECUTION_OUTCOMEopen (free-form string)
execution.action_mnemonicexecution_action_mnemonicEXECUTION_ACTION_MNEMONICopen (free-form string)
execution.exit_codeexecution_exit_codeEXECUTION_EXIT_CODEopen (free-form string)
execution.action_digestexecution_action_digestEXECUTION_ACTION_DIGESTopen (free-form string)

Worker attributes

AttributePrometheus labelRust constantValues
worker.stateworker_stateWORKER_STATEopen (free-form string)
worker.disconnect.reasonworker_disconnect_reasonWORKER_DISCONNECT_REASONopen (free-form string)

gRPC attributes

AttributePrometheus labelRust constantValues
rpc.servicerpc_serviceRPC_SERVICEopen (free-form string)
rpc.methodrpc_methodRPC_METHODopen (free-form string)
rpc.grpc.status_coderpc_grpc_status_codeRPC_STATUS_CODEopen (free-form string)

Scheduler attributes

AttributePrometheus labelRust constantValues
scheduler.match.resultscheduler_match_resultSCHEDULER_MATCH_RESULTopen (free-form string)
scheduler.unsatisfiable.propertiesscheduler_unsatisfiable_propertiesSCHEDULER_UNSATISFIABLE_PROPERTIESopen (free-form string)

Store tier attributes

AttributePrometheus labelRust constantValues
store.tierstore_tierSTORE_TIERopen (free-form string)
store.resultstore_resultSTORE_RESULTopen (free-form string)
store.directionstore_directionSTORE_DIRECTIONopen (free-form string)

Health attributes

AttributePrometheus labelRust constantValues
health.namespacehealth_namespaceHEALTH_NAMESPACEopen (free-form string)
health.statushealth_statusHEALTH_STATUSopen (free-form string)

Connection attributes

AttributePrometheus labelRust constantValues
connection.poolconnection_poolCONNECTION_POOLopen (free-form string)
connection.resultconnection_resultCONNECTION_RESULTopen (free-form string)

cache.operation.name values

ValueMeaning
readData retrieval operations (get, peek, contains, etc.)
writeData storage operations (insert, update, replace, etc.)
deleteExplicit data removal operations
evictAutomatic cache maintenance (evictions, TTL cleanup, etc.)

cache.operation.result values

ValueMeaning
hitData found and valid (Read operations)
missData not found (Read operations)
expiredData found but invalid/expired (Read operations)
successOperation completed successfully (Write/Delete/Evict operations)
errorOperation failed (any operation type)

execution.stage values

ValueMeaning
unknownUnknown stage
cache_checkChecking cache for existing results
queuedAction is queued waiting for execution
executingAction is being executed by a worker
completedAction execution completed

execution.result values

ValueMeaning
successExecution completed successfully
failureExecution failed
cancelledExecution was cancelled
timeoutExecution timed out
cache_hitResult was found in cache

Reading the source

If anything here disagrees with the binary, the source wins:

Where to go next

NextWire up the telemetry pipeline

The collector, the exporter interval and the queries worth alerting on: the operational half of this reference.

SidewaysConfiguration reference

Every configuration field, generated the same way from the same source of truth.