BLOG

SaC - Wie man Statusseiten als Code mit Terraform erstellt

Marko Simon
October 13, 2022
Table of Contents:

Statusseiten sind eine clevere Lösung, um alle Ihre Dienste zu bündeln und den Status von ihnen auf einen Blick zu sehen. Bei ilert sind wir diesen Schritt noch weiter gegangen: Warum nicht Ihre Statusseite als Code mit Terraform erstellen? Wir möchten Ihnen zeigen, wie wir dies möglich machen und wie Sie es für Ihre eigene Infrastruktur einrichten können - eine echte SaC-Lösung.

HashiCorps Terraform wird weit verbreitet verwendet, um Infrastruktur als Code bereitzustellen und zu verwalten. In unserem vorherigen Blogpost zu Terraform haben wir alle Grundlagen für die Einrichtung des ilert Terraform Providers und einer Alarminfrastruktur behandelt. Wenn Sie weitere Informationen zur Einrichtung benötigen oder wenn Sie stecken bleiben, finden Sie dort weitere Informationen. Wir werden jetzt den gesamten Prozess durchgehen: von der Erstellung Ihrer ersten Alarmquelle bis hin zur Bereitstellung einer Statusseite mit Automatisierungsregeln über Code mit Terraform.

Anforderungen

Sie benötigen:

Einrichtung

Eine kurze Übersicht darüber, was Sie einrichten müssen:

  • Ihr ilert-Konto
  • eine lokale Installation von Terraform

Zusätzlich müssen Sie das Beispiel-Repository von GitHub klonen.


git clone git@github.com:iLert/terraform-status-page-sample.git

Sie müssen auch Ihre ilert-Anmeldeinformationen entweder als Variablen in terraform apply bereitstellen oder sie in einer separaten Datei mit dem Namen terraform.tfvars speichern. Erstellen Sie eine Datei im Stammverzeichnis des Repositorys mit dem Namen "terraform.tfvars", und Terraform erkennt und setzt diese Variablen automatisch bei jedem apply.


organization = "your organization e.g. tenant"
api_token    = "your api token"
// username     = "your username"
// password     = "your password"

Um Ihre Einrichtung abzuschließen, müssen Sie Terraform initialisieren, um es in Ihrem Verzeichnis zu verwenden. Führen Sie einfach terraform init aus, und die Initialisierung sollte nach der Installation des Providers abgeschlossen sein.

ilert-Infrastruktur

Bevor Sie irgendeinen Code anwenden, hier eine Übersicht über die Ressourcen und deren Beziehungen, die Sie in ilert erstellen werden.

iLert resource connections

In Kürze: Wir senden ein Ereignis an eine Alarmquelle, das einen Alarm auslöst. Eine Automatisierungsregel verbindet die Alarmquelle und einen Dienst, indem sie den Status der Dienste ändert, wenn die Alarmquelle einen Alarm auslöst. Daher überwacht die Statusseite bei einer Änderung des Dienststatus dies und zeigt den aktuellen Status des Dienstes an.

Erstellen einer Statusseite

Einrichten

Zuerst müssen Sie eine Alarmquelle konfigurieren und eine Eskalationsrichtlinie bereitstellen.


data "ilert_escalation_policy" "default" {
  name = "Default"
}

resource "ilert_alert_source" "example" {
  name              = "Example alert source from terraform"
  integration_type  = "API"
  escalation_policy = ilert_escalation_policy.example.id
}

Creating

Erstellen

Um eine Statusseite zu erstellen, benötigen Sie auch einen Dienst, der in der Statusseite enthalten sein wird.


resource "ilert_service" "example" {
  name = "blogpost_example"
}

resource "ilert_status_page" "example" {
  name       = "My Statuspage"
  subdomain  = "example_statuspage.ilert.io"
  visibility = "PRIVATE"

  service {
    id = ilert_service.example.id
  }
}

Hinweis: Eine Subdomain muss eindeutig sein. Sie müssen sie möglicherweise in einen anderen passenden Namen ändern

