{% import "_macros.html" as m %} {% if active_run %} {%- set _kind = {'upgrade': 'Upgrade', 'downgrade': 'Downgrade'}.get(active_run.scope_kind, 'Backup') %} {{ _kind }} run #{{ active_run.id }} in progress {{ active_run.scope_kind }}{% if active_run.scope_value %}: {{ active_run.scope_value }}{% endif %}{% if active_run.total %} · {{ active_run.total }} device{{ '' if active_run.total == 1 else 's' }}{% endif %} View live → {% endif %}
{{ m.dstat('/targets', 'accent', inventory.target_count, 'Devices', 'targets') }} {{ m.dstat('/targets', 'ok', inventory.enabled_count, 'Enabled', 'enabled') }} {{ m.dstat('/groups', 'violet', inventory.groups|length, 'Groups', 'groups') }} {{ m.dstat('/tags', 'info', inventory.tags|length, 'Tags', 'tags') }} {{ m.dstat('/schedules', 'warn', schedule_count, 'Schedules', 'schedules') }} {{ m.dstat('/backups', 'accent', totals.sets, 'Backup sets', 'sets') }} {{ m.dstat('/backups', 'info', totals.files, 'Files', 'files') }} {{ m.dstat('/storage', 'ok', totals.size | filesize, 'Backup size', 'size') }}

{{ m.hicon('reach') }}Reachability

{% if latency_on %}
{{ uptime.up }}up {{ uptime.down }}down {% if uptime.unknown %}{{ uptime.unknown }}pending{% endif %}
{% if uptime.down_hosts %}
    {% for h in uptime.down_hosts %}
  1. {{ h.name }}{{ h.host }}
  2. {% endfor %}
{% if uptime.down_more %}+{{ uptime.down_more }} more down →{% endif %} {% else %}
All {{ uptime.up }} hosts reachable
{% endif %} {% else %}

Latency monitoring is off — enable it under Settings.

{% endif %}

{{ m.hicon('system') }}System

{% if metrics.disk %}{% set d = metrics.disk %}
Backup volume {{ d.free | filesize }} free / {{ d.total | filesize }}
{% endif %} {% if metrics.memory %}{% set mem = metrics.memory %}
Memory {{ mem.available | filesize }} free / {{ mem.total | filesize }}
{% endif %}
Load{% if metrics.load %}{{ metrics.load['1'] }} · {{ metrics.load['5'] }} · {{ metrics.load['15'] }}{% else %}—{% endif %}{% if metrics.cpu_count %} · {{ metrics.cpu_count }} CPU{% endif %}
Destinations{% for dn in destinations %}{{ dn.name }}{% endfor %}
Latest backup{% if totals.newest %}{{ totals.newest | datetime }}{% else %}—{% endif %}
{% if metrics.time %}
Platform time
Timezone{{ timezone_name or metrics.time.tz }}{% if metrics.time.offset %} (UTC{{ metrics.time.offset }}){% endif %}
{% endif %}

{{ m.hicon('health') }}Backup health

{% if health.pips %}
{% set rate = (health.ok_runs / health.total * 100) if health.total else 0 %} {{ health.ok_runs }}/{{ health.total }} recent runs fully succeeded
{% for p in health.pips %} {% endfor %}
Avg duration
{{ health.avg_dur }}s
Last failure
{% if health.last_fail %}#{{ health.last_fail.id }} · {{ health.last_fail.started_at | datetime }}{% else %}none{% endif %}
{% else %}

No runs yet.

{% endif %}

{{ m.hicon('latency') }}Latency

{% if latency_on %}

Lowest

{% if lat_best %}
    {% for r in lat_best %}
  1. {{ r.name }}{{ "%.1f"|format(r.rtt) }}
  2. {% endfor %}
{% else %}

No data yet.

{% endif %}

Highest

{% if lat_worst %}
    {% for r in lat_worst %}
  1. {{ r.name }}{{ "%.1f"|format(r.rtt) }}
  2. {% endfor %}
{% else %}

No data yet.

{% endif %}
{% else %}

Latency monitoring is off — enable it under Settings.

{% endif %}

{{ m.hicon('runs') }}Recent runs

{% if recent_runs %} {% for run in recent_runs %} {% endfor %}
#ScopeTriggerStartedResultDuration
#{{ run.id }} {{ run.scope_kind }}{% if run.scope_value %}: {{ run.scope_value }}{% endif %}{% if run.dry_run %} dry-run{% endif %} {{ run.trigger }} {{ run.started_at | datetime }} {% if run.status == 'running' %}running {% elif run.failed and run.failed > 0 %}{{ run.success }}/{{ run.total }} {% else %}{{ run.success }}/{{ run.total }}{% endif %} {{ run.duration_s | duration }}
{% else %}

There are no runs yet.

{% endif %}