- #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>
38 lines
2.1 KiB
HTML
38 lines
2.1 KiB
HTML
{# docker/_disk_hosts.html — every Docker host's disk side by side (#5304):
|
||
what it uses now, how much that grew over the selected range, and a line
|
||
of it; the parts after. A host is linked to its own section below. #}
|
||
{% if rows %}
|
||
<table class="table">
|
||
<thead><tr>
|
||
<th>Host</th>
|
||
<th class="num">Docker uses</th>
|
||
<th class="num" title="Change in the total over the last {{ range_key }}, from Steward's own record of it">Change ({{ range_key }})</th>
|
||
<th>Over {{ range_key }}</th>
|
||
<th class="num">Images</th><th class="num">Volumes</th><th class="num" title="Written by containers on top of their images">Container files</th>
|
||
<th class="num">Build cache</th><th class="num" title="Held by images no container uses">Reclaimable</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
{% for r in rows %}
|
||
{% set g = r.growth %}
|
||
<tr>
|
||
<td><a href="#host-{{ r.host_id }}">{{ r.host_name }}</a></td>
|
||
<td class="num"><strong>{{ r.total|bytes }}</strong></td>
|
||
<td class="num">
|
||
{%- if g is none %}<span class="tone-dim" title="Steward records this from now on; growth shows once there are two readings">—</span>
|
||
{%- else %}<span class="tone-{{ 'warn' if g.pct is not none and g.pct >= 10 else ('ok' if g.change < 0 else 'muted') }}"
|
||
title="{{ g.from|bytes }} → {{ g.to|bytes }} since {{ g.since.strftime('%Y-%m-%d %H:%M UTC') }}">{{ "+" if g.change > 0 else ("−" if g.change < 0 else "±") }}{{ (g.change|abs)|bytes }}</span>{% endif -%}
|
||
</td>
|
||
<td class="tone-info">{{ r.spark|safe }}</td>
|
||
<td class="num">{{ r.parts.disk_images_bytes|bytes }}</td>
|
||
<td class="num">{{ r.parts.disk_volumes_bytes|bytes }}</td>
|
||
<td class="num">{{ r.parts.disk_containers_bytes|bytes }}</td>
|
||
<td class="num">{{ r.parts.disk_build_cache_bytes|bytes }}</td>
|
||
<td class="num">{% if r.reclaimable %}<span class="tone-warn">{{ r.reclaimable|bytes }}</span>{% else %}<span class="tone-dim">—</span>{% endif %}</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
{% else %}
|
||
<p class="tone-muted" style="margin:0;padding:1rem;">No host has reported its Docker disk yet.</p>
|
||
{% endif %}
|