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.7 declares 56 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.input_mount.cache_hitsnativelink_worker_input_mount_cache_hits (unreferenced)CounterYeswhenever the code path runs
worker.input_mount.cache_missesnativelink_worker_input_mount_cache_misses (unreferenced)CounterYeswhenever the code path runs
worker.input_mount.fallbacksnativelink_worker_input_mount_fallbacks (unreferenced)CounterYeswhenever the code path runs
worker.input_mount.prepare_failuresnativelink_worker_input_mount_prepare_failures (unreferenced)CounterYeswhenever the code path runs
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
worker.input.relinksnativelink_worker_input_relinks (unreferenced)CounterYeswhenever the code path runs
worker.prepare.retriesnativelink_worker_prepare_retries (unreferenced)CounterYeswhenever the code path runs
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.agenativelink_scheduler_queue_age (unreferenced)GaugeConditionallyscheduler process only
scheduler.queue.oldest_agenativelink_scheduler_queue_oldest_age (unreferenced)GaugeConditionallyscheduler process only
scheduler.executing.agenativelink_scheduler_executing_age (unreferenced)GaugeConditionallyscheduler process only
scheduler.executing.oldest_agenativelink_scheduler_executing_oldest_age (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.worker.holdsnativelink_scheduler_worker_holds (unreferenced)CounterConditionallyscheduler process only
scheduler.worker.heldnativelink_scheduler_worker_held (unreferenced)GaugeConditionallyscheduler 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.object.throttlesnativelink_store_object_throttles (unreferenced)CounterYeswhenever the code path runs
store.object.read_limitnativelink_store_object_read_limit (unreferenced)GaugeYeswhenever the code path runs
store.object.read_waitsnativelink_store_object_read_waits (unreferenced)CounterYeswhenever the code path runs
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
retry.outcomesnativelink_retry_outcomes (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:449, 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:453
Emitted fromnativelink-store/src/cache_metrics_store.rs:75

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:492
Emitted fromnativelink-store/src/cache_metrics_store.rs:82, nativelink-store/src/cache_metrics_store.rs:269

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:498
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:504
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:510
Emitted fromnativelink-store/src/cache_metrics_store.rs:85

Execution metrics

Global remote execution metrics instruments.

Declared as EXECUTION_METRICS in nativelink-util/src/metrics.rs:550, 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:554
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:154

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:579
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:154

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:604
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:154

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:624
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:630
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:153, nativelink-scheduler/src/simple_scheduler_state_manager.rs:163

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:636
Emitted fromnativelink-scheduler/src/memory_awaited_action_db.rs:665, nativelink-scheduler/src/simple_scheduler_state_manager.rs:142

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:642
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:2480

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:651
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:2472

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:667
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:154

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:683
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:175

INPUT_MOUNT_METRICS

Input mount counters, emitted by workers rather than schedulers.

Declared as INPUT_MOUNT_METRICS in nativelink-util/src/metrics.rs:892, backed by the InputMountMetrics struct.

worker.input_mount.cache_hits

Cached directories reused for input mount preparation.

PropertyValue
Instrument typeCounter<u64>
Fieldcache_hits
Unit—
Prometheus seriesnativelink_worker_input_mount_cache_hits (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:895
Emitted fromnativelink-worker/src/directory_cache.rs:471, nativelink-worker/src/directory_cache.rs:485

worker.input_mount.cache_misses

Input mount directories requiring cache construction.

PropertyValue
Instrument typeCounter<u64>
Fieldcache_misses
Unit—
Prometheus seriesnativelink_worker_input_mount_cache_misses (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:899
Emitted fromnativelink-worker/src/directory_cache.rs:490

worker.input_mount.fallbacks

Actions using ordinary input preparation despite configured input mounts.

PropertyValue
Instrument typeCounter<u64>
Fieldfallbacks
Unit—
Prometheus seriesnativelink_worker_input_mount_fallbacks (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:903
Emitted fromnativelink-worker/src/running_actions_manager.rs:2687, nativelink-worker/src/running_actions_manager.rs:2727

worker.input_mount.prepare_failures

Failed input mount preparations retried without mounts.

PropertyValue
Instrument typeCounter<u64>
Fieldprepare_failures
Unit—
Prometheus seriesnativelink_worker_input_mount_prepare_failures (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:909
Emitted fromnativelink-worker/src/running_actions_manager.rs:2726

Worker fleet metrics

Global worker fleet metrics instruments.

Declared as WORKER_METRICS in nativelink-util/src/metrics.rs:929, 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:933
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:581, nativelink-scheduler/src/api_worker_scheduler.rs:2019

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:939
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:581

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:945
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:2019

Input hardlinks made again after their source was evicted mid-staging, by kind.

PropertyValue
Instrument typeCounter<u64>
Fieldinput_relinks
Unit—
Prometheus seriesnativelink_worker_input_relinks (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:951
Emitted fromnativelink-worker/src/running_actions_manager.rs:1092, nativelink-worker/src/running_actions_manager.rs:1229, nativelink-worker/src/running_actions_manager.rs:1247

worker.prepare.retries

Input fetches tried again on the worker after a transient store failure: retried per attempt made again, then one of recovered, exhausted, failed or abandoned.

PropertyValue
Instrument typeCounter<u64>
Fieldprepare_retries
Unit—
Prometheus seriesnativelink_worker_prepare_retries (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:956
Emitted fromnativelink-worker/src/running_actions_manager.rs:1068

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:961
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:1680, nativelink-scheduler/src/api_worker_scheduler.rs:1909, nativelink-scheduler/src/api_worker_scheduler.rs:2251, nativelink-scheduler/src/api_worker_scheduler.rs:2568, nativelink-scheduler/src/api_worker_scheduler.rs:2599, nativelink-scheduler/src/simple_scheduler_state_manager.rs:680

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:966
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:539

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:972
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:473

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:1107, 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:1111
Emitted fromnativelink-util/src/telemetry.rs:371

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:1160, 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:1164
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:478

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:1173
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:478

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:1179
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:1100

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:1187
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:580

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:1193
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:1101

scheduler.queue.age

Queued actions the last matching pass read, by age bucket.

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

scheduler.queue.oldest_age

Age of the oldest action the last matching pass read, in seconds.

PropertyValue
Instrument typeGauge<f64>
Fieldqueue_oldest_age
Units
Prometheus seriesnativelink_scheduler_queue_oldest_age (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1207
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:1102

scheduler.executing.age

Executing actions the last executing sweep read, by age bucket.

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

scheduler.executing.oldest_age

How long the longest-executing action the last sweep read has been executing, in seconds.

PropertyValue
Instrument typeGauge<f64>
Fieldexecuting_oldest_age
Units
Prometheus seriesnativelink_scheduler_executing_oldest_age (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1223
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:1383

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:1231
Emitted fromnativelink-scheduler/src/simple_scheduler_state_manager.rs:784

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:1237
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:1077

scheduler.worker.holds

Workers held for a queued action that kept finding no room, by what began or ended the hold.

PropertyValue
Instrument typeCounter<u64>
Fieldworker_holds
Unit{hold}
Prometheus seriesnativelink_scheduler_worker_holds (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1245
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:719, nativelink-scheduler/src/api_worker_scheduler.rs:932

scheduler.worker.held

Workers held for such an action right now.

PropertyValue
Instrument typeGauge<u64>
Fieldheld_workers
Unit{worker}
Prometheus seriesnativelink_scheduler_worker_held (not referenced by any shipped rule or dashboard)
EmittedConditionally. scheduler process only
Declared atnativelink-util/src/metrics.rs:1253
Emitted fromnativelink-scheduler/src/api_worker_scheduler.rs:720, nativelink-scheduler/src/api_worker_scheduler.rs:933

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:1259
Emitted fromnativelink-scheduler/src/admin.rs:107, nativelink-scheduler/src/simple_scheduler.rs:620, nativelink-scheduler/src/simple_scheduler_state_manager.rs:615, nativelink-scheduler/src/simple_scheduler_state_manager.rs:732, nativelink-scheduler/src/simple_scheduler_state_manager.rs:1663, nativelink-scheduler/src/simple_scheduler_state_manager.rs:1686

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:1267
Emitted fromnativelink-scheduler/src/simple_scheduler.rs:1335, nativelink-scheduler/src/simple_scheduler.rs:1394

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:1273
Emitted fromnativelink-scheduler/src/historical_resource_scheduler.rs:643, nativelink-scheduler/src/historical_resource_scheduler.rs:647, nativelink-scheduler/src/historical_resource_scheduler.rs:650

STORE_METRICS

Global object-store metrics.

Declared as STORE_METRICS in nativelink-util/src/metrics.rs:1509, backed by the StoreMetrics struct.

store.object.throttles

Throttled responses, by provider and operation.

PropertyValue
Instrument typeCounter<u64>
Fieldobject_throttles
Unit{response}
Prometheus seriesnativelink_store_object_throttles (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:1513
Emitted fromnativelink-store/src/azure_blob_store.rs:322

store.object.read_limit

The adaptive read limit as it stands, by provider.

PropertyValue
Instrument typeGauge<u64>
Fieldobject_read_limit
Unit{request}
Prometheus seriesnativelink_store_object_read_limit (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:1519
Emitted fromnativelink-util/src/adaptive_permits.rs:87, nativelink-util/src/adaptive_permits.rs:168, nativelink-util/src/adaptive_permits.rs:196

store.object.read_waits

Reads that waited for a read permit, by provider.

PropertyValue
Instrument typeCounter<u64>
Fieldobject_read_waits
Unit{request}
Prometheus seriesnativelink_store_object_read_waits (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:1525
Emitted fromnativelink-util/src/adaptive_permits.rs:105

Store tier metrics

Global tiered-store metrics.

Declared as STORE_TIER_METRICS in nativelink-util/src/metrics.rs:1571, 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:1575
Emitted fromnativelink-store/src/fast_slow_store.rs:348, nativelink-store/src/fast_slow_store.rs:877, nativelink-store/src/fast_slow_store.rs:893, nativelink-store/src/fast_slow_store.rs:903, nativelink-store/src/fast_slow_store.rs:920, nativelink-store/src/fast_slow_store.rs:950, nativelink-store/src/fast_slow_store.rs:972

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:1581
Emitted fromnativelink-store/src/fast_slow_store.rs:357, nativelink-store/src/fast_slow_store.rs:894, nativelink-store/src/fast_slow_store.rs:951, nativelink-store/src/fast_slow_store.rs:973

Health check metrics

Global health-check metrics.

Declared as HEALTH_METRICS in nativelink-util/src/metrics.rs:1622, 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:1626
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:1653, 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:1657
Emitted fromnativelink-store/src/redis_store.rs:617, nativelink-util/src/connection_manager.rs:342, nativelink-util/src/connection_manager.rs:352

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:1666
Emitted fromnativelink-store/src/redis_store.rs:617, nativelink-util/src/connection_manager.rs:342, nativelink-util/src/connection_manager.rs:352

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:1672
Emitted fromnativelink-store/src/redis_store.rs:319

RETRY_METRICS

Global metrics for operations run under a [crate::retry::Retrier].

Declared as RETRY_METRICS in nativelink-util/src/metrics.rs:1753, backed by the RetryMetrics struct.

retry.outcomes

Retry events, by client and outcome.

PropertyValue
Instrument typeCounter<u64>
Fieldoutcomes
Unit{event}
Prometheus seriesnativelink_retry_outcomes (not referenced by any shipped rule or dashboard)
EmittedYes. whenever the code path runs
Declared atnativelink-util/src/metrics.rs:1757
Emitted fromnativelink-util/src/retry.rs:216

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.prepare.outcomeworker_prepare_outcomeWORKER_PREPARE_OUTCOMEopen (free-form string)
worker.relink.kindworker_relink_kindWORKER_RELINK_KINDopen (free-form string)
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)
scheduler.hold.outcomescheduler_hold_outcomeSCHEDULER_HOLD_OUTCOMEopen (free-form string)
scheduler.action.agescheduler_action_ageSCHEDULER_ACTION_AGEopen (free-form string)

Store tier attributes

AttributePrometheus labelRust constantValues
store.object.providerstore_object_providerSTORE_OBJECT_PROVIDERopen (free-form string)
store.object.operationstore_object_operationSTORE_OBJECT_OPERATIONopen (free-form string)
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.