{
  "$schema": "Vertrag zwischen Monitoring und Statusseite. Die Seite rendert ausschliesslich hieraus.",
  "updated": "2026-09-10T15:04:00+02:00",
  "services": [
    {
      "id": "relay-zh",
      "name": "Relay Zürich",
      "host": "relay1.hiy.ch · Zürich, AS58057",
      "kind": "relay",
      "state": "ok",
      "latency": 34,
      "uptime30": 100.0,
      "uptime90": 99.98,
      "queue": 0,
      "latencySeries": [33,32,31,34,36,35,33,32,31,30,32,34,37,39,38,36,34,33,32,31,33,34,35,34],
      "history": [
        { "d": "2026-06-13", "state": "ok" },
        { "d": "2026-08-14", "state": "down" },
        { "d": "2026-09-10", "state": "ok" }
      ]
    },
    {
      "id": "relay-gva",
      "name": "Relay Genf",
      "host": "relay2.hiy.ch · Genf, AS58057",
      "kind": "relay",
      "state": "degraded",
      "latency": 118,
      "uptime30": 99.6,
      "uptime90": 99.82,
      "queue": 1420,
      "latencySeries": [92,95,98,140,180,220,410,380,300,250,190,160,140,130,125,120,118,116,115,118,120,119,118,118],
      "history": [
        { "d": "2026-06-13", "state": "ok" },
        { "d": "2026-09-10", "state": "degraded" }
      ]
    },
    {
      "id": "auth",
      "name": "ortino.AUTH",
      "host": "auth.ortino.tech · Anmeldung und Gerätewechsel",
      "kind": "neben",
      "state": "ok",
      "latency": 52,
      "uptime30": 100.0,
      "uptime90": 99.99,
      "queue": 0,
      "latencySeries": [50,51,52,53,52,51,50,49,51,52,54,55,53,52,51,50,52,53,52,51,50,52,53,52],
      "history": [{ "d": "2026-09-10", "state": "ok" }]
    },
    {
      "id": "push",
      "name": "Push-Zustellung",
      "host": "APNs und FCM · Benachrichtigungen bei geschlossener App",
      "kind": "neben",
      "state": "ok",
      "latency": 210,
      "uptime30": 99.98,
      "uptime90": 99.91,
      "queue": 0,
      "latencySeries": [200,205,210,215,220,230,240,225,210,205,200,198,205,210,215,220,218,212,208,205,202,206,210,209],
      "history": [{ "d": "2026-09-10", "state": "ok" }]
    },
    {
      "id": "web",
      "name": "Webanmeldung",
      "host": "hiy.app · Handy als Terminal, Kopplung per QR",
      "kind": "neben",
      "state": "ok",
      "latency": 71,
      "uptime30": 100.0,
      "uptime90": 99.95,
      "queue": 0,
      "latencySeries": [70,71,72,70,69,71,73,74,72,70,69,68,70,71,72,73,71,70,69,71,72,71,70,71],
      "history": [{ "d": "2026-09-10", "state": "ok" }]
    }
  ],
  "incidents": [
    {
      "id": "2026-09-10-relay-gva",
      "title": "Relay Genf antwortet langsam, Zustellung staut sich",
      "severity": "degraded",
      "start": "2026-09-10T09:41:00+02:00",
      "end": null,
      "affected": ["relay-gva"],
      "updates": [
        { "t": "09:41", "label": "Erkannt", "text": "Antwortzeiten über 400 ms auf Relay Genf. Zustellungen laufen, brauchen aber länger." },
        { "t": "10:05", "label": "Eingegrenzt", "text": "Volllaufendes Log-Volume auf dem Host. Der Relay ist gesund, die Platte nicht." },
        { "t": "10:20", "label": "Umgeleitet", "text": "Neue Verbindungen gehen vorerst auf Relay Zürich." },
        { "t": "12:15", "label": "Wird behoben", "text": "Log-Rotation korrigiert, Volume vergrössert. Wir beobachten." }
      ]
    },
    {
      "id": "2026-08-14-relay-zh",
      "title": "Relay Zürich 43 Minuten offline nach fehlgeschlagenem Deploy",
      "severity": "down",
      "start": "2026-08-14T09:12:00+02:00",
      "end": "2026-08-14T09:55:00+02:00",
      "affected": ["relay-zh", "web"],
      "updates": [
        { "t": "09:12", "label": "Erkannt", "text": "Relay Zürich nimmt nach einem Deploy keine Verbindungen mehr an." },
        { "t": "09:26", "label": "Ursache", "text": "Geänderte Umgebungsvariable liess den Dienst beim Start abbrechen. Der Health-Check prüfte den Port statt den Handshake." },
        { "t": "09:55", "label": "Behoben", "text": "Rollback, Rückstau ausgeliefert, kein Datenverlust." },
        { "t": "—", "label": "Konsequenz", "text": "Health-Check prüft jetzt einen vollständigen Handshake. Deploys laufen nie mehr auf beiden Relays gleichzeitig." }
      ]
    }
  ]
}
