{# monitors/widget.html — the dashboard Monitors widget (#5250): a verdict, then one row per monitor, problems first with why and since when, under one header of latency and uptime over 24h / 7d / 30d. It replaced the separate Uptime / SLA widget, so uptime has one home. #} {% from "_macros.html" import status_dot %} {% if not total %}
| Monitor | Latency | 24h | 7d | 30d |
|---|---|---|---|---|
| {{- status_dot(d.state) -}} {% if session.user_id %}{{ m.name }}{% else %}{{ m.name }}{% endif %} {%- if d.state == 'down' %}went down {{ d.down_since|ago if d.down_since else '' }}{% if d.down_reason %} · {{ d.down_reason }}{% endif %} {%- elif d.state == 'degraded' %}{% if (d.latency or status_class(latest.response_ms, 'latency') if latest else none) == 'crit' %}slow replies{% else %}checks failing now and then{% endif %} {%- elif d.state == 'pending' %}not checked yet{% if m.created_at %} · added {{ m.created_at|ago }}{% endif %}{% endif %} | {% set lat = (d.latency or status_class(latest.response_ms, 'latency')) if latest and latest.is_up and latest.response_ms is not none else none %}{%- if latest and latest.is_up and latest.response_ms is not none %}{{ "%.0f"|format(latest.response_ms) }} ms{% else %}—{% endif -%} | {% for k in ("24h", "7d", "30d") %}{% set u = d.uptime.get(k) %}{% if u is none %}—{% else %}{{ "%.2f"|format(u) }}%{% endif %} | {% endfor %}