{% extends "monitor/base.html" %} {% load hb %} {% block title %}{{ check.name }}{% endblock %} {% block content %}

← {{ project.name }}

{{ check.name }} {{ check.status }}

Edit
{% csrf_token %} {% if check.status == 'paused' %} {% else %}{% endif %}
{% csrf_token %}
{% if check.description %}

{{ check.description }}

{% endif %}

Schedule

{{ check.describe_schedule }}

{% if check.schedule_kind == 'cron' %}{{ check.cron_expr }} in {{ check.timezone }}{% else %}Period {{ check.period_seconds }}s{% endif %} · grace {{ check.grace_seconds }}s

Last ping: {{ check.last_ping|ago }}{% if check.last_start and check.status != 'down' %} · running since {{ check.last_start|ago }}{% endif %}
Next expected: {% if check.status == 'paused' %}-{% else %}{{ check.next_expected|until }}{% endif %}

Next 5 fire times

    {% for t in upcoming %}
  1. {{ t|date:"D Y-m-d H:i" }} UTC
  2. {% endfor %}

Stats

Uptime 24h
{{ stats.uptime.24h|pct }}
Uptime 7d
{{ stats.uptime.7d|pct }}
Uptime 30d
{{ stats.uptime.30d|pct }}
Duration p50
{{ stats.p50|duration }}
Duration p95
{{ stats.p95|duration }}
Flaky
{{ stats.flaky_score }}/100 {{ stats.flaky_label }}
{% sparkline durations 300 40 %}

Ping URLs

Success

curl -fsS -m 10 --retry 3 {{ ping_url }}

By name

{{ slug_url }}

Append /start, /fail, /log or /<exit-code>.

Channels: {% for c in check.channels.all %}{{ c.name }}{% if not forloop.last %}, {% endif %}{% empty %}none{% endfor %}

Status history

Ping log

{% for p in pings %} {% if p.body %}{% endif %} {% empty %}{% endfor %}
When (UTC)KindExitDurationSource
{{ p.created|date:"m-d H:i:s" }}{{ p.kind }} {{ p.exit_code|default_if_none:"-" }}{{ p.duration|duration }} {{ p.source_ip|default:"-" }}
{{ p.body|truncatechars:400 }}
No pings yet.
{% endblock %}