title: Telemetry Devices parent: Reference nav_order: 45

Telemetry Devices

Apache Solr Orbit includes telemetry devices for collecting server-side metrics. Six devices are always enabled and collect metrics automatically without any flags. One additional device (disk-io) runs automatically on provisioned pipelines. Eight further devices can be enabled on demand with --telemetry.

Both Solr 9.x (JSON format) and Solr 10.x (Prometheus text format) are supported. Format detection is automatic via the HTTP Content-Type header.


solr-jvm-stats

Collects JVM statistics from each Solr node via the Solr metrics API.

Always active. No --telemetry flag required.

Metrics collected:

MetricUnitDescription
jvm_heap_used_bytesbytesJVM heap memory currently used
jvm_heap_max_bytesbytesMaximum JVM heap size
jvm_gc_countcountTotal GC collections across all collectors
jvm_gc_time_msmsTotal GC wall time across all collectors
jvm_gc_young_countcountYoung-generation GC collection count
jvm_gc_young_time_msmsYoung-generation GC wall time
jvm_gc_old_countcountOld-generation GC collection count
jvm_gc_old_time_msmsOld-generation GC wall time
jvm_thread_countcountCurrent JVM thread count
jvm_thread_peak_countcountPeak JVM thread count since startup
jvm_buffer_pool_direct_bytesbytesDirect byte buffer pool memory used
jvm_buffer_pool_mapped_bytesbytesMemory-mapped buffer pool memory used

solr-node-stats

Collects Solr node-level and OS statistics.

Always active. No --telemetry flag required.

Metrics collected:

MetricUnitDescription
cpu_usage_percent%Process CPU load (0–100)
os_memory_free_bytesbytesFree physical OS memory
node_file_descriptors_opencountCurrently open file descriptors
node_file_descriptors_maxcountMaximum allowed file descriptors
node_http_requests_totalcountTotal HTTP requests processed by Jetty
query_handler_requests_totalcountTotal /select query handler requests
query_handler_errors_totalcountTotal /select query handler errors
query_handler_avg_latency_msmsRolling average /select request latency

solr-collection-stats

Collects per-collection document count, segment count, and deleted doc count.

Always active. No --telemetry flag required.

Metrics collected (all tagged with collection metadata):

MetricUnitDescription
num_docsdocsCurrent document count
num_deleted_docsdocsNumber of deleted (soft-deleted) documents
segment_countcountNumber of Lucene segments
index_size_bytesbytesTotal index size on disk

Notes: Collection stats are polled every 30 seconds by default. Override with --telemetry-params collection-stats-sample-interval:60. Uses both the Collections API and the Luke request handler (/admin/luke) for full statistics.


solr-query-stats

Collects query latency percentiles and filter cache hit ratio.

Always active. No --telemetry flag required.

Metrics collected:

MetricUnitDescription
query_latency_p50_msms50th percentile /select request latency
query_latency_p99_msms99th percentile /select request latency
query_latency_p999_msms99.9th percentile /select request latency
query_requests_totalcountTotal /select handler request count
query_errors_totalcountTotal /select handler error count
query_cache_hit_ratioratioFilter cache hit ratio (0.0–1.0)

solr-indexing-stats

Collects update handler and merge metrics.

Always active. No --telemetry flag required.

Metrics collected:

MetricUnitDescription
indexing_requests_totalcountTotal /update handler requests
indexing_errors_totalcountTotal /update handler errors
indexing_avg_time_msmsRolling average /update request time
index_merge_major_runningcountCurrently running major merges
index_merge_minor_runningcountCurrently running minor merges

solr-cache-stats

Collects hit/miss/eviction and memory statistics for the three primary Solr caches.

Always active. No --telemetry flag required.

Metrics collected (all tagged with cache metadata: queryResultCache, filterCache, documentCache):

MetricUnitDescription
cache_hits_totalcountCache hits since Solr start
cache_inserts_totalcountCache inserts since Solr start
cache_evictions_totalcountCache evictions since Solr start
cache_memory_bytesbytesRAM used by this cache
cache_hit_ratioratioHit ratio (0.0–1.0)

Always-on provisioned-pipeline device

The following device activates automatically when using the docker or from-distribution pipeline. It cannot be disabled and does not need to be listed in --telemetry.

disk-io

