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, dostarczaniem, bezpieczeństwem, autoryzacją i obsługą błędów, co zwiększa elastyczność programistów oraz odporność aplikacji.
Datadog to platforma do monitorowania i zabezpieczania aplikacji internetowych. Łączy kompleksowe logi czasu, wskaźniki i logi, aby umożliwiać obserwację aplikacji, infrastruktury i usług innych firm.
Przepływy pracy to w pełni zarządzana platforma do administrowania, która wykonuje usługi w określonej przez Ciebie kolejności, czyli tzw. 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 HTTP.
Podczas pierwszego ćwiczenia w Codelabs omówiliśmy, jak kierować alerty monitorowania Datadog do Google Cloud przy użyciu Eventarc. Z tego drugiego ćwiczenia w Codelabs dowiesz się, jak odpowiadać na alerty monitorowania Datadog za pomocą Workflows. Dokładniej rzecz biorąc, utworzysz 2 maszyny wirtualne Compute Engine i będziesz monitorować je za pomocą monitora Datadog. Gdy 1 maszyna wirtualna zostanie usunięta, otrzymasz alert z Datadog do Workflows przez Eventarc. Z kolei Workflows odtworzy usuniętą maszynę wirtualną, by liczba uruchomionych maszyn wirtualnych wróciła do 2.
Czego się nauczysz
- Jak włączyć integrację z usługą Datadog z Google Cloud.
- Jak utworzyć przepływ pracy do sprawdzania i tworzenia maszyn wirtualnych Compute Engine.
- Łączenie alertów monitorowania Datadog z Workflows za pomocą Eventarc.
- Jak utworzyć monitor Datadog i wysłać alerty o usuwaniu maszyn wirtualnych.
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google i w każdej chwili możesz go zaktualizować.
- Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i nie można go zmienić (nie można go zmienić po ustawieniu). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz odwoływać się do identyfikatora projektu (który zwykle nazywa się
PROJECT_ID
), więc jeśli Ci się nie podoba, wygeneruj kolejny losowy kod lub wypróbuj swój własny i sprawdź, czy jest dostępny. Potem urządzenie jest „zawieszone”. po utworzeniu projektu. - Występuje trzecia wartość – numer projektu – używany przez niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby móc korzystać z zasobów i interfejsów API Cloud. Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Aby wyłączyć zasoby, aby nie naliczać opłat po zakończeniu tego samouczka, wykonaj czynności „wyczyść” znajdziesz na końcu tego ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
Uruchamianie Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w Cloud.
W konsoli Google Cloud kliknij ikonę Cloud Shell na górnym pasku narzędzi:
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:
Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. 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
. To region, w którym utworzysz zasoby później.
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
Upewnij się, że kanał Datadog utworzony w ramach pierwszego ćwiczenia w Codelabs 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:
Stanem kanału powinien być ACTIVE
. Jeśli nie, wróć do pierwszego ćwiczenia w Codelabs i postępuj zgodnie z instrukcjami, aby utworzyć i aktywować kanał w Datadog.
4. Włącz integrację Datadog z Google Cloud
Aby używać Datadog do monitorowania projektu, musisz włączyć interfejsy API potrzebne dla 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 Google Cloud z Datadog wykorzystuje konto usługi do wywoływania 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"
Włącz konto usługi Datadog, aby zbierać wskaźniki, tagi, zdarzenia i etykiety użytkowników, przyznając 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
utworzyć i pobrać klucz konta usługi, Plik klucza jest potrzebny, aby zakończyć integrację z Datadog.
Utwórz plik klucza konta usługi w katalogu głównym 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
.
Łączenie konta usługi z Datadog
Na koncie Datadog przejdź do sekcji Integrations
i wyszukaj kafelek integracji z usługą Google Cloud
:
Najedź kursorem na Google Cloud Platform
, by otworzyć 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 wiele paneli związanych z Google Cloud w usłudze Dashboards
:
5. Tworzenie maszyn wirtualnych Compute Engine
Następnie utwórz maszyny wirtualne 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
Za około minutę w konsoli Cloud powinny pojawić się maszyny wirtualne utworzone i uruchomione. Po pewnym czasie (zwykle po 10 minutach) w Datadog powinny być także widoczne te maszyny wirtualne w panelu Google Compute Engine
w sekcji Dashboards
:
6. Tworzenie przepływu pracy
Teraz gdy masz już uruchomione 2 maszyny wirtualne, utwórz przepływ pracy, który będzie odpowiadać na alerty z monitora Datadog. Przepływ pracy może być bardzo zaawansowany, ale w tym przypadku sprawdza liczbę uruchomionych instancji maszyn wirtualnych, a jeśli spadnie poniżej 2, utworzy nowe instancje maszyn wirtualnych, aby upewnić się, że w każdym momencie są uruchomione 2 maszyny wirtualne.
Utwórz plik workflow-datadog2.yaml
z tą 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}
Pamiętaj, że przepływ pracy odbiera zdarzenie jako parametr. To zdarzenie będzie pochodzić z monitorowania Datadog przez Eventarc. Po otrzymaniu zdarzenia przepływ pracy sprawdza liczbę uruchomionych instancji i w razie potrzeby tworzy nowe maszyny wirtualne.
Wdróż przepływ pracy:
WORKFLOW_NAME=workflow-datadog2 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog2.yaml \ --location $REGION
Przepływ pracy został wdrożony, ale jeszcze nie jest uruchomiony. Zostanie on wykonany przez aktywator Eventarc po otrzymaniu alertu Datadog.
7. Tworzenie aktywatora Eventarc
Teraz możesz łączyć zdarzenia od dostawcy Datadog z Workflows za pomocą aktywatora Eventarc. Użyjesz kanału i konta usługi skonfigurowanego w pierwszym ćwiczeniu z programowania.
Utwórz regułę 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świetli alert, jeśli spadnie poniżej 2.
Aby utworzyć monitor w Datadog, zaloguj się w Datadog. Najedź wskaźnikiem myszy na Monitors
w menu głównym i kliknij New Monitor
w menu podrzędnym. Istnieje wiele typów monitorów. Wybierz typ monitora: Metric
.
Na stronie New Monitor
utwórz monitor z tymi elementami:
- Wybierz metodę wykrywania:
Threshold
. - Określ dane:
gcp.gce.instance.is_running
z (wszędzie)sum by
(wszystko) - Ustaw warunki tworzenia alertów:
- Wywołuj, gdy dane będą
below
przekraczać prógat least once
w 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
Naciśnij Create
na dole, aby utworzyć monitor.
9. Monitor testów i aktywator
Aby przetestować monitor Datadog, aktywator Eventarc, a na koniec przepływ pracy, usuniesz jedną z maszyn wirtualnych:
gcloud compute instances delete instance-2 --zone us-central1-a
Po kilku sekundach instancja powinna być usunięta w konsoli Google Cloud.
Zanim ta zmiana pojawi się w Datadog, może minąć trochę czasu. Po pewnym czasie (zwykle po 10 minutach) powinien pojawić się monitor w Datadog, aby wykryć ten błąd i przesłać alert w sekcji Manage Monitors
:
Gdy alerty monitorowania Datadog zostaną wyświetlone, ten alert powinien zostać przeniesiony do Workflows via Eventarc. Jeśli sprawdzasz logi Workflows, powinna się pojawić informacja, że Workflows sprawdza różnicę między bieżącą i oczekiwaną liczbą instancji:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
Reaguje na ten alert, tworząc nową instancję maszyny wirtualnej z prefiksem datadog-instance-##
.
Ostatecznie nadal będziesz mieć w projekcie 2 maszyny wirtualne – jedną utworzoną na początku i drugą utworzoną przez Workflows po otrzymaniu alertu Datadog.
10. Gratulacje
Gratulacje. Udało Ci się ukończyć ćwiczenia z programowania.
Omówione zagadnienia
- Jak włączyć integrację z usługą Datadog z Google Cloud.
- Jak utworzyć przepływ pracy do sprawdzania i tworzenia maszyn wirtualnych Compute Engine.
- Łączenie alertów monitorowania Datadog z Workflows za pomocą Eventarc.
- Jak utworzyć monitor Datadog i wysłać alerty o usuwaniu maszyn wirtualnych.