feat(docker): Docker disk is recorded over time per host, the Disk page shows each host's growth and folds images under their repository, and the overview has one disk line per host (#5304–#5306)
- #5304 "Docker disk totals recorded over time per host, with a growth chart and alertable metrics" - #5305 "Disk page: images grouped by repository, versions folded under it" - #5306 "Docker overview: one disk line per host linking to the Disk page" Each `docker system df` report is now also recorded as metrics, with the host as the resource: disk_total_bytes, its parts, and disk_reclaimable_bytes. An alert rule can watch them. The Disk page starts with the hosts side by side, showing how much each grew over the selected range with a line of it, then gives each host its own section. An image's versions fold under its repository, which is charged only for the layers its versions don't share. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -240,6 +240,14 @@ async def _persist_disk(session, host, disk: dict) -> None:
|
||||
summary.containers_count = int(disk.get("containers_count") or 0)
|
||||
summary.volumes_count = int(disk.get("volumes_count") or 0)
|
||||
summary.updated_at = now
|
||||
# The totals as metrics too (#5304): a history of each host's growth, and
|
||||
# something an alert rule can watch. Resource: the host's name.
|
||||
from steward.core.alerts import MetricBatch
|
||||
from .disk_view import disk_metrics
|
||||
batch = MetricBatch()
|
||||
for metric, value in disk_metrics(disk).items():
|
||||
batch.add(source_module="docker", resource_name=host.name, metric_name=metric, value=value)
|
||||
await batch.record(session)
|
||||
|
||||
images = disk.get("images") or []
|
||||
seen: set[str] = set()
|
||||
|
||||
Reference in New Issue
Block a user