1. Einführung
Eventarc vereinfacht die Verbindung von Google Cloud-Diensten mit Ereignissen aus einer Vielzahl von Quellen. Damit können Sie ereignisgesteuerte Architekturen erstellen, in denen Mikrodienste lose miteinander verknüpft und verteilt sind. Außerdem übernimmt er die Ereignisaufnahme, -bereitstellung, -sicherheit, -autorisierung und -behebung für Sie, was die Agilität der Entwickler und die Ausfallsicherheit von Anwendungen verbessert.
Datadog ist eine Monitoring- und Sicherheitsplattform für Cloud-Anwendungen. Es führt End-to-End-Traces, -Messwerte und -Logs zusammen, um Ihre Anwendungen, Infrastruktur und Dienste von Drittanbietern zu beobachten.
Workflows ist eine vollständig verwaltete Orchestrierungsplattform, die Dienste in einer von Ihnen definierten Reihenfolge ausführt. Diese wird als Workflow bezeichnet. In diesen Workflows können in Cloud Run oder Cloud Functions gehostete Dienste, Google Cloud-Dienste wie Cloud Vision AI und BigQuery und eine beliebige HTTP-basierte API kombiniert werden.
Im ersten Codelab haben Sie erfahren, wie Sie Datadog-Monitoringbenachrichtigungen mit Eventarc an Google Cloud weiterleiten. In diesem zweiten Codelab erfahren Sie, wie Sie mit Workflows auf Datadog-Monitoring-Benachrichtigungen reagieren. Genauer gesagt, erstellen Sie zwei virtuelle Compute Engine-Maschinen und überwachen sie mit einem Datadog-Monitor. Sobald eine der VMs gelöscht wurde, erhalten Sie eine Benachrichtigung von Datadog zu Workflows über Eventarc. Workflows erstellt wiederum die gelöschte VM neu, um die Anzahl der ausgeführten VMs wieder auf 2 zu erhöhen.
Lerninhalte
- So aktivieren Sie die Google Cloud-Integration von Datadog.
- Hier erfahren Sie, wie Sie einen Workflow zum Prüfen und Erstellen von Compute Engine-VMs erstellen.
- Anleitung zum Verbinden von Datadog-Monitoring-Benachrichtigungen mit Workflows mit Eventarc.
- Datadog-Monitoring und -Benachrichtigung zu VM-Löschungen erstellen
2. Einrichtung und Anforderungen
Umgebung für das selbstbestimmte Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.
- Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird und jederzeit aktualisiert werden kann.
- Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf die Projekt-ID verweisen, die in der Regel als
PROJECT_ID
identifiziert wird. Wenn es dir nicht gefällt, kannst du eine weitere zufällige Projekt-ID generieren. Du kannst aber auch selbst eine andere testen, um zu sehen, ob sie verfügbar ist. Dann ist es „eingefroren“ nachdem das Projekt erstellt wurde. - Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte ohne großen Aufwand betrieben werden. Wenn Sie Ressourcen beenden möchten, damit über diese Anleitung hinaus keine Kosten anfallen, führen Sie eine Bereinigung durch am Ende des Codelabs. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion von 300$.
Cloud Shell starten
Sie können Google Cloud zwar von Ihrem Laptop aus aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Klicken Sie in der Google Cloud Console rechts oben in der Symbolleiste auf das Cloud Shell-Symbol:
Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:
Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud, wodurch die Netzwerkleistung und Authentifizierung erheblich verbessert werden. Sie können alle Aufgaben in diesem Lab ganz einfach in einem Browser erledigen.
gcloud einrichten
Legen Sie in Cloud Shell Ihre Projekt-ID fest und speichern Sie sie als Variable PROJECT_ID
.
Legen Sie außerdem die Variable REGION
auf us-central1
fest. Dies ist die Region, in der Sie später Ressourcen erstellen.
PROJECT_ID=[YOUR-PROJECT-ID] REGION=us-central1 gcloud config set core/project $PROJECT_ID
APIs aktivieren
Aktivieren Sie alle erforderlichen Dienste:
gcloud services enable \ workflows.googleapis.com \ workflowexecutions.googleapis.com
3. Datadog-Kanal prüfen
Prüfen Sie, ob der Datadog-Kanal, den Sie im ersten Codelab erstellt haben, aktiv ist. Führen Sie in Cloud Shell den folgenden Befehl aus, um die Details des Kanals abzurufen:
CHANNEL_NAME=datadog-channel gcloud eventarc channels describe $CHANNEL_NAME --location $REGION
Die Ausgabe sollte in etwa so aussehen:
activationToken: so5g4Kdasda7y2MSasdaGn8njB2 createTime: '2022-03-09T09:53:42.428978603Z' name: projects/project-id/locations/us-central1/channels/datadog-channel provider: projects/project-id/locations/us-central1/providers/datadog pubsubTopic: projects/project-id/topics/eventarc-channel-us-central1-datadog-channel-077 state: ACTIVE uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e updateTime: '2022-03-09T09:53:48.290217299Z'
Sie können den Kanalstatus auch in der Google Cloud Console ansehen:
Der Kanalstatus sollte ACTIVE
sein. Falls nicht, kehren Sie zum ersten Codelab zurück und folgen Sie den Schritten zum Erstellen und Aktivieren eines Kanals mit Datadog.
4. Google Cloud-Integration von Datadog aktivieren
Wenn Sie Datadog zum Überwachen eines Projekts verwenden möchten, müssen Sie die für Datadog erforderlichen APIs aktivieren, ein Dienstkonto erstellen und das Dienstkonto mit Datadog verbinden.
APIs für Datadog aktivieren
gcloud services enable compute.googleapis.com \ cloudasset.googleapis.com \ monitoring.googleapis.com
Dienstkonto erstellen
Bei der Google Cloud-Integration von Datadog wird über ein Dienstkonto die Cloud Logging API aufgerufen, um Messwerte auf Knotenebene aus Ihren Compute Engine-Instanzen zu erfassen.
Erstellen Sie ein Dienstkonto für Datadog:
DATADOG_SA_NAME=datadog-service-account gcloud iam service-accounts create $DATADOG_SA_NAME \ --display-name "Datadog Service Account"
Aktivieren Sie das Datadog-Dienstkonto, um Messwerte, Tags, Ereignisse und Nutzerlabels zu erfassen, indem Sie die folgenden IAM-Rollen zuweisen:
DATADOG_SA_EMAIL=$DATADOG_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/cloudasset.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/compute.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/monitoring.viewer
Erstellen Sie einen Dienstkontoschlüssel und laden Sie ihn herunter. Sie benötigen die Schlüsseldatei, um die Datadog-Integration abzuschließen.
Erstellen Sie in Ihrem Cloud Shell-Basisverzeichnis eine Schlüsseldatei für das Dienstkonto:
gcloud iam service-accounts keys create ~/key.json \ --iam-account $DATADOG_SA_EMAIL
Klicken Sie in Cloud Shell auf More ⁝
und wählen Sie Download File
aus. Geben Sie im Feld File path
den Wert key.json
ein. Klicken Sie zum Herunterladen der Schlüsseldatei auf Download
.
Dienstkonto mit Datadog verbinden
Gehen Sie in Ihrem Datadog-Konto zum Abschnitt Integrations
und suchen Sie nach der Integrationskachel Google Cloud
:
Bewegen Sie den Mauszeiger auf Google Cloud Platform
, um die Seite Install
aufzurufen:
Installieren Sie die Integration, indem Sie den Dienstkontoschlüssel in den Abschnitt Upload Private Key File
hochladen und dann auf Install Integration
klicken:
Nachdem Sie die Integration abgeschlossen haben, erstellt Datadog automatisch eine Reihe von Google Cloud-bezogenen Dashboards unter Dashboards
:
5. Compute Engine-VMs erstellen
Erstellen Sie als Nächstes einige virtuelle Compute Engine-Maschinen (VMs). Sie überwachen diese VMs mit einem Datadog-Monitor und reagieren auf Datadog-Benachrichtigungen mit einem Workflow in Google Cloud.
Erstellen Sie zwei Compute Engine-VMs:
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
In der Cloud Console sollten innerhalb von etwa einer Minute VMs angezeigt werden, die erstellt und ausgeführt werden. Nach einiger Zeit (in der Regel 10 Minuten) sollten diese VMs auch in Datadog im Google Compute Engine
-Dashboard unter Dashboards
angezeigt werden:
6. Workflow erstellen
Da nun zwei VMs ausgeführt werden, erstellen Sie einen Workflow, der auf Warnungen von einem Datadog-Monitor reagieren soll. Der Workflow kann beliebig komplex sein. In diesem Fall prüft er die Anzahl der ausgeführten VM-Instanzen. Wenn sie unter 2 liegt, erstellt er neue VM-Instanzen, um sicherzustellen, dass immer 2 VMs ausgeführt werden.
Erstellen Sie eine workflow-datadog2.yaml
-Datei mit folgendem Inhalt:
main: params: [event] steps: - init: assign: - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")} - zone: "us-central1-a" - minInstanceCount: 2 - namePattern: "datadog-instance-##" - listInstances: call: googleapis.compute.v1.instances.list args: project: ${projectId} zone: ${zone} result: listResult - getInstanceCount: steps: - initInstanceCount: assign: - instanceCount: 0 - setInstanceCount: switch: - condition: ${"items" in listResult} steps: - stepA: assign: - instanceCount: ${len(listResult.items)} - findDiffInstanceCount: steps: - assignDiffInstanceCount: assign: - diffInstanceCount: ${minInstanceCount - instanceCount} - logDiffInstanceCount: call: sys.log args: data: ${"instanceCount->" + string(instanceCount) + " diffInstanceCount->" + string(diffInstanceCount)} - endEarlyIfNeeded: switch: - condition: ${diffInstanceCount < 1} next: returnResult - bulkInsert: call: googleapis.compute.v1.instances.bulkInsert args: project: ${projectId} zone: ${zone} body: count: ${diffInstanceCount} namePattern: ${namePattern} instanceProperties: machineType: "e2-micro" disks: - autoDelete: true boot: true initializeParams: sourceImage: projects/debian-cloud/global/images/debian-10-buster-v20220310 networkInterfaces: - network: "global/networks/default" result: bulkInsertResult - returnResult: return: ${bulkInsertResult}
Der Workflow empfängt ein Ereignis als Parameter. Dieses Ereignis stammt aus dem Datadog-Monitoring über Eventarc. Sobald das Ereignis empfangen wurde, prüft der Workflow die Anzahl der ausgeführten Instanzen und erstellt bei Bedarf neue VM-Instanzen.
Stellen Sie den Workflow bereit:
WORKFLOW_NAME=workflow-datadog2 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog2.yaml \ --location $REGION
Der Workflow wurde bereitgestellt, wird aber noch nicht ausgeführt. Sie wird von einem Eventarc-Trigger ausgeführt, wenn eine Datadog-Benachrichtigung empfangen wird.
7. Eventarc-Trigger erstellen
Sie können jetzt Ereignisse vom Datadog-Anbieter über einen Eventarc-Trigger mit Workflows verbinden. Sie verwenden den Kanal und das Dienstkonto, das Sie im ersten Codelab eingerichtet haben.
Erstellen Sie einen Trigger mit dem Datadog-Kanal, dem Ereignistyp und einem Workflowziel:
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') gcloud eventarc triggers create datadog-trigger2 \ --location $REGION \ --destination-workflow $WORKFLOW_NAME \ --destination-workflow-location $REGION \ --channel $CHANNEL_NAME \ --event-filters type=datadog.v1.alert \ --service-account $PROJECT_NUMBER-compute@developer.gserviceaccount.com
Sie können sich die Trigger auflisten lassen, um zu sehen, ob der neu erstellte Trigger aktiv ist:
gcloud eventarc triggers list --location $REGION NAME: datadog-trigger2 TYPE: datadog.v1.alert DESTINATION: Workflows: workflow-datadog2 ACTIVE: Yes
8. Datadog-Monitor erstellen
Sie erstellen nun einen Datadog-Monitor und verbinden ihn mit Eventarc.
Das Monitoring prüft die Anzahl der ausgeführten Compute Engine-VMs und gibt eine Benachrichtigung aus, wenn sie unter 2 liegt.
Melden Sie sich bei Datadog an, um einen Monitor in Datadog zu erstellen. Bewegen Sie den Mauszeiger im Hauptmenü auf Monitors
und klicken Sie im Untermenü auf New Monitor
. Es gibt viele Monitortypen. Wählen Sie den Monitortyp Metric
aus.
Erstellen Sie auf der Seite New Monitor
einen Monitor mit Folgendem:
- Wählen Sie die Erkennungsmethode aus:
Threshold
. - Definieren Sie den Messwert:
gcp.gce.instance.is_running
von (überall)sum by
(alles) - Legen Sie Benachrichtigungsbedingungen fest:
- Auslösen, wenn der Messwert in den letzten
5 minutes
below
den Grenzwertat least once
erreicht hat - Benachrichtigungsgrenzwert:
< 2
- Team benachrichtigen:
@eventarc_<your-project-id>_<your-region>_<your-channel-name>
- Beispielname des Monitors:
Compute Engine instances < 2
Drücken Sie nun unten auf Create
, um den Monitor zu erstellen.
9. Überwachung und Trigger testen
Löschen Sie eine der VMs, um den Datadog-Monitor, den Eventarc-Trigger und schließlich den Workflow zu testen:
gcloud compute instances delete instance-2 --zone us-central1-a
Nach einigen Sekunden sollte die Instanz in der Google Cloud Console gelöscht werden.
Es gibt eine gewisse Latenz, bis diese Änderung in Datadog angezeigt wird. Nach einiger Zeit (in der Regel 10 Minuten) sollte der Monitor in Datadog angezeigt werden, um diesen Fehler zu erkennen und im Abschnitt Manage Monitors
zu melden:
Sobald die Datadog-Überwachungsbenachrichtigungen abgeschlossen sind, sollten Sie sehen, dass diese Benachrichtigung über Eventarc an Workflows weitergeleitet wird. Wenn Sie die Logs von Workflows prüfen, sollten Sie sehen, dass Workflows den Unterschied zwischen der aktuellen und der erwarteten Anzahl von Instanzen ermitteln:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
Als Reaktion auf diese Benachrichtigung erstellt er eine neue VM-Instanz mit dem Präfix datadog-instance-##
.
Am Ende haben Sie noch zwei VMs in Ihrem Projekt: eine, die Sie ursprünglich erstellt haben, und die andere, die nach der Datadog-Benachrichtigung von Workflows erstellt wurde.
10. Glückwunsch
Glückwunsch, du hast das Codelab abgeschlossen.
Behandelte Themen
- So aktivieren Sie die Google Cloud-Integration von Datadog.
- Hier erfahren Sie, wie Sie einen Workflow zum Prüfen und Erstellen von Compute Engine-VMs erstellen.
- Anleitung zum Verbinden von Datadog-Monitoring-Benachrichtigungen mit Workflows mit Eventarc.
- Datadog-Monitoring und -Benachrichtigung zu VM-Löschungen erstellen