Automatisieren einer Statusseite

Das Auslösen eines Alarms oder das manuelle Einstellen des Dienststatus ist nicht wünschenswert bei der 24/7-Überwachung. Eine Automatisierungsregel passt perfekt für diese Aufgabe: Sie verbindet die Alarmquelle mit unserem Dienst und hilft uns, den Status unseres Dienstes automatisch bei einem eingehenden Alarm zu ändern.


resource "ilert_automation_rule" "example" {
  alert_type     = "CREATED"
  service_status = "DEGRADED"
  service {
    id = ilert_service.example.id
  }
  alert_source {
    id = ilert_alert_source.example.id
  }
}

Wenn Sie jetzt terraform apply ausführen, sollten Sie eine CLI-Ausgabe wie diese sehen:

terraform apply output

Sie haben erfolgreich eine Alarmquelle und eine Eskalationsrichtlinie konfiguriert und auch eine Statusseite mit einem Dienst erstellt, während Sie über eine Automatisierungsregel automatisieren.

status page operational

Starten Sie Ihren Browser und besuchen Sie example_statuspage.ilert.io, um sich die soeben erstellte Seite anzusehen :)

Starten der Automatisierung

Um alles zu testen, müssen Sie einen Alarm auslösen, das heißt, ein Ereignis an den iLert-Ereignisendpunkt senden. Dafür müssen Sie Ihren Integrations-Schlüssel der Alarmquelle in "apiKey" in "event.json" eintragen.


event.json
{
    "apiKey": "your alert source integration key",
    "eventType": "ALERT",
    "summary": "Test alert"
}

Dieser Schlüssel kann in der Terraform-Statusdatei "terraform.tfstate" oder im iLert-UI unter der Alarmquelle gefunden werden

integration key

Senden Sie nun das Ereignis, um einen Alarm auszulösen:


curl -d "@event.json" -H 'Content-Type: application/json' -X POST https://api.ilert.com/api/events

Ein Alarm wurde erstellt, die Automatisierungsregel hat dies erkannt und den Status unseres Dienstes auf 'Degraded' gesetzt, daher zeigt die Statusseite den Ausfall an.

status page degraded

Zerstören der erstellten Infrastruktur

Durch Verwendung von "terraform destroy" werden alle erstellten Ressourcen zerstört und aus Ihrem ilert-Konto entfernt.

Hinweis: Wenn Sie den Alarm, der von der Alarmquelle ausgelöst wurde, nicht behoben haben, können Sie ihn nicht löschen. Bitte lösen Sie den Alarm zuerst.

Überwachbarkeit kann einfach sein

Das Erstellen Ihrer Statusseite als Code mit dem ilert Terraform Provider vereinfacht den Prozess des Aufbaus einer konsistenten Überwachbarkeit für Ihre eigenen Dienste erheblich. Eine ilert-Statusseite gibt Ihnen die wichtigen Informationen auf den ersten Blick und bietet Details, wenn benötigt.

Wenn Sie mehr über ilert-Statusseiten erfahren möchten, werfen Sie einen Blick auf unsere Dokumentation.

Ein vollständig ausführbares Beispiel des gezeigten Codes finden Sie auf GitHub in unserem entsprechenden Beispiel-Repository.

Blog-Beiträge, die dir gefallen könnten:

Sind Sie bereit, Ihr Incident-Management zu verbessern?
Start for free
Unsere Cookie-Richtlinie
Wir verwenden Cookies, um Ihre Erfahrung zu verbessern, den Seitenverkehr zu verbessern und für Marketingzwecke. Erfahren Sie mehr in unserem Datenschutzrichtlinie.
Open Preferences
Danke! Deine Einreichung ist eingegangen!
Hoppla! Beim Absenden des Formulars ist etwas schief gelaufen.
Danke! Deine Einreichung ist eingegangen!
Hoppla! Beim Absenden des Formulars ist etwas schief gelaufen.
Danke! Deine Einreichung ist eingegangen!
Hoppla! Beim Absenden des Formulars ist etwas schief gelaufen.