Kieruj alerty monitorowania Datadog do Google Cloud przy użyciu Eventarc (część 2)

1. Wprowadzenie

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png 1c05e3d0c2bd2b45.png

Eventarc ułatwia łączenie usług Google Cloud ze zdarzeniami z różnych źródeł. Umożliwia tworzenie architektur opartych na zdarzeniach, w których mikroserwisy są luźno sprzężone i rozproszone. Zajmuje się też pozyskiwaniem, przesyłaniem, zabezpieczaniem, autoryzacją i obsługą błędów związanych ze zdarzeniami, co zwiększa elastyczność programistów i odporność aplikacji.

Datadog to platforma do monitorowania i zabezpieczania aplikacji w chmurze. Łączy ona kompleksowe ślady, wskaźniki i logi, dzięki czemu możesz obserwować swoje aplikacje, infrastrukturę i usługi innych firm.

Workflows to w pełni zarządzana platforma do orkiestracji, która wykonuje usługi w określonej przez Ciebie kolejności, zwanej przepływem pracy. Te przepływy pracy mogą łączyć usługi hostowane w Cloud Run lub Cloud Functions, usługi Google Cloud, takie jak Cloud Vision AI i BigQuery, oraz dowolny interfejs API oparty na protokole HTTP.

pierwszych ćwiczeniach z programowania dowiedzieliśmy się, jak kierować alerty monitorowania Datadog do Google Cloud za pomocą Eventarc. W tych drugich ćwiczeniach dowiesz się, jak odpowiadać na alerty monitorowania Datadog za pomocą przepływów pracy. Utworzysz 2 maszyny wirtualne Compute Engine i będziesz je monitorować za pomocą monitora Datadog. Gdy jedna z maszyn wirtualnych zostanie usunięta, otrzymasz alert z Datadog do Workflows za pomocą Eventarc. W odpowiedzi na to usługa Workflows ponownie utworzy usuniętą maszynę wirtualną, aby przywrócić liczbę uruchomionych maszyn wirtualnych do 2.

Czego się nauczysz

  • Jak włączyć integrację Datadog z Google Cloud.
  • Jak utworzyć przepływ pracy, który sprawdza i tworzy maszyny wirtualne Compute Engine.
  • Jak połączyć alerty monitorowania Datadog z Workflows za pomocą Eventarc.
  • Jak utworzyć monitor Datadog i alert dotyczący usunięcia maszyny wirtualnej.

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Możesz go w dowolnym momencie zaktualizować.
  • Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i jest niezmienny (nie można go zmienić po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości modułów z kodem musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako PROJECT_ID). Jeśli Ci się nie podoba, wygeneruj inny losowy identyfikator lub spróbuj użyć własnego i sprawdź, czy jest dostępny. Po utworzeniu projektu jest on „zamrażany”.
  • Istnieje też trzecia wartość, czyli numer projektu, którego używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Aby wyłączyć zasoby i uniknąć naliczenia opłat po zakończeniu tego samouczka, postępuj zgodnie z instrukcjami „czyszczenia” na końcu ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchamianie Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

55efc1aaa7a4d3ad.png

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

7ffe5cbb04455448.png

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym module możesz wykonać w przeglądarce.

Konfigurowanie gcloud

W Cloud Shell ustaw identyfikator projektu i zapisz go jako zmienną PROJECT_ID.

Ustaw też zmienną REGION na us-central1. W tym regionie utworzysz później zasoby.

PROJECT_ID=[YOUR-PROJECT-ID]
REGION=us-central1
gcloud config set core/project $PROJECT_ID

Włącz interfejsy API

Włącz wszystkie niezbędne usługi:

gcloud services enable \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. Weryfikowanie kanału Datadog

Sprawdź, czy kanał Datadog utworzony w pierwszym samouczku jest aktywny. Aby pobrać szczegóły kanału, uruchom w Cloud Shell to polecenie:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels describe $CHANNEL_NAME --location $REGION

Dane wyjściowe powinny być podobne do tych:

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'

