BLOG

Automatisierung der Überwachungs- und Benachrichtigungsinfrastruktur mit Terraform

Christian Fröhlingsdorf
November 16, 2020
Table of Contents:

Bei ilert setzen wir auf Infrastruktur als Code und versuchen, unsere Prozesse so weit wie möglich zu automatisieren. Dies kann von geschickten kleinen Bash-Skripten bis hin zu vollständigen Terraform-Projekten reichen, die ganze Umgebungen mit nur einem terraform apply auf einer CLI erstellen können.

Mit HashiCorps Terraform können Sie Infrastruktur als Code nutzen, um jede Cloud, Infrastruktur oder Dienstleistung bereitzustellen und zu verwalten. Terraform kann über die Terraform-Registry um Dienste von Drittanbietern erweitert werden.

Schauen wir uns an, wie wir den Grafana Terraform Provider und den ilert Terraform Provider nutzen können, um eine automatisierte Metrikenbenachrichtigung einzurichten, die während der Supportzeiten einen Telefonanruf auslöst.

Anforderungen

Sie benötigen:

Anweisungen zur Einrichtung von Grafana

Hinweis: Falls Sie bereits eine laufende Grafana-Instanz bereit haben, können Sie diesen Schritt überspringen.

Wenn Sie jedoch keine zur Hand haben und Ihre Optionen schnell erkunden möchten, haben wir Ihnen ein Docker-Compose-Setup bereitgestellt, mit dem Sie schnell eine Instanz erstellen können.

Klonen Sie unser Beispielrepository:

  • git clone git@github.com:iLert/terraform-grafana-alerting-sample.git
  • cd terraform-grafana-alerting-sample
  • Führen Sie "docker-compose up" aus
  • Ihre Grafana-Instanz sollte unter http://localhost:3000 laufen

Anweisungen zur Einrichtung von ilert

Normalerweise würden Sie Ihre ilert-Benutzer und Benachrichtigungseinstellungen direkt in ilert oder über SSO-Provider in größeren Anwendungen einrichten. Für diese Terraform-Demonstration erstellen wir jedoch alle Ressourcen vollständig in Terraform, einschließlich des Benutzers und seiner Einstellungen.

Anweisungen zur Einrichtung von Terraform

installing hashicorp terraform

Lassen Sie uns zunächst Terraform installieren. Sie können eine Kopie von hier herunterladen oder mit Tools wie brew installieren, z. B. brew install terraform.

Überprüfen Sie Ihre ordnungsgemäße Installation mit terraform -v in Ihrer Shell. Sie sollten etwas wie folgt sehen: "Terraform v0.13.5".

Terraform verstehen

Als erstes holen Sie sich den Quellcode für diesen Beitrag, falls Sie das noch nicht getan haben: Klonen Sie unser Beispiel-Repository git clone git@github.com:iLert/terraform-grafana-alerting-sample.git und navigieren Sie dorthin cd terraform-grafana-alerting-sample.

Sie werden die folgenden Dateien und Ordner sehen:

Anbieter


providers.tf

Diese Datei beschreibt die erforderlichen Anbieter für unsere Konfiguration und mappt ihre erforderlichen Variablen, z. B. Anmeldeinformationen zum Zugriff auf Grafana oder ilert.


required_providers {
    ilert = {
        source  = "iLert/ilert"
        version = "~> 1.1.3"
    }
}

Ressourcen


grafana.tf
ilert.tf

Diese Dateien beschreiben die Ressourcen der Drittanbieterdienste, z. B. die Grafana-Benachrichtigung oder die ilert-Benachrichtigungsquelle, die für unsere Benachrichtigung verwaltet werden.


resource "ilert_alert_source" "grafana" {
  name                   = "Grafana Integration"
  integration_type       = "GRAFANA"
  escalation_policy      = ilert_escalation_policy.grafana.id
  incident_priority_rule = "HIGH_DURING_SUPPORT_HOURS"
}

Variablen


variables.tf

Diese Datei enthält alle unsere Variablen, die benötigt werden, um unsere Ressourcen einzurichten.


variable "ilert_user_mobile_number" {
  description = "The iLert user mobile to create"
  type        = string
  default     = "+491234567890"
}

Docker-Compose-Dateien


setup/
docker-compose.yaml

Diese haben wir bereitgestellt, falls Sie keine laufende Grafana-Instanz haben. Sie sind sonst nicht erforderlich und haben nichts mit Terraform zu tun.

Automatisierung der Infrastruktur

Lassen Sie uns sehen, wie wir unsere Infrastruktur bereitstellen können.

Projekt vorbereiten

Bevor wir die gewünschten Änderungen an den Diensten vornehmen können, müssen wir unser Terraform-Projekt initialisieren. Dies bereitet Terraform vor, z. B. indem alle unsere deklarierten Anbieter (Grafana und ilert) abgerufen werden und die Syntax unserer Anbieterdateien vorab validiert wird.

Führen Sie einfach terraform init aus, und Sie sollten eine Ausgabe wie diese sehen:

terraform init output

Änderungen an den Diensten anwenden

Für unser Beispiel haben wir zusätzlich einige praktische Umgebungsvariablen für Sie konfiguriert, um die dynamischen Argumente noch flexibler weiterzugeben (stellen Sie sicher, dass Sie sie an Ihre Bedürfnisse anpassen):


# adjust according to your grafana instance (these are the defaults for our docker-compose)
export GRAFANA_URL="http://127.0.0.1:3000"
export GRAFANA_AUTH="admin:admin"

export ILERT_ORGANIZATION="your-ilert-tenant"
export ILERT_USERNAME="your-ilert-username"
export ILERT_PASSWORD="your-ilert-user-password"

# we provide additional overrides for our variables.tf right from the cli for your convenience, simply adjust to your phone number
terraform apply \
    -var 'ilert_user_email=example@example.com' \
    -var 'ilert_user_username=example' \
    -var 'ilert_user_mobile_code=DE' \
    -var 'ilert_user_mobile_number=+4915231062570'

Sie sollten eine Ausgabe wie diese erhalten:

terraform apply output

Testbenachrichtigung auslösen

Sie können jetzt eine Testbenachrichtigung in Ihrer Grafana-Instanz auslösen. Wenn Sie sich während Ihrer Supportzeiten befinden (überprüfen Sie ilert.tf dafür, standardmäßig ist es Europe/Berlin Mo-Fr 8-17 Uhr), sollten Sie einen Telefonanruf mit den Informationen zu Ihrem Vorfall erhalten.

Alle Änderungen rückgängig machen

Dies zeigt eigentlich die Größe von Infrastruktur als Code, insbesondere während der Prototypisierung von Umgebungen im Frühstadium. Mit einem einzigen Befehl können wir alle Ressourcen entfernen und sauber starten.

Alles durch Ausführen von terraform destroy. Ihre CLI-Ausgabe sollte so aussehen:

terraform apply output

Weitere Schritte

Der ilert Terraform Provider bietet weitere Ressourcen, z. B. Verbindungen oder Konnektoren, die ebenfalls verwaltet werden können.

Außerdem sollten Sie immer sicherstellen, dass der Zustand des Terraform-Projekts in einem verschlüsselten Bucket gespeichert ist. Derzeit wird der Zustand lokal mit Ihrem Projekt gespeichert (ignoriert durch ".gitignore"). Der Zustand enthält jedoch Anmeldeinformationen und Sperren, letztere sollten in der Cloud gehostet werden, um eine gemeinsame Funktionalität über Teams hinweg bereitzustellen. Werfen Sie einen Blick auf die offizielle Dokumentation zu Terraform State für weitere Informationen.

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.