<!-- llms-explorer concept facts · https://llms-explorer.com/tree/serverstatus-indexbuilds-metrics-and-index-build-observability/ · pack 2026-10-30 · ~1665 tokens -->

# serverStatus indexBuilds metrics and index build observability

> Source-anchored research for serverStatus indexBuilds metrics and index build observability. Run status: COMPLETED.

Parent: [Index build resource limits (maxNumActiveUserIndexBuilds, disk space)](https://llms-explorer.com/tree/index-build-resource-limits-maxnumactiveuserindexbuilds-disk-space/) · 5 facets · 16 facts · page: https://llms-explorer.com/tree/serverstatus-indexbuilds-metrics-and-index-build-observability/

## Structure and components

- serverStatus.indexBuilds contains cumulative metrics since server startup. Its total field counts index builds; it is not an active-build gauge. The historical activeIndexBuilds section was renamed when gauges became cumulative counters. (high confidence) — [source](https://www.mongodb.com/docs/v8.0/reference/command/serverstatus/)

## How it works

- The index-build msg percentage describes the current stage. Inference: reaching the end of collection scanning does not establish whole-build completion, because loading sorted keys and subsequent processing remain; Percona's March 2024 experiment logs these separate transitions. (high confidence) — [source](https://www.mongodb.com/docs/manual/core/index-creation/)

## Problems, failure modes and limitations

- MongoDB 8.0 indexBulkBuilder exposes external-sorter spill bytes, spill counts, sorted work, and current memory allocation. Its documented diagnostic scope includes ordinary builds, initial-sync collection cloning, and builds resumed after startup, so these metrics cannot automatically be attributed to one resumed build. (low confidence) — [source](https://www.mongodb.com/docs/v8.0/reference/command/serverstatus/)
- A published Percona Server for MongoDB 6.0.9-7 incident includes increasing scan counters, then signal 15 and InterruptedAtShutdown. This illustrates why observed scan progress alone cannot establish successful completion; correlate progress with shutdown and error messages. This is a historical case, not a statement about all resumable builds. (low confidence) — [source](https://forums.percona.com/t/percona-mongodb-in-crash-loop/29744)
- MongoDB documents the log messages "Index build: wrote resumable state to disk" and "Found index from unfinished build" for observing stopped and resumed builds. These messages provide restart evidence that aggregate counters alone cannot supply. (low confidence) (verified as of 2026-10-30) — [source](https://www.mongodb.com/docs/manual/core/index-creation/)
- MongoDB 8.3 recommends $currentOp aggregation; the currentOp database command has been deprecated since 6.2. The mongosh db.currentOp() helper has used $currentOp since MongoDB 5.0, so command deprecation should not be confused with removal of the helper. (low confidence) — [source](https://www.mongodb.com/docs/v8.3/reference/command/currentop/)

## Comparisons and alternatives

- MongoDB 8.0 documents indexBuilds.killedDueToInsufficientDiskSpace and indexBuilds.failedDueToDataCorruption as counts of builds ended for those causes. These are selected failure counters rather than per-build progress measurements. (high confidence) — [source](https://www.mongodb.com/docs/v8.0/reference/command/serverstatus/)
- Use db.currentOp() to inspect ongoing index builds; a command.createIndexes filter is one practical way to find client index-creation operations. Inspect msg and progress when present rather than deriving per-build completion from serverStatus.indexBuilds.total. (high confidence) — [source](https://www.mongodb.com/docs/manual/core/index-creation/)
- MongoDB 8.0 serverStatus.indexBuilds contains total, killedDueToInsufficientDiskSpace, and failedDueToDataCorruption. The documentation scopes these metrics to activity since the server last started; they are aggregate counters rather than a per-build percentage. (low confidence) — [source](https://www.mongodb.com/docs/v8.0/reference/command/serverstatus/)
- Percona's March 25, 2024 experiment includes buildUUID and namespace in index-build transition logs, alongside collection-scan and sorter-load durations. These observed fields provide a basis for correlating a build across log events; the example is historical rather than a guarantee of every release's log schema. (low confidence) (verified as of 2024-03-25) — [source](https://www.percona.com/blog/stages-of-index-build-in-mongodb/)

## Facts and statements

- MongoDB 8.0 indexBulkBuilder.resumed counts bulk-builder instances created for resumable index builds. It is distinct from indexBuilds.total and does not identify an individual build or prove successful completion. (low confidence) — [source](https://www.mongodb.com/docs/v8.0/reference/command/serverstatus/)
- The percentage in currentOp.msg describes the current index-build stage. A historical operator example shows progress moving from a high scan percentage to a lower percentage in the next stage. Therefore a stage percentage is not a monotonic whole-build completion percentage or guaranteed whole-build ETA. (high confidence) — [source](https://www.mongodb.com/docs/manual/core/index-creation/)
- MongoDB documents log messages including Index build: wrote resumable state to disk and Found index from unfinished build for stopped and resumed builds. Percona’s worked example separately shows scan progress, collection-scan completion, and subsequent external-sort insertion messages. Read these as phase and recovery evidence. (high confidence) — [source](https://www.mongodb.com/docs/manual/core/index-creation/)
- MongoDB 8.0 documents killedDueToInsufficientDiskSpace as builds ended for insufficient disk space and failedDueToDataCorruption as builds failed for corruption. Both fields were introduced in 7.1; neither is documented as a comprehensive count of all build failures. (low confidence) — [source](https://www.mongodb.com/docs/v8.0/reference/command/serverstatus/)
- MongoDB 8.3 documents an admin-database $currentOp pipeline with idleConnections:true and a match accepting either op:"command" with command.createIndexes present, or op:"none" with msg matching /^Index Build/. A createIndexes-only filter omits the latter documented branch. (low confidence) — [source](https://www.mongodb.com/docs/v8.3/reference/command/currentop/)
- OneUptime's March 31, 2026 guide estimates remaining time from progress.done, progress.total, and secs_running. This is an author-proposed extrapolation, not a documented whole-build ETA: MongoDB scopes percentage progress to the current stage. (medium confidence) (verified as of 2026-03-31) — [source](https://oneuptime.com/blog/post/2026-03-31-mongodb-monitor-index-build-progress/view)
