1. Wprowadzenie

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.
W 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
- 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ć.



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

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:

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:

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:

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

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

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

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:

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:
- Wybierz metodę wykrywania:
Threshold. - Zdefiniuj warunek:
gcp.gce.instance.is_runningz (wszędzie)sum by(wszystko) - Ustaw warunki alertu:
- Uruchamiaj, gdy wartość danych jest
belowod proguat least oncew ciągu ostatnich5 minutes - Próg alertów:
< 2 - Powiadom swój zespół:
@eventarc_<your-project-id>_<your-region>_<your-channel-name> - 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:

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.

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.