Zum Hauptinhalt springen

Infrastruktur als Code

Uptime-Überwachung, die Sie in Terraform deklarieren

Stellen Sie einen Monitor so bereit wie den Dienst, den er überwacht. Der Uptimepage-Provider verwaltet Monitore, Statusseiten, Komponenten und Benachrichtigungskanäle in HCL, sodass jeder neue Dienst mit Überwachung ausgeliefert wird statt mit einem Folge-Ticket.

Die Überwachung kommt mit dem Dienst

Deklarieren Sie den Monitor neben der Ressource, die er überwacht, im selben Repository und im selben Apply. Jeder neue Dienst hat vom ersten Moment an einen Check, statt eines Folge-Tickets, das jemand drei Sprints später schließt. Und wenn Sie eine neue Region aufbauen, reproduzieren Sie vierzig Monitore mit einem Apply statt mit vierzig Nachmittagen voller Klicks.

Prüfen Sie es wie jede andere Änderung

Öffnen Sie ein beliebiges Überwachungs-Dashboard und zählen Sie die Checks, die niemand erklären kann. Der mit dem 47-Sekunden-Intervall: Warum 47? Die zwei, die immer noch auf einen Staging-Server zeigen, der im März abgeschaltet wurde. Zusammengeklickte Konfiguration verrottet, weil die Begründung mit ihrem Autor geht. In einem Repository ist jede Änderung ein Pull Request: „Warum senken wir das Intervall beim Zahlungs-Check?“ ist ein Gespräch, das man besser im Review führt als im Postmortem, und git blame erinnert sich an die Antwort, wenn der Autor längst weitergezogen ist.

Ein Schema, das Unsinn ablehnt

Der check-Block des Providers ist absichtlich verschachtelt: Sie setzen den Typ auf "http" und füllen dann einen http-Block aus. Eine flache Ressource mit url, port, host und cert_days auf oberster Ebene würde Sie einen TCP-Check mit einem HTTP-Status-Matcher schreiben lassen und erst beim Apply Bescheid geben. Die verschachtelte Form macht solche ungültigen Zustände unmöglich. Etwas mehr Schreibarbeit, und eine ganze Kategorie von Fehlern ist verschwunden. Die Ausnahme, die man kennen sollte, ist der Heartbeat: An ihn wird nichts gesendet, daher ist die URL, an die sich Ihr Cronjob meldet, kein Argument, das Sie setzen, sondern ein Wert, den Sie über die Datenquelle uptimepage_heartbeat zurücklesen.

Steht es im Code, gewinnt der Code

Es gibt einen Kompromiss, und den sollten Sie vorher kennen: Sobald ein Monitor in Terraform steht, ist das Dashboard nicht mehr die maßgebliche Quelle. Erhöhen Sie ein Intervall von Hand, und der nächste Plan schlägt vor, es zurückzusetzen; führen Sie terraform plan -refresh-only aus, um Abweichungen zu sehen, bevor sie Sie überraschen. Und wer den Ressourcenblock löscht, löscht den echten Monitor, stillschweigend. Behandeln Sie einen entfernten Check mit demselben Misstrauen wie eine gelöschte Tabelle, denn Sie bemerken es erst, wenn das, was Sie nicht mehr überwachen, kaputtgeht.

Behandeln Sie die State-Datei wie ein Geheimnis

Wenn ein Check Basic Auth braucht, erreicht das Passwort den Provider über Ihre Konfiguration, und der Terraform-State hat ein langes Gedächtnis: Alles, was dort gespeichert ist, kann jeder lesen, der das Backend lesen kann. Der Provider markiert das Passwort als sensitiv, was es aus der Plan-Ausgabe heraushält, aber nicht aus der State-Datei selbst, der eigentliche Schutz ist also ein verschlüsseltes State-Backend mit eng begrenztem Zugriff. Terraform 1.11 hat Write-only-Argumente eingeführt, Werte, die überhaupt nicht gespeichert werden, und sie sind langfristig die richtige Antwort für Zugangsdaten in Checks.

Tokens für genau eine Aufgabe

Ein Terraform-Lauf sollte keine Zugangsdaten mitführen, die alles dürfen. Tokens sind auf eine Ressource und eine Aktion beschränkt, an eine Organisation gebunden und haben ein erzwungenes Ablaufdatum, sodass das Token in Ihrer Pipeline Monitore anlegen kann, ohne zugleich Ihre Organisation löschen zu können.

Einen Monitor in Terraform deklarieren

terraform {
  required_providers {
    uptimepage = {
      source = "uptimepage/uptimepage"
    }
  }
}

resource "uptimepage_target" "api" {
  name     = "api prod"
  interval = 60

  check = {
    type = "http"
    http = {
      url = "https://example.com/healthz"
      expected_status = {
        kind  = "exact"
        exact = 200
      }
    }
  }
}

Häufige Fragen

Welchen Provider verwende ich?
Den offiziellen Provider, Quelle uptimepage/uptimepage in der Terraform Registry. Er verwaltet Monitore, Statusseiten, Komponenten und Benachrichtigungskanäle.
Was kann ich in Terraform deklarieren?
Monitore mit HTTP-, TCP-, DNS-, TLS-, Domain-, Ping-, Heartbeat- oder Flow-Checks, manuelle Monitore, öffentliche Statusseiten und ihre Komponenten sowie Benachrichtigungskanäle: dieselben Dinge, die Sie im Dashboard ändern.
Brauche ich den gehosteten Dienst?
Nein. Starten Sie kostenlos im gehosteten Tarif ohne Karte, oder hosten Sie unter AGPL selbst und richten Sie den Provider auf Ihre eigene Instanz.
Wie authentifiziert sich der Provider?
Mit einem eingeschränkten API-Token: Berechtigungen pro Ressource und Aktion, an eine Organisation gebunden, mit erzwungenem Ablaufdatum. Erstellen Sie für Terraform ein Token mit Schreibrechten statt eines Schlüssels, der alles oder nichts darf.

Auf einen Blick

  • Terraform-Provider uptimepage/uptimepage
  • Ressourcen Monitore, Seiten, Komponenten, Kanäle
  • Check-Typen HTTP, TCP, Ping, Heartbeat, DNS, TLS, Domain, Flow, manuell
  • Prüfintervall ab 60 s, höhere Untergrenzen bei Ablauf-Checks
  • Authentifizierung eingeschränkte, ablaufende API-Tokens
  • Einstiegspreis kostenlos, ohne Karte

Links

In unter 5 Minuten startklar.

Kostenlos starten

Funktionen · Preise · Notizen