You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Document telemetry usage and configuration in DEVELOPER_GUIDE.md #5
DEVELOPER_GUIDE.md covers environment setup, testing, and contributing workflow, but does
not describe Solr Orbit's telemetry system.
What's needed
Add a section to DEVELOPER_GUIDE.md that covers:
The available telemetry devices and what each measures (JVM, node stats, collection stats,
query stats, indexing stats, cache stats, segment stats, shard stats, etc.)
Which devices are always-on vs. opt-in
Which devices require a provisioned (managed) Solr vs. an external cluster
How to enable/disable devices via the telemetry.devices parameter in a track/workload
How to extend or add new telemetry devices
Why
New contributors and users are left to read the source in osbenchmark/telemetry.py to
understand what telemetry is collected — this should be documented at the guide level.
Hi @janhoy, I started looking at this. While tracing how telemetry is wired, I found a few places where the code doesn't do what the docs say:
cluster-environment-info appears in solr-orbit list telemetry and in the docs, but nothing creates ClusterEnvironmentInfo. As a result, --telemetry cluster-environment-info does nothing.
The run pipelines (docker, from-distribution, from-sources) never pass telemetry_devices to SolrProvisioner / SolrDockerLauncher. That means jfr/gc/jit/heapdump/disk-io never turn on under run. Only the older builder/launcher.py path used by start/stop wires them up.
--telemetry-params collection-stats-sample-interval is documented, but nothing reads it. SolrCollectionStats always uses the 30 s default.
A developer guide written today would have to describe this as it is. Would you prefer these fixed first, so the guide can describe one working path? If so, I'm happy to open an issue and small PRs for them, starting with cluster-environment-info. Or would you rather have the guide first, with these noted as known gaps?
Yes there is some missing pieces regarding telemetry that must be cleaned up and then documented.
Happy to get contributions. We should also solve how to get OS level telemetry (CPU, Disk IO, RAM, Network) and whether this is within the responsibility of solr-orbitd. Some of this could also be delegated to external provisioner like launchr (see other PR) but it is nice to let orbit pipeline do as much it can.
Thanks. #134 is merged, #137 is open for #136, and I'll work on #138 next. Once those land, the guide can describe one path that actually works.
On OS-level telemetry, here's a split that I think keeps solr-orbit responsible only for what it can measure reliably:
Any cluster, via Solr itself.SolrNodeStats already reads /api/node/system, which exposes host CPU and memory, so this works for external clusters too with no agent. One small fix: cpu_usage_percent currently uses processCpuLoad and falls back to systemCpuLoad without saying so. Recording process_cpu_percent and system_cpu_percent as separate metrics would make runs comparable.
Provisioned on the same host (from-distribution / from-sources / docker). Orbit knows the Solr PID or container, so it can sample host and process CPU, RAM, disk I/O and network itself. psutil is already a dependency, and DiskIo already does the disk part per process. For Docker, the per-container numbers would come from the container stats API, so the host's other load doesn't pollute them.
Remote or orchestrated (launchr / EC2). Orbit can't sample a remote host well without running an agent there, so I'd delegate that to launchr. It could run node_exporter or something similar next to Solr and record the results alongside the run, and reportr would then join them by run id. solr-orbit would just document that boundary.
If that split works for you, I'd open one issue for the separate CPU metrics plus the same-host sampler, after #138. The guide section for this issue can describe all three tiers. Does that match how you see the responsibility for solr-orbit vs. launchr?
Activity
syahra712 commentedon Oct 17, 2026
Hi @janhoy, I started looking at this. While tracing how telemetry is wired, I found a few places where the code doesn't do what the docs say:
cluster-environment-infoappears insolr-orbit list telemetryand in the docs, but nothing createsClusterEnvironmentInfo. As a result,--telemetry cluster-environment-infodoes nothing.runpipelines (docker, from-distribution, from-sources) never passtelemetry_devicestoSolrProvisioner/SolrDockerLauncher. That means jfr/gc/jit/heapdump/disk-io never turn on underrun. Only the olderbuilder/launcher.pypath used bystart/stopwires them up.--telemetry-params collection-stats-sample-intervalis documented, but nothing reads it.SolrCollectionStatsalways uses the 30 s default.A developer guide written today would have to describe this as it is. Would you prefer these fixed first, so the guide can describe one working path? If so, I'm happy to open an issue and small PRs for them, starting with
cluster-environment-info. Or would you rather have the guide first, with these noted as known gaps?janhoy commentedon Oct 19, 2026
Yes there is some missing pieces regarding telemetry that must be cleaned up and then documented.
Happy to get contributions. We should also solve how to get OS level telemetry (CPU, Disk IO, RAM, Network) and whether this is within the responsibility of solr-orbitd. Some of this could also be delegated to external provisioner like launchr (see other PR) but it is nice to let orbit pipeline do as much it can.
syahra712 commentedon Oct 20, 2026
Thanks. #134 is merged, #137 is open for #136, and I'll work on #138 next. Once those land, the guide can describe one path that actually works.
On OS-level telemetry, here's a split that I think keeps solr-orbit responsible only for what it can measure reliably:
SolrNodeStatsalready reads/api/node/system, which exposes host CPU and memory, so this works for external clusters too with no agent. One small fix:cpu_usage_percentcurrently usesprocessCpuLoadand falls back tosystemCpuLoadwithout saying so. Recordingprocess_cpu_percentandsystem_cpu_percentas separate metrics would make runs comparable.DiskIoalready does the disk part per process. For Docker, the per-container numbers would come from the container stats API, so the host's other load doesn't pollute them.If that split works for you, I'd open one issue for the separate CPU metrics plus the same-host sampler, after #138. The guide section for this issue can describe all three tiers. Does that match how you see the responsibility for solr-orbit vs. launchr?