{% extends "base.html" %} {% block title %}SLA report{% endblock %} {% block head %}{% endblock %} {% block content %}
Reports / SLA

SLA report · {{ days }} days

{{ since|dt }} → {{ until|dt }} · workspace {{ ws.email }} · generated {{ until|dt }}

{% if not plan.slo %}
SLO targets and this report are available on Pro and above. Upgrade.
{% endif %}
Monitors with an SLO
{{ with_slo|length }}
of {{ rows|length }} monitors
SLOs met
{{ met }}
SLOs breached
{{ breached }}
Period
{{ days }} days
{% if with_slo %}

Service level objectives

{% for r in with_slo %}{% endfor %}
ServiceTargetAchievedResultError budgetDowntimeIncidents
{{ r.m.name }}
{{ r.m.url }}
{{ r.target }}%{{ r.achieved if r.achieved is not none else '—' }}{% if r.achieved is not none %}%{% endif %} {{ 'met' if r.met else 'breached' }}{{ fmt_duration(r.remaining_s) }} left of {{ fmt_duration(r.budget_s) }}{{ fmt_duration(r.down_s) }}{{ r.incidents|length }}
{% endif %}

All monitors

{% for r in rows %}{% endfor %}
MonitorTypeUptimeDowntimeIncidents
{{ r.m.name }}{{ r.m.mode }}{{ r.achieved if r.achieved is not none else '—' }}{% if r.achieved is not none %}%{% endif %}{{ fmt_duration(r.down_s) }}{{ r.incidents|length }}
{% set all_incs = [] %}{% for r in rows %}{% for i in r.incidents %}{% if all_incs.append((r.m, i)) %}{% endif %}{% endfor %}{% endfor %} {% if all_incs %}

Incident register

{% for m, i in all_incs %}{% endfor %}
StartedServiceDurationCauseAcknowledgedPostmortem
{{ i.started_at|dt }}{{ m.name }}{{ fmt_duration(i.duration_seconds) }}{{ (i.cause or '')[:120] }}{{ i.acknowledged_by or '—' }}{{ (i.postmortem or '—')[:160] }}
{% endif %}

Uptime = successful checks ÷ total checks in the period. Downtime = sum of confirmed outage incidents. Error budget = allowed downtime at the target over the period. Report generated by {{ app_name }}.

{% endblock %}