blob: 6fbcab57578ce8bfecaa0e68a10189d49ac860d9 [file] [view]
---
title: Metric Keys
parent: Metrics Reference
grand_parent: Reference
nav_order: 3
---
# Metric Keys
This page lists every metric key that Apache Solr Orbit can record. Metric keys appear
in the `name` field of [metric records](metric-records.html).
Metrics fall into two broad groups:
- **Task-level metrics** — recorded once per operation sample, tied to a specific workload task
- **Telemetry metrics** — recorded by background polling devices throughout the run, independent of any task
---
## Task-level metrics
### `latency`
The time period between submitting a request and receiving the complete response, in
milliseconds. Latency includes any time the operation spent waiting in Solr Orbit's
internal scheduling queue before being sent to the Solr cluster.
When the workload is not rate-limited (no target throughput), latency and service time are
equal. When a target throughput is configured and demand exceeds capacity, latency grows
while service time stays constant.
### `service_time`
The time period between sending a request to Solr and receiving the corresponding response,
in milliseconds. Unlike latency, service time excludes any time the operation spent waiting
in the client-side scheduling queue.
### `processing_time`
The time period from when Solr Orbit starts processing the operation (including
client-side serialization, parameter setup, and response parsing) to when it receives the
complete response from Solr, in milliseconds. Processing time includes all client-side
overhead and is always greater than or equal to service time.
### `throughput`
The number of operations that Solr Orbit completed within a unit of time, expressed
as operations per second (`ops/s`). For bulk-indexing tasks the unit may instead be
`docs/s` or `MB/s` depending on workload configuration.
---
## Disk I/O metrics
### `disk_io_write_bytes`
The number of bytes written to disk during the benchmark. On Linux, only bytes written by
the Solr Orbit process are counted. On macOS, the total is system-wide and may include
writes from other processes.
### `disk_io_read_bytes`
The number of bytes read from disk during the benchmark.
---
## JVM metrics (SolrJvmStats)
Collected every 5 seconds from the Solr `/admin/metrics?group=jvm` endpoint. Both Solr 9.x
(JSON) and Solr 10.x (Prometheus) response formats are handled automatically.
### `jvm_heap_used_bytes`
The amount of JVM heap memory currently in use, in bytes.
### `jvm_heap_max_bytes`
The maximum JVM heap size configured for the Solr process, in bytes.
### `jvm_gc_count`
The cumulative total number of garbage-collection events across all collectors (young and
old generation combined).
### `jvm_gc_time_ms`
The cumulative total time spent in garbage collection across all collectors, in milliseconds.
### `jvm_gc_young_count`
The cumulative number of young-generation (minor) garbage-collection events. The specific
collector name (G1 Young Generation, ParNew, and so on) varies with the JVM configuration.
### `jvm_gc_young_time_ms`
The cumulative time spent in young-generation garbage collection, in milliseconds.
### `jvm_gc_old_count`
The cumulative number of old-generation (major) garbage-collection events.
### `jvm_gc_old_time_ms`
The cumulative time spent in old-generation garbage collection, in milliseconds.
### `jvm_thread_count`
The current number of live JVM threads in the Solr process.
### `jvm_thread_peak_count`
The peak number of live JVM threads since the Solr process started.
### `jvm_buffer_pool_direct_bytes`
The amount of memory used by the JVM direct byte-buffer pool, in bytes. Solr uses direct
buffers extensively for network I/O and memory-mapped file access.
### `jvm_buffer_pool_mapped_bytes`
The amount of memory used by the JVM memory-mapped buffer pool, in bytes.
---
## Node metrics (SolrNodeStats)
Collected from `/api/node/system` and `/admin/metrics` endpoints. Both Solr 9.x (JSON) and
Solr 10.x (Prometheus) response formats are handled automatically.
### `cpu_usage_percent`
The CPU usage of the Solr process (or, where `processCpuLoad` is not available, the
system-wide CPU load), expressed as a percentage from 0 to 100.
### `os_memory_free_bytes`
The amount of free physical memory available to the operating system, in bytes, as reported
by the JVM OS management bean.
### `node_file_descriptors_open`
The current number of open file descriptors held by the Solr process.
### `node_file_descriptors_max`
The maximum number of file descriptors the Solr process is allowed to open (the system
limit).
### `node_http_requests_total`
The cumulative total number of HTTP requests handled by Solr's embedded Jetty server since
startup.
### `query_handler_requests_total`
The cumulative total number of requests handled by the `/select` query handler.
### `query_handler_errors_total`
The cumulative total number of errors returned by the `/select` query handler.
### `query_handler_avg_latency_ms`
The rolling mean (exponentially weighted moving average) of request latency for the
`/select` query handler, in milliseconds. This reflects Solr's internal view of query
latency, independent of network round-trip time.
---
## Collection metrics (SolrCollectionStats)
Collected every 30 seconds per collection. Data is fetched from the collection
`core-properties` API and the Luke request handler.
### `num_docs`
The total number of live (non-deleted) documents in the collection, summed across all
shards.
### `index_size_bytes`
The on-disk size of the collection index (heap usage of the index, as reported by Solr),
in bytes. Summed across all shards.
### `segment_count`
The total number of Lucene segments open in the collection's searcher, summed across all
shards. A high segment count relative to the document count typically indicates that a
merge is needed.
### `num_deleted_docs`
The total number of deleted (but not yet merged away) documents in the collection. These
documents consume disk space until a merge removes them.
---
## Query statistics (SolrQueryStats)
Collected from the `/admin/metrics` endpoint. Telemetry device `SolrQueryStats` must be
enabled via `--telemetry solr-query-stats`.
### `query_latency_p50_ms`
The 50th-percentile (median) rolling query latency for the `/select` handler, in
milliseconds, as reported by Solr's internal timer.
### `query_latency_p99_ms`
The 99th-percentile rolling query latency, in milliseconds.
### `query_latency_p999_ms`
The 99.9th-percentile rolling query latency, in milliseconds.
### `query_requests_total`
Alias of [`query_handler_requests_total`](#query_handler_requests_total) — cumulative total
requests to the `/select` handler.
### `query_errors_total`
Alias of [`query_handler_errors_total`](#query_handler_errors_total) — cumulative total
errors from the `/select` handler.
### `query_cache_hit_ratio`
The hit ratio (0.0–1.0) of the Solr filter cache (`filterCache`). A value of 1.0 means
all filter queries were served from cache; 0.0 means all required a full disk read.
---
## Indexing statistics (SolrIndexingStats)
Collected from the `/admin/metrics` endpoint. Telemetry device `SolrIndexingStats` must be
enabled via `--telemetry solr-indexing-stats`.
### `indexing_requests_total`
The cumulative total number of requests handled by the `/update` handler (documents sent
to Solr for indexing).
### `indexing_errors_total`
The cumulative total number of errors returned by the `/update` handler.
### `indexing_avg_time_ms`
The rolling mean request time for the `/update` handler, in milliseconds, as reported by
Solr's internal timer.
### `index_merge_major_running`
The current number of major Lucene segment merges in progress. Major merges combine many
segments and are typically I/O intensive.
### `index_merge_minor_running`
The current number of minor Lucene segment merges in progress.
---
## Cache statistics (SolrCacheStats)
Collected from the `/admin/metrics` endpoint per cache. Telemetry device `SolrCacheStats`
must be enabled via `--telemetry solr-cache-stats`. Statistics are reported separately for
three caches: `queryResultCache`, `filterCache`, and `documentCache`. Each record carries a
`cache` field in its `meta` object identifying which cache it belongs to.
### `cache_hits_total`
Cumulative total number of cache lookups that found a cached entry.
### `cache_inserts_total`
Cumulative total number of entries inserted into the cache (roughly equal to the number of
cache misses).
### `cache_evictions_total`
Cumulative total number of entries evicted from the cache to make room for new entries.
High eviction rates suggest the cache is undersized relative to the working set.
### `cache_memory_bytes`
The amount of RAM currently used by the cache, in bytes.
### `cache_hit_ratio`
The ratio of cache hits to total lookups (0.0–1.0). Equivalent to
`cache_hits_total / (cache_hits_total + cache_inserts_total)`.
---
## Derived metrics
The following values are not stored as raw records but are computed from raw samples by
Solr Orbit when generating the results report.
### `error_rate`
The fraction of operations that resulted in an error (Solr returned a 4xx/5xx response, or
the request timed out). Computed as:
```
error_rate = error_count / (error_count + success_count)
```
A value of `0.0` means all operations succeeded.