Automatisierung der Überwachungs- und Benachrichtigungsinfrastruktur mit Terraform
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:
- einen Mac / Unix-Rechner
- ein ilert-Konto. Melden Sie sich jetzt an, es ist kostenlos.
- möglicherweise Docker (wenn Sie keine laufende Grafana-Installation haben)
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
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
Diese Datei beschreibt die erforderlichen Anbieter für unsere Konfiguration und mappt ihre erforderlichen Variablen, z. B. Anmeldeinformationen zum Zugriff auf Grafana oder ilert.
Ressourcen
Diese Dateien beschreiben die Ressourcen der Drittanbieterdienste, z. B. die Grafana-Benachrichtigung oder die ilert-Benachrichtigungsquelle, die für unsere Benachrichtigung verwaltet werden.
Variablen
Diese Datei enthält alle unsere Variablen, die benötigt werden, um unsere Ressourcen einzurichten.
Docker-Compose-Dateien
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:
Ä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):
Sie sollten eine Ausgabe wie diese erhalten:
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:
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.