Stan kanału możesz też sprawdzić w konsoli Google Cloud:

8399d528ccbd4c20.png

Stan kanału powinien być ACTIVE. Jeśli nie, wróć do pierwszego codelabu i wykonaj instrukcje tworzenia i aktywowania kanału za pomocą Datadog.

4. Włączanie integracji Datadog z Google Cloud

Aby używać Datadog do monitorowania projektu, musisz włączyć interfejsy API potrzebne Datadog, utworzyć konto usługi i połączyć je z Datadog.

Włączanie interfejsów API dla Datadog

gcloud services enable compute.googleapis.com \
  cloudasset.googleapis.com \
  monitoring.googleapis.com

utworzyć konto usługi,

Integracja Datadog z Google Cloud używa konta usługi do wywoływania interfejsu Cloud Logging API w celu zbierania wskaźników na poziomie węzła z instancji Compute Engine.

Utwórz konto usługi dla Datadog:

DATADOG_SA_NAME=datadog-service-account

gcloud iam service-accounts create $DATADOG_SA_NAME \
    --display-name "Datadog Service Account"

Aby umożliwić kontu usługi Datadog zbieranie danych, tagów, zdarzeń i etykiet użytkowników, przyznaj mu te role uprawnień:

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

Utwórz i pobierz klucz konta usługi. Plik klucza jest potrzebny do ukończenia integracji z Datadog.

Utwórz plik klucza konta usługi w katalogu domowym Cloud Shell:

gcloud iam service-accounts keys create ~/key.json \
  --iam-account $DATADOG_SA_EMAIL

W Cloud Shell kliknij More ⁝, a następnie wybierz Download File. W polu File path wpisz key.json. Aby pobrać plik klucza, kliknij Download.

Połącz konto usługi z Datadog

Na koncie Datadog otwórz sekcję Integrations i wyszukaj kartę integracji Google Cloud:

cf1ffa6547fba3e4.png

Najedź kursorem na Google Cloud Platform, aby przejść na stronę Install:

31b365a31bc50cc8.png

Zainstaluj integrację, przesyłając klucz konta usługi w sekcji Upload Private Key File, a następnie klikając Install Integration:

92e475e4da7f826.png

Po zakończeniu integracji Datadog automatycznie utworzy kilka paneli związanych z Google Cloud w sekcji Dashboards:

66fdf2d26e4710d.png

5. Tworzenie maszyn wirtualnych Compute Engine

Następnie utwórz kilka maszyn wirtualnych Compute Engine. Będziesz monitorować te maszyny wirtualne za pomocą monitora Datadog i reagować na alerty Datadog za pomocą przepływu pracy w Google Cloud.

Utwórz 2 maszyny wirtualne Compute Engine:

gcloud compute instances create instance-1 instance-2 --zone us-central1-a

Po minucie lub dwóch w konsoli Google Cloud powinny pojawić się utworzone i działające maszyny wirtualne. Po pewnym czasie (zwykle 10 minut) te maszyny wirtualne powinny być widoczne w Datadog w Google Compute Engine panelu Dashboards:

78a51374c1d0c11e.png

6. Tworzenie przepływu pracy

Teraz, gdy masz już 2 uruchomione maszyny wirtualne, utwórz przepływ pracy, który będzie reagować na alerty z monitora Datadog. Przepływ pracy może być dowolnie złożony, ale w tym przypadku będzie sprawdzać liczbę działających instancji maszyn wirtualnych. Jeśli spadnie ona poniżej 2, utworzy nowe instancje, aby zapewnić, że zawsze działają 2 maszyny wirtualne.

Utwórz plik workflow-datadog2.yaml o tej zawartości:

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}

Zwróć uwagę, że przepływ pracy otrzymuje zdarzenie jako parametr. To zdarzenie będzie pochodzić z monitorowania Datadog za pomocą Eventarc. Po otrzymaniu zdarzenia przepływ pracy sprawdza liczbę uruchomionych instancji i w razie potrzeby tworzy nowe instancje maszyn wirtualnych.

