{% extends "cms/base.html" %} {% load cms_time %} {% block title %}Service Health{% endblock %} {% block page_title %}Service Health{% endblock %} {% block extra_head %} {% endblock %} {% block cms_content %}

Service Health ({{ measured }} of {{ total_sites }} measured)

{% if down_now %} {{ down_now }} site{{ down_now|pluralize }} down {% else %} All systems operational {% endif %} Fleet
{{ master.name|default:"This site" }} uptime
{% if mh and mh.uptime_pct is not None %}{{ mh.uptime_pct }}%{% else %}—{% endif %}
{% if mh and mh.sample_count %} {{ mh.sample_count }} check{{ mh.sample_count|pluralize }} · avg {{ mh.avg_latency|default:"-" }}ms · last {{ mh.last.checked_at|short_ago }} ago {% if mh.sample_count < 30 %} · too few checks to be meaningful yet{% endif %} {% else %}No checks recorded yet{% endif %}
{% for r in rows %} {% empty %} {% endfor %}
Site Uptime Latency Last Check Control
{% if not r.tenant.monitor_enabled %} {% elif r.never %} {% elif r.is_up %} {% else %} {% endif %}
{% firstof r.tenant.primary_domain r.tenant.name %}
{{ r.tenant.name }}
{% if r.uptime is not None %} {{ r.uptime }}% {% else %} — {% endif %} {% if r.latency %}{{ r.latency }}ms{% else %}—{% endif %} {% if r.last %}{{ r.last.checked_at|short_ago }} ago{% else %}never{% endif %}
{% csrf_token %}
No sites.
{% if page_obj.has_other_pages %}
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }} · {{ total_sites }} site{{ total_sites|pluralize }}
{% if page_obj.has_previous %} {% endif %} {% for num in page_obj.paginator.page_range %} {% if num == page_obj.number %} {{ num }} {% elif num >= page_obj.number|add:'-2' and num <= page_obj.number|add:'2' %} {{ num }} {% endif %} {% endfor %} {% if page_obj.has_next %} {% endif %}
{% endif %}
{% for i in incidents %} {% empty %} {% endfor %}
Incident History {% if open_incidents %}{{ open_incidents }} open{% endif %}
{% if not i.tenant.monitor_enabled %} {% elif i.ended_at %} {% else %} {% endif %}
{{ i.tenant.name }}
{{ i.get_cause_display }}
{{ i.started_at|date:"d M H:i" }}
{% if not i.tenant.monitor_enabled %}not monitored {% elif i.ended_at %}{{ i.duration|short_duration }} {% else %}ongoing{% endif %}
No incidents recorded.
{% if not mh.sample_count %}
No uptime data yet. It is recorded by manage.py ping_sites, which needs to run on a schedule. Every five minutes fills the 1H and 1D views quickly. The 1M view needs checks more often than once a minute to be meaningful.
{% endif %} {% endblock %} {% block extra_js %} {% endblock %}