Measures disk I/O consumed by the Solr process during the benchmark run.

Pipeline: docker or from-distribution (always active; not available on benchmark-only)

MetricUnitDescription
disk_io_read_bytesbytesBytes read by the Solr process
disk_io_write_bytesbytesBytes written by the Solr process

Optional devices

Optional devices must be explicitly requested with --telemetry <name>. REST-based optional devices work with all pipelines. JVM/process devices inject flags into SOLR_OPTS before Solr starts and require the docker or from-distribution pipeline — they are silently skipped on benchmark-only.


segment-stats

Captures per-collection segment statistics via the Solr Luke request handler.

Pipeline: All pipelines Enable: --telemetry segment-stats

Collected on benchmark stop. Results are written to segment_stats.log in the benchmark log directory.

Metric (in log file)Description
numDocsCurrent document count
maxDocMaximum doc ID (includes deleted docs)
deletedDocsNumber of soft-deleted documents
segmentCountNumber of Lucene segments
sizeInBytesTotal index size on disk

shard-stats

Polls CLUSTERSTATUS and Core STATUS for each shard leader and records per-shard metrics. Skipped silently on standalone (non-SolrCloud) Solr.

Pipeline: All pipelines Enable: --telemetry shard-stats

MetricUnitDescription
shard_{name}_num_docscountDocument count for the named shard
shard_{name}_size_bytesbytesIndex size for the named shard

The default poll interval is 60 seconds. Override with --telemetry-params shard-stats-sample-interval:30.


cluster-environment-info

Records Solr version, JVM version, and hardware info as run metadata. Called once at benchmark start.

Pipeline: All pipelines Enable: --telemetry cluster-environment-info

Metadata keyDescription
distribution_versionSolr version string (e.g. 9.7.0)
jvm_versionJVM version (e.g. 21.0.1)
jvm_vendorJVM vendor name (e.g. OpenJDK 21)
cpu_logical_coresNumber of logical CPU cores on the node
cluster_node_countNumber of live SolrCloud nodes

jfr

Enables Java Flight Recorder. Injects -XX:StartFlightRecording=... into SOLR_OPTS.

Pipeline: docker or from-distribution only Enable: --telemetry jfr

The flight recording is written to profile.jfr in the benchmark log directory. Requires OpenJDK 11 or later. To use a custom recording template, pass --telemetry-params recording-template:/path/to/template.jfc.


gc

Enables GC logging (Java 9+ -Xlog: format). Injects the GC log flags into SOLR_OPTS.

Pipeline: docker or from-distribution only Enable: --telemetry gc

GC output is written to gc.log in the benchmark log directory. The default log configuration is gc*=info,safepoint=info,age*=trace. Override with --telemetry-params gc-log-config:gc*=debug.


jit

Enables JIT compiler logging. Injects -XX:+LogCompilation and related flags into SOLR_OPTS.

Pipeline: docker or from-distribution only Enable: --telemetry jit

JIT output is written to jit.log in the benchmark log directory.


heapdump

Captures a heap dump (jmap -dump) from the Solr JVM when the benchmark finishes.

Pipeline: docker or from-distribution only Enable: --telemetry heapdump

The heap dump is written to heap_at_exit_{pid}.hprof in the benchmark log directory. On Docker pipelines, docker exec is used automatically.


Using multiple devices

The six always-on devices collect metrics automatically — no flags required:

# Always-on devices activate without any --telemetry flag:
solr-orbit run \
  --pipeline benchmark-only \
  --target-hosts localhost:8983 \
  --workload nyc_taxis

Add optional REST devices on any pipeline:

solr-orbit run \
  --pipeline benchmark-only \
  --target-hosts localhost:8983 \
  --workload nyc_taxis \
  --telemetry segment-stats,shard-stats,cluster-environment-info

Add JVM profiling devices on provisioned pipelines:

solr-orbit run \
  --pipeline docker \
  --distribution-version 9.10.1 \
  --workload nyc_taxis \
  --telemetry gc,jfr

Telemetry output location

Telemetry metrics are written to the metrics store alongside all other benchmark metrics. When using the filesystem store, they are recorded in metrics.jsonl in the test run directory (~/.solr-orbit/benchmarks/test-runs/<run-id>/). See Filesystem Metrics Store for the file format.