Coverage
What is running that nothing is watching — detected, surfaced, and fixable in one click.
Fleet → Coverage answers the question monitoring cannot ask itself: what is running here that nothing is watching?
The loop
detect what runs → is anything watching it? → offer a fix → one click applies itNot a report. A report of monitoring gaps that requires somebody to go and configure each one is a report that is read once.
How things are detected
From shape, never from a name:
| Signal | Detected from |
|---|---|
| A listening port | The listener baseline |
| A metrics endpoint | A Prometheus exposition on localhost |
| A health document | A recognised health-document shape |
| A systemd unit | Unit state |
| A container | Runtime inventory |
Code knows shapes, data knows vendors. There is no branch anywhere that says "if this is <vendor>". A new service is supported by adding data, not by adding code — which is why coverage keeps working for things nobody anticipated.
What it reports
| Finding | Means |
|---|---|
| Unwatched listener | Something is serving and nothing checks it |
| Unscraped exporter | Metrics exist and are not collected |
| Unread health document | The application already reports its own health and nobody is listening |
| Unwatched unit | A unit whose failure would be silent |
| No agent at all | The machine is known and not instrumented |
Applying a fix
Each finding carries the collector, probe or rule that would close it. Apply creates it.
Applying is a normal, audited change — it creates the same objects you would create by hand, and they can be edited afterwards.
Reading it honestly
A finding is not automatically a problem. Some ports should not be monitored and some units genuinely do not matter.
Dismiss those explicitly rather than leaving them in the list. A coverage page with forty known-fine findings is a page nobody reads, which means the forty-first — the one that matters — is invisible.
Related
- Service collectors — what gets created
- Probes
- Rules and silences
Where this behaviour lives: backend/internal/service/agent_coverage_svc.go, frontend/src/app/agents/coverage/. If the code and this page disagree, the code is right — please fix the page.
Part of Fleet — The agent on each server: what it collects and what it may be asked to do.