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

1. Einführung

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

Mit Eventarc lassen sich Google Cloud-Dienste ganz einfach mit Ereignissen aus verschiedenen Quellen verbinden. Damit können Sie ereignisgesteuerte Architekturen erstellen, in denen Mikrodienste lose gekoppelt und verteilt sind. Außerdem werden die Aufnahme, Bereitstellung, Sicherheit, Autorisierung und Fehlerbehandlung von Ereignissen für Sie übernommen, was die Agilität von Entwicklern 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 Drittanbieterdienste beobachtbar zu machen.

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

Lerninhalte

  • So finden Sie den Datadog-Anbieter.
  • So richten Sie einen Kanal für den Datadog-Anbieter ein.
  • So erstellen Sie einen Workflow zum Protokollieren von Ereignissen.
  • Eventarc-Trigger mit dem Channel erstellen
  • So erstellen Sie einen Datadog-Monitor.
  • So testen Sie den Datadog-Monitor, den Eventarc-Trigger und den Workflow.

2. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten 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 Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können ihn jederzeit aktualisieren.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich (kann nach der Festlegung nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen (sie wird in der Regel als PROJECT_ID angegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen versuchen und sehen, ob es verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen.
  • Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit Ihnen nach Abschluss dieser Anleitung keine Kosten mehr in Rechnung gestellt werden, können Sie die von Ihnen erstellten Ressourcen oder das gesamte Projekt löschen. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen mit einem Guthaben von 300$ infrage.

Cloud Shell starten

Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, 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 sollte nur wenige Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

7ffe5cbb04455448.png

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt 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 eine REGION-Variable auf us-central1 fest. In dieser Region erstellen Sie später Ressourcen.

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

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

Führen Sie in Cloud Shell den folgenden Befehl aus, um die Liste der Google Cloud- und Drittanbieter aufzurufen:

gcloud eventarc providers list

Hier finden Sie eine Liste der Google Cloud- und Drittanbieter sowie der Standorte, 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 diesem Befehl können Sie die Liste auf Drittanbieter eingrenzen:

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

Datadog sollte in der Liste angezeigt werden:

NAME: datadog
LOCATION: us-central1

Sie können auch den Datadog-Anbieter beschreiben, um die von ihm 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 zu integrieren. Dazu gehört, einen Kanal zu erstellen, Kanaldetails abzurufen und diese Details an den Anbieter zu senden. Sobald der Anbieter die Verbindung zum Channel initialisiert hat, kann er Ereignisse an Ihr Projekt senden.

Channel erstellen

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

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

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

d03a7173b25e5ea6.png

Kanaldetails abrufen

Nachdem der Kanal erstellt wurde, rufen Sie die Details des Kanals aus 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'

Sie können den Channel auch in der Google Cloud Console aufrufen:

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. Damit der Status des Kanals von PENDING zu ACTIVE geändert werden kann, muss das Token dem Anbieter zur Verfügung gestellt und innerhalb von 24 Stunden nach der Erstellung des Kanals verwendet werden, um den Kanal zu verbinden.
  • ACTIVE: Der Kanal wurde mit dem Anbieter verknüpft. Ein ACTIVE-Kanal ist bereit, Ereignisse vom Anbieter zu empfangen und weiterzuleiten.
  • INACTIVE: Der Kanal kann keine Ereignisse empfangen und nicht reaktiviert werden. Der Anbieter ist entweder nicht mit diesem Kanal verbunden oder das Kanalaktivierungstoken ist abgelaufen und der Anbieter ist nicht verbunden. Wenn Sie die Verbindung zu einem Anbieter wiederherstellen möchten, müssen Sie einen neuen Kanal für den Anbieter erstellen.

Ein Aktivierungstoken ist ein einmalig verwendbares, zeitlich begrenztes Token, das zum Herstellen einer Verbindung zwischen einem Anbieter und dem Projekt eines Abonnenten verwendet wird. Das Token kann nur von einem bestimmten Anbieter verwendet werden, der bei der Kanaleinrichtung ausgewählt wurde. Das Token ist 24 Stunden nach der Erstellung des Kanals gültig. Nach 24 Stunden wird der Kanal INACTIVE.

Kanaldetails an den Anbieter senden

Sie müssen dem Datadog-Anbieter die folgenden Kanaldetails 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 „Integrations“ auf und prüfen Sie, ob die Google Eventarc-Integration installiert ist:

9736bd517e1fa19a.png

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

a17f522075cdd92e.png

Der Kanal sollte jetzt in der Liste der Kanäle angezeigt werden. Nach einigen Sekunden sollte er auch in der Google Cloud Console aktiv sein:

8399d528ccbd4c20.png

Jetzt können Sie den Channel 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}

Beachten Sie, dass der Workflow ein Ereignis als Parameter empfängt. Dieses Ereignis stammt von der Datadog-Überwachung über Eventarc. Sobald das Ereignis empfangen wurde, wird es im Workflow 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-Warnung empfangen wird.

6. Eventarc-Trigger erstellen

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

Dienstkonto konfigurieren

Sie benötigen ein Dienstkonto mit der Rolle eventarc.eventReceiver, wenn Sie einen Trigger erstellen. Sie können entweder ein spezielles Dienstkonto erstellen oder das Standarddienstkonto von Compute verwenden.

Verwenden Sie zur Vereinfachung das Compute-Standarddienstkonto und weisen Sie die Rolle eventarc.eventReceiver zu:

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-Channel, dem Ereignistyp und einem Workflow-Ziel:

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 die Trigger auflisten, 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 jetzt einen Datadog-Monitor und verbinden ihn mit Eventarc.

Es handelt sich um einen Monitor vom Typ „Hallo Welt“ mit Standardwerten. Sie lösen sie manuell aus, um die Monitoringbenachrichtigungen zu generieren, die wiederum ein Eventarc-Ereignis in Google Cloud generieren.

Melden Sie sich in Datadog an, um einen Monitor 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 Standardeinstellungen für die Schritte 1 und 2.

  • Legen Sie in Schritt 3 den Wert 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.

8. Monitor und Trigger testen

Um den Datadog-Monitor und den Eventarc-Trigger zu testen, lösen Sie den Monitor manuell aus.

Klicken Sie unten auf der Seite zum Erstellen von Monitoren 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-datadog1-Workflow. Sie sollten sehen, dass eine neue Ausführung vorhanden ist:

adf7cd97ca2e8da7.png

Prüfen Sie die Details der Ausführung. Der Datadog-Ereignistyp datadog.v1.alert, der aus der Monitoring-Benachrichtigung generiert wurde, sollte in der Eingabe des Workflows und in den Logs angezeigt werden:

dc78fd8460e5fc0e.png

9. Glückwunsch

Herzlichen Glückwunsch! Sie haben das Codelab abgeschlossen. Im zweiten Codelab erfahren Sie, wie Sie mit Workflows auf Datadog-Überwachungswarnungen reagieren.

Behandelte Themen

  • So finden Sie den Datadog-Anbieter.
  • So richten Sie einen Kanal für den Datadog-Anbieter ein.
  • So erstellen Sie einen Workflow zum Protokollieren von Ereignissen.
  • Eventarc-Trigger mit dem Channel erstellen
  • So erstellen Sie einen Datadog-Monitor.
  • So testen Sie den Datadog-Monitor, den Eventarc-Trigger und den Workflow.