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.6.5 declares 30 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.
2 of the 30 instruments are never emitted
They are constructed at startup and stored on the metrics struct, but no code path calls them. See Declared but never emitted for which ones, and for the shipped Prometheus rules that query them anyway.
Every instrument at a glance
| Instrument | Prometheus series | Kind | Emitted | Under what conditions |
|---|---|---|---|---|
cache.operation.duration | nativelink_cache_operation_duration | Histogram | Conditionally | only for stores explicitly wrapped in a cache_metrics spec |
cache.operations | nativelink_cache_operations_total | Counter | Conditionally | only for stores explicitly wrapped in a cache_metrics spec |
cache.io | nativelink_cache_io_total | Counter | Conditionally | only for stores explicitly wrapped in a cache_metrics spec |
cache.size | nativelink_cache_size | UpDownCounter | Never | no call site anywhere in the workspace |
cache.entries | nativelink_cache_entries | UpDownCounter | Never | no call site anywhere in the workspace |
cache.item.size | nativelink_cache_item_size | Histogram | Conditionally | only for stores explicitly wrapped in a cache_metrics spec |
execution.stage.duration | nativelink_execution_stage_duration | Histogram | Conditionally | scheduler process only |
execution.total.duration | nativelink_execution_total_duration | Histogram | Conditionally | scheduler process only |
execution.queue.time | nativelink_execution_queue_time | Histogram | Conditionally | scheduler process only |
execution.active.count | nativelink_execution_active_count (unreferenced) | UpDownCounter | Conditionally | scheduler process only |
execution.completed.count | nativelink_execution_completed_count_total | Counter | Conditionally | scheduler process only |
execution.stage.transitions | nativelink_execution_stage_transitions_total | Counter | Conditionally | scheduler process only |
execution.cpu.time | nativelink_execution_cpu_time (unreferenced) | Histogram | Conditionally | scheduler process only |
execution.peak.memory | nativelink_execution_peak_memory (unreferenced) | Histogram | Conditionally | scheduler process only |
execution.output.size | nativelink_execution_output_size | Histogram | Conditionally | scheduler process only |
execution.retry.count | nativelink_execution_retry_count_total | Counter | Conditionally | scheduler process only |
worker.connected.count | nativelink_worker_connected_count (unreferenced) | UpDownCounter | Conditionally | scheduler process only |
worker.connections | nativelink_worker_connections (unreferenced) | Counter | Conditionally | scheduler process only |
worker.disconnections | nativelink_worker_disconnections (unreferenced) | Counter | Conditionally | scheduler process only |
worker.keepalives | nativelink_worker_keepalives (unreferenced) | Counter | Conditionally | scheduler process only |
worker.state.count | nativelink_worker_state_count (unreferenced) | UpDownCounter | Conditionally | scheduler process only |
rpc.server.duration | nativelink_rpc_server_duration (unreferenced) | Histogram | Yes | whenever the code path runs |
scheduler.matching.duration | nativelink_scheduler_matching_duration (unreferenced) | Histogram | Conditionally | scheduler process only |
scheduler.matching.passes | nativelink_scheduler_matching_passes (unreferenced) | Counter | Conditionally | scheduler process only |
store.tier.operations | nativelink_store_tier_operations (unreferenced) | Counter | Conditionally | only through a fast_slow store |
store.tier.io | nativelink_store_tier_io (unreferenced) | Counter | Conditionally | only through a fast_slow store |
health.checks | nativelink_health_checks (unreferenced) | Counter | Yes | whenever the code path runs |
connection.pool.available | nativelink_connection_pool_available (unreferenced) | Histogram | Yes | whenever the code path runs |
connection.pool.acquisitions | nativelink_connection_pool_acquisitions (unreferenced) | Counter | Yes | whenever the code path runs |
connection.reconnects | nativelink_connection_reconnects (unreferenced) | Counter | Yes | whenever 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:
- The Prometheus exporter in
otel-collector-config.yamlis configured withnamespace: nativelink, which prefixes every series withnativelink_. - The exporter rewrites the OTLP name into Prometheus form: dots become
underscores, and monotonic counters gain a
_totalsuffix. Histograms fan out into_bucket,_sumand_countseries.
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
2 instruments are built by the
meter and stored on the metrics struct, but no code anywhere in the workspace
ever calls .add() or .record() on them. They will never appear in your
Prometheus output, at any configuration, on any release this page was
generated from.
| Instrument | Series it would produce | Referenced by shipped config |
|---|---|---|
cache.size | nativelink_cache_size | deployment-examples/metrics/README.md:112, deployment-examples/metrics/prometheus-config.yaml:135, deployment-examples/metrics/prometheus-recording-rules.yml:164 |
cache.entries | nativelink_cache_entries | deployment-examples/metrics/README.md:113, deployment-examples/metrics/prometheus-recording-rules.yml:168 |
The shipped observability examples query series that do not exist
nativelink_cache_size and nativelink_cache_entries appear in the recording rules and the metrics
README under deployment-examples/metrics/, but nothing emits them. Any
recording rule, dashboard panel or alert built on them evaluates to an
empty vector forever, which reads on a dashboard as a healthy zero, not
as a missing signal. Delete those panels or treat them as known-empty.
Cache metrics
Global cache metrics instruments.
Declared as CACHE_METRICS in nativelink-util/src/metrics.rs:419, 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
| Property | Value |
|---|---|
| Instrument type | Histogram<f64> |
| Field | cache_operation_duration |
| Unit | ms |
| Prometheus series | nativelink_cache_operation_duration |
| Emitted | Conditionally. only for stores explicitly wrapped in a cache_metrics spec |
| Declared at | nativelink-util/src/metrics.rs:423 |
| Emitted from | nativelink-store/src/cache_metrics_store.rs:67 |
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
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | cache_operations |
| Unit | — |
| Prometheus series | nativelink_cache_operations_total |
| Emitted | Conditionally. only for stores explicitly wrapped in a cache_metrics spec |
| Declared at | nativelink-util/src/metrics.rs:457 |
| Emitted from | nativelink-store/src/cache_metrics_store.rs:121, nativelink-store/src/cache_metrics_store.rs:126, nativelink-store/src/cache_metrics_store.rs:137, nativelink-store/src/cache_metrics_store.rs:162, nativelink-store/src/cache_metrics_store.rs:168, nativelink-store/src/cache_metrics_store.rs:194, nativelink-store/src/cache_metrics_store.rs:200, nativelink-store/src/cache_metrics_store.rs:213, nativelink-store/src/cache_metrics_store.rs:219, nativelink-store/src/cache_metrics_store.rs:240, nativelink-store/src/cache_metrics_store.rs:248, nativelink-store/src/cache_metrics_store.rs:254 |
cache.io
Counter of bytes read/written during cache operations
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | cache_io |
| Unit | By |
| Prometheus series | nativelink_cache_io_total |
| Emitted | Conditionally. only for stores explicitly wrapped in a cache_metrics spec |
| Declared at | nativelink-util/src/metrics.rs:462 |
| Emitted from | nativelink-store/src/cache_metrics_store.rs:74, nativelink-store/src/cache_metrics_store.rs:242 |
cache.size
Current total size of all cached data in bytes
| Property | Value |
|---|---|
| Instrument type | UpDownCounter<i64> |
| Field | cache_size |
| Unit | By |
| Prometheus series | nativelink_cache_size |
| Emitted | Never. no call site anywhere in the workspace |
| Declared at | nativelink-util/src/metrics.rs:468 |
| Emitted from | — |
cache.entries
Current number of entries in cache
| Property | Value |
|---|---|
| Instrument type | UpDownCounter<i64> |
| Field | cache_entries |
| Unit | {entry} |
| Prometheus series | nativelink_cache_entries |
| Emitted | Never. no call site anywhere in the workspace |
| Declared at | nativelink-util/src/metrics.rs:474 |
| Emitted from | — |
cache.item.size
Histogram of individual cache entry sizes in bytes
| Property | Value |
|---|---|
| Instrument type | Histogram<u64> |
| Field | cache_entry_size |
| Unit | By |
| Prometheus series | nativelink_cache_item_size |
| Emitted | Conditionally. only for stores explicitly wrapped in a cache_metrics spec |
| Declared at | nativelink-util/src/metrics.rs:480 |
| Emitted from | nativelink-store/src/cache_metrics_store.rs:77 |
Execution metrics
Global remote execution metrics instruments.
Declared as EXECUTION_METRICS in nativelink-util/src/metrics.rs:506, 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
| Property | Value |
|---|---|
| Instrument type | Histogram<f64> |
| Field | execution_stage_duration |
| Unit | s |
| Prometheus series | nativelink_execution_stage_duration |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:510 |
| Emitted from | nativelink-scheduler/src/simple_scheduler_state_manager.rs:919 |
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
| Property | Value |
|---|---|
| Instrument type | Histogram<f64> |
| Field | execution_total_duration |
| Unit | s |
| Prometheus series | nativelink_execution_total_duration |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:535 |
| Emitted from | nativelink-scheduler/src/simple_scheduler_state_manager.rs:919 |
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
| Property | Value |
|---|---|
| Instrument type | Histogram<f64> |
| Field | execution_queue_time |
| Unit | s |
| Prometheus series | nativelink_execution_queue_time |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:560 |
| Emitted from | nativelink-scheduler/src/simple_scheduler_state_manager.rs:919 |
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
| Property | Value |
|---|---|
| Instrument type | UpDownCounter<i64> |
| Field | execution_active_count |
| Unit | {action} |
| Prometheus series | nativelink_execution_active_count (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:580 |
| Emitted from | nativelink-scheduler/src/memory_awaited_action_db.rs:662, nativelink-scheduler/src/memory_awaited_action_db.rs:669, nativelink-scheduler/src/memory_awaited_action_db.rs:814 |
execution.completed.count
Total number of completed executions
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | execution_completed_count |
| Unit | {action} |
| Prometheus series | nativelink_execution_completed_count_total |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:586 |
| Emitted from | nativelink-scheduler/src/memory_awaited_action_db.rs:688, nativelink-scheduler/src/memory_awaited_action_db.rs:700, nativelink-scheduler/src/simple_scheduler_state_manager.rs:918, nativelink-scheduler/src/simple_scheduler_state_manager.rs:928 |
execution.stage.transitions
Number of stage transitions
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | execution_stage_transitions |
| Unit | {transition} |
| Prometheus series | nativelink_execution_stage_transitions_total |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:592 |
| Emitted from | nativelink-scheduler/src/memory_awaited_action_db.rs:655, nativelink-scheduler/src/simple_scheduler_state_manager.rs:907 |
execution.cpu.time
CPU time an action used, as sampled by the worker.
| Property | Value |
|---|---|
| Instrument type | Histogram<f64> |
| Field | execution_cpu_time |
| Unit | s |
| Prometheus series | nativelink_execution_cpu_time (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:598 |
| Emitted from | nativelink-scheduler/src/api_worker_scheduler.rs:709 |
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.
| Property | Value |
|---|---|
| Instrument type | Histogram<u64> |
| Field | execution_peak_memory |
| Unit | By |
| Prometheus series | nativelink_execution_peak_memory (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:607 |
| Emitted from | nativelink-scheduler/src/api_worker_scheduler.rs:706 |
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
| Property | Value |
|---|---|
| Instrument type | Histogram<u64> |
| Field | execution_output_size |
| Unit | By |
| Prometheus series | nativelink_execution_output_size |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:623 |
| Emitted from | nativelink-scheduler/src/simple_scheduler_state_manager.rs:919 |
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
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | execution_retry_count |
| Unit | {retry} |
| Prometheus series | nativelink_execution_retry_count_total |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:639 |
| Emitted from | nativelink-scheduler/src/simple_scheduler_state_manager.rs:940 |
Worker fleet metrics
Global worker fleet metrics instruments.
Declared as WORKER_METRICS in nativelink-util/src/metrics.rs:817, 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.
| Property | Value |
|---|---|
| Instrument type | UpDownCounter<i64> |
| Field | worker_connected_count |
| Unit | {worker} |
| Prometheus series | nativelink_worker_connected_count (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:821 |
| Emitted from | nativelink-scheduler/src/api_worker_scheduler.rs:227, nativelink-scheduler/src/api_worker_scheduler.rs:504 |
worker.connections
Workers that have joined, cumulative.
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | worker_connections |
| Unit | {worker} |
| Prometheus series | nativelink_worker_connections (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:827 |
| Emitted from | nativelink-scheduler/src/api_worker_scheduler.rs:227 |
worker.disconnections
Workers that have left, cumulative, by reason.
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | worker_disconnections |
| Unit | {worker} |
| Prometheus series | nativelink_worker_disconnections (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:833 |
| Emitted from | nativelink-scheduler/src/api_worker_scheduler.rs:504 |
worker.keepalives
Keepalives received, cumulative.
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | worker_keepalives |
| Unit | {keepalive} |
| Prometheus series | nativelink_worker_keepalives (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:839 |
| Emitted from | nativelink-scheduler/src/api_worker_scheduler.rs:187 |
worker.state.count
Connected workers currently paused or draining.
| Property | Value |
|---|---|
| Instrument type | UpDownCounter<i64> |
| Field | worker_state_count |
| Unit | {worker} |
| Prometheus series | nativelink_worker_state_count (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:845 |
| Emitted from | nativelink-scheduler/src/api_worker_scheduler.rs:221, nativelink-scheduler/src/api_worker_scheduler.rs:224, nativelink-scheduler/src/api_worker_scheduler.rs:256, nativelink-scheduler/src/api_worker_scheduler.rs:413 |
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:921, 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.
| Property | Value |
|---|---|
| Instrument type | Histogram<f64> |
| Field | rpc_server_duration |
| Unit | s |
| Prometheus series | nativelink_rpc_server_duration (not referenced by any shipped rule or dashboard) |
| Emitted | Yes. whenever the code path runs |
| Declared at | nativelink-util/src/metrics.rs:925 |
| Emitted from | nativelink-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:974, 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.
| Property | Value |
|---|---|
| Instrument type | Histogram<f64> |
| Field | matching_duration |
| Unit | s |
| Prometheus series | nativelink_scheduler_matching_duration (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:978 |
| Emitted from | nativelink-scheduler/src/simple_scheduler.rs:281 |
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.
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | matching_passes |
| Unit | {pass} |
| Prometheus series | nativelink_scheduler_matching_passes (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. scheduler process only |
| Declared at | nativelink-util/src/metrics.rs:987 |
| Emitted from | nativelink-scheduler/src/simple_scheduler.rs:281 |
Store tier metrics
Global tiered-store metrics.
Declared as STORE_TIER_METRICS in nativelink-util/src/metrics.rs:1023, 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.
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | tier_operations |
| Unit | {operation} |
| Prometheus series | nativelink_store_tier_operations (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. only through a fast_slow store |
| Declared at | nativelink-util/src/metrics.rs:1027 |
| Emitted from | nativelink-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.
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | tier_io |
| Unit | By |
| Prometheus series | nativelink_store_tier_io (not referenced by any shipped rule or dashboard) |
| Emitted | Conditionally. only through a fast_slow store |
| Declared at | nativelink-util/src/metrics.rs:1033 |
| Emitted from | nativelink-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:1074, 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.
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | health_checks |
| Unit | {check} |
| Prometheus series | nativelink_health_checks (not referenced by any shipped rule or dashboard) |
| Emitted | Yes. whenever the code path runs |
| Declared at | nativelink-util/src/metrics.rs:1078 |
| Emitted from | nativelink-util/src/health_utils.rs:248 |
Connection pool metrics
Global connection-pool metrics.
Declared as CONNECTION_METRICS in nativelink-util/src/metrics.rs:1105, 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.
| Property | Value |
|---|---|
| Instrument type | Histogram<u64> |
| Field | pool_available |
| Unit | {connection} |
| Prometheus series | nativelink_connection_pool_available (not referenced by any shipped rule or dashboard) |
| Emitted | Yes. whenever the code path runs |
| Declared at | nativelink-util/src/metrics.rs:1109 |
| Emitted from | nativelink-store/src/redis_store.rs:558, 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.
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | pool_acquisitions |
| Unit | {acquisition} |
| Prometheus series | nativelink_connection_pool_acquisitions (not referenced by any shipped rule or dashboard) |
| Emitted | Yes. whenever the code path runs |
| Declared at | nativelink-util/src/metrics.rs:1118 |
| Emitted from | nativelink-store/src/redis_store.rs:558, nativelink-util/src/connection_manager.rs:341, nativelink-util/src/connection_manager.rs:351 |
connection.reconnects
Reconnects, by pool.
| Property | Value |
|---|---|
| Instrument type | Counter<u64> |
| Field | reconnects |
| Unit | {reconnect} |
| Prometheus series | nativelink_connection_reconnects (not referenced by any shipped rule or dashboard) |
| Emitted | Yes. whenever the code path runs |
| Declared at | nativelink-util/src/metrics.rs:1124 |
| Emitted from | nativelink-store/src/redis_store.rs:318 |
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
| Attribute | Prometheus label | Rust constant | Values |
|---|---|---|---|
cache.type | cache_type | CACHE_TYPE | open (free-form string) |
cache.operation.name | cache_operation_name | CACHE_OPERATION | read, write, delete, evict |
cache.operation.result | cache_operation_result | CACHE_RESULT | hit, miss, expired, success, error |
Execution attributes
| Attribute | Prometheus label | Rust constant | Values |
|---|---|---|---|
execution.stage | execution_stage | EXECUTION_STAGE | unknown, cache_check, queued, executing, completed |
execution.result | execution_result | EXECUTION_RESULT | success, failure, cancelled, timeout, cache_hit |
execution.instance | execution_instance | EXECUTION_INSTANCE | open (free-form string) |
execution.priority | execution_priority | EXECUTION_PRIORITY | open (free-form string) |
execution.worker_id | execution_worker_id | EXECUTION_WORKER_ID | open (free-form string) |
execution.exit_code | execution_exit_code | EXECUTION_EXIT_CODE | open (free-form string) |
execution.action_digest | execution_action_digest | EXECUTION_ACTION_DIGEST | open (free-form string) |
Worker attributes
| Attribute | Prometheus label | Rust constant | Values |
|---|---|---|---|
worker.state | worker_state | WORKER_STATE | open (free-form string) |
worker.disconnect.reason | worker_disconnect_reason | WORKER_DISCONNECT_REASON | open (free-form string) |
gRPC attributes
| Attribute | Prometheus label | Rust constant | Values |
|---|---|---|---|
rpc.service | rpc_service | RPC_SERVICE | open (free-form string) |
rpc.method | rpc_method | RPC_METHOD | open (free-form string) |
rpc.grpc.status_code | rpc_grpc_status_code | RPC_STATUS_CODE | open (free-form string) |
Scheduler attributes
| Attribute | Prometheus label | Rust constant | Values |
|---|---|---|---|
scheduler.match.result | scheduler_match_result | SCHEDULER_MATCH_RESULT | open (free-form string) |
Store tier attributes
| Attribute | Prometheus label | Rust constant | Values |
|---|---|---|---|
store.tier | store_tier | STORE_TIER | open (free-form string) |
store.result | store_result | STORE_RESULT | open (free-form string) |
store.direction | store_direction | STORE_DIRECTION | open (free-form string) |
Health attributes
| Attribute | Prometheus label | Rust constant | Values |
|---|---|---|---|
health.namespace | health_namespace | HEALTH_NAMESPACE | open (free-form string) |
health.status | health_status | HEALTH_STATUS | open (free-form string) |
Connection attributes
| Attribute | Prometheus label | Rust constant | Values |
|---|---|---|---|
connection.pool | connection_pool | CONNECTION_POOL | open (free-form string) |
connection.result | connection_result | CONNECTION_RESULT | open (free-form string) |
cache.operation.name values
| Value | Meaning |
|---|---|
read | Data retrieval operations (get, peek, contains, etc.) |
write | Data storage operations (insert, update, replace, etc.) |
delete | Explicit data removal operations |
evict | Automatic cache maintenance (evictions, TTL cleanup, etc.) |
cache.operation.result values
| Value | Meaning |
|---|---|
hit | Data found and valid (Read operations) |
miss | Data not found (Read operations) |
expired | Data found but invalid/expired (Read operations) |
success | Operation completed successfully (Write/Delete/Evict operations) |
error | Operation failed (any operation type) |
execution.stage values
| Value | Meaning |
|---|---|
unknown | Unknown stage |
cache_check | Checking cache for existing results |
queued | Action is queued waiting for execution |
executing | Action is being executed by a worker |
completed | Action execution completed |
execution.result values
| Value | Meaning |
|---|---|
success | Execution completed successfully |
failure | Execution failed |
cancelled | Execution was cancelled |
timeout | Execution timed out |
cache_hit | Result was found in cache |
Reading the source
If anything here disagrees with the binary, the source wins:
nativelink-util/src/metrics.rs: every declarationnativelink-util/src/telemetry.rs: the OTLP exporter and its intervalnativelink-store/src/cache_metrics_store.rs: every cache call sitenativelink-scheduler/src/simple_scheduler_state_manager.rs: every execution call site
Where to go next
NextWire up the telemetry pipelineThe collector, the exporter interval and the queries worth alerting on: the operational half of this reference.
SidewaysConfiguration referenceEvery configuration field, generated the same way from the same source of truth.
Protocol and API surface
Every gRPC service NativeLink serves, which RPCs are implemented, and the values it advertises.
CLI and environment
Every command-line argument the nativelink binary accepts and every environment variable it reads: the telemetry variables, the ones the configuration expands, and the ones it passes through to actions.