Datadog-Monitoringbenachrichtigungen mit Eventarc an Google Cloud weiterleiten (Teil 1)

1. Einführung

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

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.

In diesem ersten Codelab erfahren Sie, wie Sie mit Eventarc eine einfache Datadog-Monitoring-Benachrichtigung an Google Cloud weiterleiten.

Lerninhalte

  • So ermitteln Sie den Datadog-Anbieter.
  • Hier erfahren Sie, wie Sie einen Kanal für den Datadog-Anbieter einrichten.
  • Hier erfahren Sie, wie Sie einen Workflow zum Protokollieren von Ereignissen erstellen.
  • So erstellen Sie einen Eventarc-Trigger mit dem Kanal.
  • So erstellen Sie einen Datadog-Monitor.
  • So testen Sie den Datadog-Monitor, den Eventarc-Trigger und den Workflow.

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. 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.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
  • 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 üblicherweise als PROJECT_ID gekennzeichnet ist. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID erstellen. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen.
  • Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. 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 herunterfahren möchten, um über diese Anleitung hinaus keine Kosten zu verursachen, können Sie die von Ihnen erstellten Ressourcen oder das gesamte Projekt löschen. 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:

55efc1aaa7a4d3ad.png

Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:

7ffe5cbb04455448.png

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. Alle Arbeiten in diesem Codelab können in einem Browser erledigt werden. Sie müssen nichts installieren.

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 \
  eventarc.googleapis.com \
  eventarcpublishing.googleapis.com \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. Datadog-Anbieter kennenlernen

Ein Eventarc-Anbieter ist ein Dienst oder eine Entität, die Ereignisse direkt an Google Cloud senden und dann an Ihr Projekt weiterleiten kann. Drittanbieter wie Datadog sind Nicht-Google Cloud-Anbieter, die über Eventarc in Google Cloud eingebunden sind.

Führen Sie in Cloud Shell den folgenden Befehl aus, um die Liste von Google Cloud und Drittanbietern aufzurufen:

gcloud eventarc providers list

Hier sind Google Cloud und Drittanbieter sowie die Standorte aufgeführt, an denen sie verfügbar sind:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

Mit dem folgenden Befehl können Sie die Liste auf Drittanbieter beschränken:

gcloud eventarc providers list --filter='eventTypes.type!~^google*'

Datadog sollte in der Liste angezeigt werden:

NAME: datadog
LOCATION: us-central1

Sie können den Datadog-Anbieter auch beschreiben, um die unterstützten Ereignisse zu sehen:

gcloud eventarc providers describe datadog --location $REGION

displayName: Datadog
eventTypes:
- type: datadog.v1.alert
name: projects/project-id/locations/us-central1/providers/datadog

4. Kanal einrichten

Sie müssen einen Kanal einrichten, um Ihr Projekt in einen Anbieter einzubinden. Dazu gehört das Erstellen eines Kanals, das Abrufen von Kanaldetails und das Senden dieser Details an den Anbieter. Sobald der Anbieter die Verbindung mit dem Kanal initialisiert hat, kann er Ereignisse an Ihr Projekt senden.

Kanal erstellen

Sie können mit gcloud einen Kanal für den Datadog-Anbieter erstellen:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels create $CHANNEL_NAME \
   --provider datadog \
   --location $REGION

Sie können ihn auch in der Google Cloud Console auf der Eventarc-Seite im Bereich „Channels“ erstellen:

d03a7173b25e5ea6.png

Kanaldetails abrufen

Nachdem der Kanal erstellt wurde, rufen Sie die Details des Kanals von gcloud ab:

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: PENDING
uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e
updateTime: '2022-03-09T09:53:48.290217299Z'

Analog können Sie den Kanal in der Google Cloud Console sehen:

80d8b2b6a46cb4c5.png

Der Kanalstatus gibt den Status des Kanals an. Mögliche Werte:

  • PENDING: Der Kanal wurde erstellt und es ist ein Aktivierungstoken verfügbar, um eine Verbindung mit dem Anbieter herzustellen. Um den Status des Kanals von PENDING in ACTIVE zu ändern, muss das Token an den Anbieter weitergegeben werden und zur Verbindung des Kanals innerhalb von 24 Stunden nach der Erstellung des Kanals verwendet werden.
  • ACTIVE: Der Kanal wurde mit dem Anbieter verbunden. Ein ACTIVE-Kanal ist bereit, Ereignisse vom Anbieter zu empfangen und weiterzuleiten.
  • INACTIVE: Der Kanal kann weder Ereignisse empfangen noch reaktiviert werden. Der Anbieter ist entweder von diesem Kanal getrennt oder das Kanalaktivierungstoken ist abgelaufen und der Anbieter ist nicht verbunden. Um eine Verbindung zu einem Anbieter wiederherzustellen, müssen Sie einen neuen Kanal für den Anbieter erstellen.

Ein Aktivierungstoken ist ein einmaliges, zeitlich begrenztes Token, mit dem eine Verbindung zwischen einem Anbieter und dem Projekt eines Abonnenten hergestellt wird. Das Token kann nur von einem bestimmten Anbieter verwendet werden, der bei der Kanalerstellung ausgewählt wurde. Das Token ist nach der Erstellung des Kanals 24 Stunden lang gültig. Nach 24 Stunden wird der Kanal zu INACTIVE.

