Repository navigation
[Feature Proposal] Native Breeze System Health — MSP diagnostics and opt-in customer status #10764
Replies: 1 comment
|
Thanks. Keeping platform health separate from the customer's environment is the right line, and your status semantics (especially Unknown and Disabled as distinct from an outage) are good as written. I'd take the admin tab to spec now and hold the portal half. Q1, home: yes, a Health tab on Q5, Prometheus: don't depend on it. The monitoring overlay is optional and the API has no Prometheus client today. Build the base on what the API can already see, such as the readiness evaluator behind Q4, MVP: API readiness, PostgreSQL, Redis, queue depth and job heartbeats. I'd leave host CPU, memory and disk out of the first version, since the API can't see them in every deployment. Q2 and Q3, portal: not decided yet, so please make it a separate later wave. Three things need answers first:
If it does go ahead, the flag model fits: its own Q6, overlap: extend the System page from #6768. I didn't find an open issue with this in its title. Next step: a spec for the admin tab only, with the portal as an open question at the end. Status: direction accepted for the admin tab, portal undecided. |
Uh oh!
There was an error while loading. Please reload this page.
Summary
I'd like to propose Breeze System Health: a native, read-only page showing the operational health of the Breeze platform itself, distinct from the health of managed endpoints or customer infrastructure.
The goal is to reuse Breeze's existing observability data and provide two deliberately different experiences:
This is a discussion to validate the direction and boundaries before writing an implementation spec.
Why this would be useful
MSP operations
Breeze already exposes health probes, metrics, and infrastructure alerts, but routine platform-health checks may still mean opening Grafana, querying Prometheus, or inspecting individual services.
A native page would help administrators answer, at a glance:
This could also be a foundation for future, evidence-based AI-assisted performance recommendations. For example, if latency and sustained memory pressure correlate, an assistant could suggest investigating memory, swapping, database connection saturation, or worker capacity. This is a future direction, not part of the initial scope, and recommendations must not assert causation without supporting evidence or apply infrastructure changes automatically.
Customer transparency
Customers benefit from knowing whether the Breeze service they use is operational, degraded, or unavailable, without seeing the MSP's internal infrastructure.
The question answered in the Portal is "Is Breeze operating normally?", not "Are my monitored machines healthy?"
Existing foundations (to reuse, not duplicate)
Relevant current repository surfaces include:
docker-compose.monitoring.yml(Prometheus, Grafana, Alertmanager, Loki/Promtail, Redis/PostgreSQL exporters).monitoring/prometheus.ymlandmonitoring/rules/breeze-rules.yml./healthand/health/ready(the latter checks database, Redis, and required consumers). These are intentionally different signals./admin/system, currently with Connections and Deprecations tabs (issue System page — connection status + deprecations #6768 and its approved design). The Connections tab describes configuration, not live health.The proposal is to reuse canonical signals, not create another monitoring engine or require Grafana for this UI. We should also account for optional worker-split and managed-database deployment modes, and not assume host metrics are available in every deployment.
Proposed initial experience
A. Platform administrator — System → Health
Potential new tab in the existing
/admin/systempage, rather than a separate admin section.B. Customer Portal — simple service status
A minimal read-only view backed by a customer-safe API projection, for example:
{ "overall": "degraded", "components": [ { "id": "api", "status": "operational" }, { "id": "background-processing", "status": "degraded" } ], "checkedAt": "2026-10-30T12:00:00Z" }Illustrative only; component names and final status semantics require a spec. The Portal should not receive raw Prometheus queries, internal service URLs, hostnames, logs, metrics labels, credentials, database details, or unfiltered admin DTOs.
C. Per-organization MSP visibility control
The MSP should be able to enable/disable System Health in the Customer Portal per organization.
orgId.This follows the maintainer's guidance in #8775 on one explicit opt-in per data family, default-off controls, field allowlists, and customer-safe projections. #8775 concerns visibility into the customer's environment; this proposal concerns availability of the Breeze platform itself, so the scopes should remain distinct.
Status semantics and failure handling
We should explicitly distinguish:
An alert about managed agents/devices must not automatically make the Breeze platform unhealthy. Also, the existing
/healthliveness probe must not be treated as equivalent to/health/readydependency readiness.One architectural question is how an API-hosted status endpoint behaves during an API-wide outage: it should not misleadingly indicate "operational" or imply guaranteed external status-page availability when the serving application itself is down.
Out of scope for the first version
Questions for the maintainer / community
If the direction is useful, the next step would be a focused spec identifying source metrics/probes, permissions, the exact allowlisted Portal response, status/freshness rules, and tests for disabled monitoring, stale signals, and cross-organization access.
Related: #6768 (System page), #8775 (Portal visibility principles),
docker-compose.monitoring.yml,docs/operations/health-probes.md.All reactions