I’ve been building Big Hole: GitHub - zelmario/Big-hole: Browser-native MongoDB FTDC viewer. Drag a diagnostic.data folder in — no backend, no containers, and nothing leaves your machine. · GitHub , an open-source viewer for FTDC, the `diagnostic.data` a mongod writes next to its log.
Why another one. FTDC is the richest thing a MongoDB server produces: around 5,700 metrics per sample, once per second. But the files are binary, and the usual answer is a stack you have to stand up before you can look at anything. What I wanted was to open a capture the way you open a log file.
So Big Hole runs entirely in the browser. No backend, no container, no upload, you drop a `diagnostic.data` folder in and it decodes locally, in a worker. That turned out to matter more than I expected: most of the captures I look at come from someone else’s production cluster, and “nothing leaves your machine” is often the difference between being allowed to analyse it and not.
What it does today:
- Every metric, not a curated set.* All ~5,700 are searchable, and you can wrap them in expressions, `rate(serverStatus.opcounters.query)`, `pct(cache.dirty, cache.max)`, `diff(nodeA.lastWrite, nodeB.lastWrite)`.
- Whole replica sets at once. Drop a folder with one subfolder per node and every member lands on a shared time axis, with replication lag, clock skew, and a member-state strip showing who was PRIMARY when.
- Logs on the same timeline. Drop a `mongod.log` alongside and elections, restarts and sync-source changes line up with the metrics.
- Automated checks for the usual pathologies, ticket pool exhaustion, cache pressure, flow control, plus an “explain” view that ranks which metrics actually moved during a window you select.
- Tested against MongoDB 4.4 through 8.0.
It also opens Atlas bundles as-is. Getting FTDC *out* of Atlas is its own problem, there’s no `diagnostic.data` folder to download, so I wrote that part up separately: Getting FTDC out of MongoDB Atlas - DEV Community
MIT licensed. Feedback and issues very welcome, particularly on the automated checks, since thresholds are only worth anything if they’ve been calibrated against captures where something was genuinely wrong.