Kanaldetails an den Anbieter senden

Sie müssen die folgenden Kanaldetails an den Datadog-Anbieter senden:

  • Kanalname (z. B. projects/project-id/locations/us-central1/channels/datadog-channel)
  • Aktivierungstoken (z. B. so5g4Kdasda7y2MSasdaGn8njB2)

Melden Sie sich in Datadog an, rufen Sie die Seite „Integrationen“ auf und prüfen Sie, ob die Google Eventarc-Integration installiert ist:

9736bd517e1fa19a.png

Geben Sie im Konfigurationsabschnitt von Google Eventarc den vollständigen Kanalnamen und das Aktivierungstoken ein:

a17f522075cdd92e.png

Der Kanal sollte jetzt in der Liste der Kanäle zu sehen sein und nach einigen Sekunden auch in der Google Cloud Console aktiv sein:

8399d528ccbd4c20.png

Jetzt kannst du den Kanal verwenden.

5. Workflow erstellen

Sie benötigen ein Ziel in Google Cloud, um Ereignisse vom Anbieter zu empfangen. Eventarc unterstützt eine Reihe von Ereigniszielen wie Cloud Run, Workflows und Kubernetes-Dienste. Stellen Sie in diesem Fall einen Workflow bereit, um die empfangenen Ereignisse einfach zu protokollieren.

Erstellen Sie eine workflow-datadog1.yaml-Datei mit folgendem Inhalt:

main:
  params: [event]
  steps:
  - logStep:
      call: sys.log
      args:
        data: ${event}

Der Workflow empfängt ein Ereignis als Parameter. Dieses Ereignis stammt aus dem Datadog-Monitoring über Eventarc. Nach dem Empfang des Ereignisses wird es im Workflow einfach protokolliert.

Stellen Sie den Workflow bereit:

WORKFLOW_NAME=workflow-datadog1
gcloud workflows deploy $WORKFLOW_NAME \
  --source workflow-datadog1.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.

6. Eventarc-Trigger erstellen

Sie können jetzt Ereignisse vom Datadog-Anbieter über einen Eventarc-Trigger mit Workflows verbinden.

Dienstkonto konfigurieren

Zum Erstellen eines Triggers benötigen Sie ein Dienstkonto mit der Rolle eventarc.eventReceiver. Sie können entweder ein dediziertes Dienstkonto erstellen oder das Compute-Standarddienstkonto verwenden.

Verwenden Sie der Einfachheit halber das Compute-Standarddienstkonto und gewähren Sie die Rolle eventarc.eventReceiver:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
    --role roles/eventarc.eventReceiver

Trigger erstellen

Erstellen Sie einen Trigger mit dem Datadog-Kanal, dem Ereignistyp und einem Workflowziel:

gcloud eventarc triggers create datadog-trigger1 \
  --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-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

7. Datadog-Monitor erstellen

Sie erstellen nun einen Datadog-Monitor und verbinden ihn mit Eventarc.

Es ist ein Monitor vom Typ „Hello World“ mit Standardwerten. Sie lösen es manuell aus, um die Monitoring-Benachrichtigungen zu generieren, die wiederum ein Eventarc-Ereignis in Google Cloud generieren.

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.

Übernehmen Sie auf der Seite New Monitor die Standardwerte für die Schritte 1 und 2.

  • Legen Sie in Schritt 3 Alert threshold auf „1“ fest.
  • Legen Sie in Schritt 4 Test monitor for Eventarc als Monitornamen und Notify your team auf @eventarc_<your-project-id>_<your-region>_<your-channel-name> fest.

Lassen Sie die Monitorseite für den nächsten Schritt geöffnet, in dem Sie den Monitor testen können.

8. Überwachung und Trigger testen

Zum Testen des Datadog-Monitors und des Eventarc-Triggers lösen Sie den Monitor manuell aus.

Klicken Sie unten auf der Seite zur Monitorerstellung auf die Schaltfläche Test Notifications:

32ccf1cc47b01150.png

Klicken Sie dann auf die Schaltfläche Run Test:

7f2ff70ec673007b.png

Dadurch sollte der Statusübergang im Monitor simuliert und ein Eventarc-Ereignis ausgelöst werden.

Prüfen Sie den Workflow „workflow-datadog1“. Es sollte eine neue Ausführung angezeigt werden:

adf7cd97ca2e8da7.png

Überprüfen Sie die Details der Ausführung. Sie sollten den aus der Monitoring-Benachrichtigung generierten Datadog-Ereignistyp datadog.v1.alert in der Eingabe des Workflows und auch in den Logs sehen:

dc78fd8460e5fc0e.png

9. Glückwunsch

Glückwunsch, du hast das Codelab abgeschlossen. Im zweiten Codelab erfahren Sie, wie Sie mit Workflows auf Datadog-Monitoring-Benachrichtigungen reagieren.

Behandelte Themen

  • So ermitteln Sie den Datadog-Anbieter.
  • Hier erfahren Sie, wie Sie einen Kanal für den Datadog-Anbieter einrichten.
  • Hier erfahren Sie, wie Sie einen Workflow zum Protokollieren von Ereignissen erstellen.
  • So erstellen Sie einen Eventarc-Trigger mit dem Kanal.
  • So erstellen Sie einen Datadog-Monitor.
  • So testen Sie den Datadog-Monitor, den Eventarc-Trigger und den Workflow.