Often, an admin looks at the output of juju status and sees a green active/idle, even though something is definitely wrong - for example, no space left on device.
With separation of concerns in mind, we should ideally use juju status (and juju log) for operator concerns, and standard observability for workload concerns. This separation can be a bit fuzzy when the charm itself is instrumented, since the charm’s own logs and traces may also be forwarded to the same observability backend. That is a good thing - it enables alerts and dependable support. Technically, “everything” can and should end up in your observability backend.
But which situations belong in juju status? Pure operator concerns such as snap management are obvious, but some situations are both a workload and an operator concern, and would benefit from being reflected in juju status in addition to the observability backend.
| Situation | Workload concern | Operator concern |
|---|---|---|
no space left on device |
back-pressure; service outage | charm config options that affect disk usage; know-how on safe purging (destructive data loss), but must not be automated - must be triggered by admin |
| x509 error | back-pressure; service outage | relation data incomplete, incorrect or outdated; charm depends on root ca certs the oci image didn’t include |
In other words, the “concern” is not necessarily “juju status” vs. “observability”, but rather more contextual and fluid - e.g. “handover vs operation”, “admin vs SRE”, “ssh vs gui”, “rapid response vs in-depth investigation”. There is also no exclusivity restriction: we can log and block for the same reason. Looking at juju status is similar to running htop or ps aux | grep ... - it’s familiar, easy and straightforward, and currently some admins rely on it.
Why set status in addition to having an alert rule
A couple of scenarios where we should set status (e.g. blocked) in addition to having an alert rule:
- Reflecting an operational issue with an alert rule may be too challenging in a given context. For example, to get “no space left on device” alerts out-of-the-box for a Persistent Volume in K8s, we’d need to use charmed k8s, ensure the team included an alert for this, and that our substrate is using a new enough revision of the k8s charm that includes observability integrations.
- Network partition or complete outage of the observability cluster. If everything is
active, the admin’s task is much more difficult. - Users getting started with Juju who do not yet understand what’s going on. It doesn’t make sense to ask them to deploy an observability model just to get a feel for charmed operators.
- Minimal or edge deployments that run without observability.
Where do we draw the line?
It would be useful for admins to see a non-active status in any the following situations:
- Anything that currently causes an outage (regardless of whether an admin can do anything about it) that the charm can determine without poking the workload’s API. For example:
- Incomplete integrations graph, e.g. mandatory relation pairs are not fulfilled.
- Anything that currently causes a partial outage that the charm can determine without poking the workload’s API, and an admin is needed to resolve.
- Model departure, i.e. there is no outage but the workload is operating in a context different from what the juju model strictly prescribes. For example:
- Validation of forwarded alert rules failed.
How non-active status messages help with observability
The Juju team is working on improving the instrumentation of the controller. When “juju status” is mirrored in the observability backend, we will be able to have dashboards and alerts for non-active statuses. This could be reflected as metrics or log lines collected from juju show-status-log. Rendering valuable non-active status messages in the charm today, would improve the quality of diagnosis from within the observability platform in the future.
Summary
Admins today and SREs in the future would benefit if certain issues were reflected using non-active juju status messages. Messages that are worthwhile surfacing as a juju status usually have something to do with an outage or model departure.
References
- @sinap, prometheus-k8s, “feat: block Prometheus charm when available disk space is insufficient” #719, August 2025.
- @ppasotti, loki-k8s, “charm logging lib” #392, June 2024.
- @ppasotti, tempo-k8s, “Charm tracing” #1, July 2023; later, the CharmTech team refactored it into ops, March 2025.
- @sed-i, “Self tests for charms?”, May 2024.
- @sinap, “Charm self tests: the story of the Prometheus that looked healthy”, Jan 2026.
- @sed-i, cos-lib, “Add helper for mandatory relation pairs” #25, April 2024.

