{% extends "base.html" %} {% block title %}{% if rule %}Edit Rule{% else %}New Alert Rule{% endif %} — Steward{% endblock %} {% block content %}

{% if rule %}Edit Rule{% else %}New Alert Rule{% endif %}

{# ── Source module ───────────────────────────────────────────────────── #}
{# ── Dynamic resource + metric ────────────────────────────────────────── #}
{# Inline the same partial logic so the page is fully usable without JS #}
{% if resources %} {% else %}

Resource names populate from live metric data. Start the scheduler and try again.

{% endif %}
{# ── Condition ───────────────────────────────────────────────────────── #}
{# ── Metric reference ────────────────────────────────────────────────── #}
Metric reference
{% set descs = { "ping": [("up", "1.0 = reachable, 0.0 = unreachable"), ("response_time_ms", "round-trip latency in milliseconds")], "dns": [("resolved", "1.0 = resolved, 0.0 = failed"), ("ip_changed", "1.0 when resolved IP differs from expected")], "traefik": [("request_rate", "requests/sec for this router"), ("error_rate", "fraction of 5xx responses (0–1)"), ("latency_p50_ms", "median response time ms"), ("latency_p95_ms", "p95 response time ms"), ("latency_p99_ms", "p99 response time ms"), ("response_bytes_rate", "bytes/sec of responses"), ("cert_expiry_days", "days until TLS cert expires")], "unifi": [("is_up", "1.0 = WAN up, 0.0 = down"), ("latency_ms", "WAN latency in ms"), ("total_clients", "number of connected clients")], "docker": [("cpu_pct", "container CPU usage %"), ("mem_pct", "container memory usage %")], "http": [("is_up", "1.0 = check passed, 0.0 = failed"), ("response_ms", "HTTP response time in ms")], } %} {% for src, pairs in descs.items() %}
{{ src }}
{% for metric, desc in pairs %}
{{ metric }} {{ desc }}
{% endfor %}
{% endfor %}
{# ── Ansible action (admin only) ─────────────────────────────────────── #} {% if session.get("user_role") == "admin" %} {% set act = rule.ansible_action if rule and rule.ansible_action else None %}

Admin only. Runs once when the alert transitions into FIRING. steward_alert_* context vars (resource, metric, value…) are injected automatically.

{% endif %}
Cancel
{% endblock %}