Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FIRNTECH

Statuspage Monitor

Abhängigkeitsfreies Uptime-Monitoring für Atlassian Statuspage, betrieben von GitHub Actions.
Alle 5 Minuten ein HTTP-Healthcheck, das Ergebnis landet direkt in den Statuspage-Components.


Monitor Validate Live Status


Funktionsweise

flowchart LR
    A["GitHub Actions<br/><code>*/5 * * * *</code>"] --> B["Ist-Status<br/>von Statuspage lesen"]
    B --> C["Healthcheck<br/>GET /up · Timeout 10s"]
    C -->|"3× Fehler in Folge"| D["PATCH<br/>major_outage"]
    C -->|"2× Erfolg in Folge"| E["PATCH<br/>operational"]
    C -->|"Status bereits korrekt"| F["kein API-Call"]
    D --> G["Statuspage"]
    E --> G
Loading

Pro Lauf und pro Monitor:

  1. Aktuellen Component-Status lesen GET https://api.statuspage.io/v1/pages/{page_id}/components/{component_id}

  2. Healthcheck ausführen – HTTP-Request auf die konfigurierte URL mit Timeout (Standard 10 Sekunden). Erfolgreich ist nur ein erwarteter Statuscode (Standard: genau 200).

  3. Wiederholen, bis ein Ergebnis feststeht:

    • failure_threshold aufeinanderfolgende Fehlversuche → DOWN
    • die nötige Anzahl aufeinanderfolgender Erfolge → UP
  4. Statuspage aktualisieren – nur wenn sich der Status tatsächlich ändert:

    PATCH https://api.statuspage.io/v1/pages/{page_id}/components/{component_id}
    Authorization: OAuth <STATUSPAGE_API_KEY>
    Content-Type: application/json
    
    {"component": {"status": "operational"}}

Weil der Ist-Zustand vor jedem Lauf von Statuspage gelesen wird, braucht das Projekt keinen eigenen Zustandsspeicher.


Weitere Endpoints hinzufügen

Ein Monitor = ein Statuspage-Component. Beliebig viele davon, ein einziger Eintrag pro Endpoint – Code und Workflow müssen nie angefasst werden.

Schritt 1: Component in Statuspage anlegen (Components → Add a component).

Schritt 2: Component-ID nachschlagen:

export STATUSPAGE_API_KEY=...
python3 monitor.py --list-components
page_id      t7lm3xn8kz9q   CoreFit Status
  component  9k2f4b7c1d3e   CoreFit API   [operational]
  component  aa11bb22cc33   Billing API   [major_outage]
  group      gg99hh88ii77   Backend       [operational]

Schritt 3: Monitor in monitors.json ergänzen – die ID direkt eintragen:

{
  "monitors": [
    {
      "name": "CoreFit API",
      "url": "https://api.core-fit.app/up",
      "component_id": "${STATUSPAGE_COMPONENT_ID}"
    },
    {
      "name": "Billing API",
      "url": "https://billing.core-fit.app/health",
      "component_id": "aa11bb22cc33",
      "timeout_seconds": 5,
      "expected_status": [200, 204]
    },
    {
      "name": "Marketing-Site",
      "url": "https://core-fit.app/",
      "component_id": "d4e5f6a7b8c9",
      "method": "HEAD",
      "down_status": "partial_outage"
    }
  ]
}

Committen, fertig. Der nächste geplante Lauf prüft alle Monitore und aktualisiert jeden Component einzeln.

About

Monitor for API UpTime with automatic Atlassian Statuspage updates.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages