{% extends "base.html" %} {% block title %}Check · {{ m.name }}{% endblock %} {% block content %}
Monitors / {{ m.name }} / Checks / {{ c.created_at|dt }}

{% if c.ok %}{% else %}{% endif %}Check at {{ c.created_at|dt }}

{% if c.ok %}OK{% else %}{{ c.error_kind }}: {{ c.error }}{% endif %}{% if c.status_code %} · HTTP {{ c.status_code }}{% endif %}{% if c.latency_ms is not none %} · {{ c.latency_ms }} ms{% endif %}{% if c.duration_ms is not none %} · ran {{ fmt_duration(c.duration_ms // 1000) }}{% endif %}{% if c.changed %} · content changed{% endif %}

{% if c.evidence %}

Evidence

Status
HTTP {{ c.evidence.status }}
Final URL
{{ c.evidence.final_url }}
Timing
DNS {{ c.evidence.timing.dns_ms }} ms · first byte {{ c.evidence.timing.ttfb_ms }} ms · total {{ c.evidence.timing.total_ms }} ms
{% for k, v in c.evidence.headers.items() %}
{{ k }}
{{ v }}
{% endfor %}

Response body{% if c.evidence.body_truncated %} (first 4 KB){% endif %}

{{ c.evidence.body or '(empty)' }}
{% if prev_ok %}
Last successful check before this: {{ prev_ok.created_at|dt }} (HTTP {{ prev_ok.status_code }}, {{ prev_ok.latency_ms }} ms)
{% endif %}
{% endif %} {% if c.assertion_results %}

Assertions

{% for r in c.assertion_results %}{% endfor %}
{% if r.ok %}pass{% else %}fail{% endif %}{{ r.rule }}{{ r.detail }}
{% endif %} {% if c.detail and c.detail.get('steps') %}

Flow steps

    {% for s in c.detail.steps %}
  • {{ loop.index }}. {{ s.name }}{% if s.status %} HTTP {{ s.status }}{% endif %}{% if s.ms is not none %} {{ s.ms }} ms{% endif %}{% if s.error %}
    {{ s.error }}
    {% endif %}{% if s.extracted %}
    {% for k, v in s.extracted.items() %}{{ k }} = {{ v }}{% if not loop.last %} · {% endif %}{% endfor %}
    {% endif %}
  • {% endfor %}
{% endif %} {% if c.detail and c.detail.get('checks') %}

Health checks

{% for h in c.detail.checks %}{% endfor %}
{{ h.status }}{{ h.name }}
{{ h.message }}
{% endif %} {% if c.detail and c.detail.get('dns_changes') %}

DNS changes

{% for ch in c.detail.dns_changes %}
{{ ch }}
{% endfor %}
{% endif %} {% if c.output %}

Job output

{{ c.output }}
{% endif %}
{% if c.diff %}

Diff

{% for line in c.diff.splitlines() %}{% if line.startswith('+') %}{{ line }}{% elif line.startswith('-') %}{{ line }}{% else %}{{ line }}{% endif %}{% endfor %}
{% endif %} {% if c.snapshot %}

Snapshot ({{ c.snapshot|length }} chars)

{{ c.snapshot[:20000] }}
{% endif %} {% if not c.diff and not c.snapshot and not c.evidence and not c.output %}

No content captured for this check.

{% endif %}
{% endblock %}