Wdróż przepływ pracy:

WORKFLOW_NAME=workflow-datadog2
gcloud workflows deploy $WORKFLOW_NAME \
  --source workflow-datadog2.yaml \
  --location $REGION

Przepływ pracy jest wdrożony, ale jeszcze nie działa. Zostanie ona wykonana przez aktywator Eventarc po otrzymaniu alertu Datadog.

7. Tworzenie aktywatora Eventarc

Możesz teraz połączyć zdarzenia od dostawcy Datadog z Workflows za pomocą aktywatora Eventarc. Użyjesz kanału i konta usługi skonfigurowanych w pierwszym samouczku.

Utwórz aktywator z kanałem Datadog, typem zdarzenia i miejscem docelowym przepływu pracy:

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

Możesz wyświetlić listę aktywatorów, aby sprawdzić, czy nowo utworzony aktywator jest aktywny:

gcloud eventarc triggers list --location $REGION

NAME: datadog-trigger2
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog2
ACTIVE: Yes

8. Tworzenie monitora Datadog

Teraz utworzysz monitor Datadog i połączysz go z Eventarc.

Monitor sprawdzi liczbę uruchomionych maszyn wirtualnych Compute Engine i wyśle alert, jeśli spadnie ona poniżej 2.

Aby utworzyć monitor w Datadog, zaloguj się w Datadog. W menu głównym najedź kursorem na Monitors i w menu podrzędnym kliknij New Monitor. Istnieje wiele rodzajów monitorów. Wybierz Metrictyp monitora.

Na stronie New Monitor utwórz monitor z tymi ustawieniami:

  1. Wybierz metodę wykrywania: Threshold.
  2. Zdefiniuj warunek: gcp.gce.instance.is_running z (wszędzie) sum by (wszystko)
  3. Ustaw warunki alertu:
  4. Uruchamiaj, gdy wartość danych jest below od progu at least once w ciągu ostatnich 5 minutes
  5. Próg alertów: < 2
  6. Powiadom swój zespół: @eventarc_<your-project-id>_<your-region>_<your-channel-name>
  7. Przykładowa nazwa monitora: Compute Engine instances < 2

Następnie kliknij Create u dołu, aby utworzyć monitor.

9. Testowanie monitora i wyzwalacza

Aby przetestować monitor Datadog, aktywator Eventarc i ostatecznie przepływ pracy, usuniesz jedną z maszyn wirtualnych:

gcloud compute instances delete instance-2 --zone us-central1-a

Po kilku sekundach w konsoli Google Cloud powinna pojawić się informacja o usunięciu instancji.

Zanim ta zmiana pojawi się w Datadogu, może minąć trochę czasu. Po pewnym czasie (zwykle 10 minut) w Datadogu powinien pojawić się monitor, który będzie wykrywać ten problem i wysyłać alerty w sekcji Manage Monitors:

50f93d560b6c1973.png

Gdy monitor Datadog wyśle alert, powinien on trafić do przepływów pracy za pomocą Eventarc. Jeśli sprawdzisz logi przepływów pracy, zobaczysz, że przepływy pracy sprawdzają różnicę między bieżącą a oczekiwaną liczbą instancji:

2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1

W odpowiedzi na ten alert tworzy nową instancję maszyny wirtualnej z prefiksem datadog-instance-##.

W projekcie będziesz mieć 2 maszyny wirtualne: jedną utworzoną na początku i drugą utworzoną przez Workflows po otrzymaniu alertu z Datadog.

11e42028e7142690.png

10. Gratulacje

Gratulacje! Codelab został ukończony.

Omówione zagadnienia

  • Jak włączyć integrację Datadog z Google Cloud.
  • Jak utworzyć przepływ pracy, który sprawdza i tworzy maszyny wirtualne Compute Engine.
  • Jak połączyć alerty monitorowania Datadog z Workflows za pomocą Eventarc.
  • Jak utworzyć monitor Datadog i alert dotyczący usunięcia maszyny wirtualnej.