Alerty: kontrole dostępności tematów Pub/Sub

Alerty:
kontrole dostępności tematów Pub/Sub

Informacje o tym ćwiczeniu (w Codelabs)

subjectOstatnia aktualizacja: lip 7, 2023
account_circleAutorzy: Aron Eidelman

1. Wprowadzenie

Ostatnia aktualizacja: 21 czerwca 2023 r.

Alerty o kontroli dostępności

Alerty o kontroli dostępności pozwalają szybko identyfikować i rozwiązywać problemy, które mogą wpływać na działanie usług. Dzięki powiadomieniom o przerwach w działaniu usług możesz podejmować działania ograniczające wpływ tego problemu na użytkowników i klientów.

Kontrole dostępności odbywają się w odstępach, najkrótszych, które trwają 60 sekund. Jeśli potrzebujesz szczegółowości powyżej 60 sekund, warto monitorować kody błędów jako zdarzenia dynamiczne za pomocą alertów opartych na logach jako dodatkowego wskaźnika niedostępności. Jeśli interwał trwający co najmniej 60 sekund jest akceptowalny, kontrole dostępności stanowią łatwy sposób na pomiar usługi bez dodatkowej konfiguracji.

Jeśli usługa jest niedostępna, kontrola dostępności wykryje problem, nawet jeśli nie ma ruchu. Na natężenie ruchu mogą wpływać czynniki takie jak prace konserwacyjne, uaktualnienia, a nawet czynniki zewnętrzne w stosunku do systemu, takie jak zła pogoda czy wydarzenia sportowe, które rozpraszają użytkownika.

Więcej informacji o tym, kiedy należy korzystać z kontroli dostępności, znajdziesz w artykule Zapewnianie dostępności zasobów Google Cloud.

Tematy Pub/Sub jako kanał powiadomień o alertach

Temat Pub/Sub może być używany jako kanał powiadomień Google Cloud Monitoring do wysyłania alertów do subskrypcji Pub/Sub. Pozwala to zintegrować alerty Cloud Monitoring z innymi systemami, w tym z usługami powiadomień innych firm.

Aby użyć tematu Pub/Sub jako kanału powiadomień, musisz najpierw utworzyć temat Pub/Sub i subskrypcję Pub/Sub. Następnie musisz utworzyć kanał powiadomień Cloud Monitoring, w którym miejscem docelowym będzie temat Pub/Sub.

Po uruchomieniu alertu Cloud Monitoring wyśle wiadomość do tematu Pub/Sub. Subskrybent subskrypcji Pub/Sub może następnie przetworzyć wiadomość i podjąć odpowiednie działanie.

Co utworzysz

W ramach tego ćwiczenia w Codelabs wdrożysz aplikację, utworzysz temat Pub/Sub i utworzysz alert kontroli dostępności dla aplikacji, która używa tematu Pub/Sub jako kanału powiadomień.

Czego się nauczysz

  • Jak utworzyć temat Pub/Sub
  • Jak utworzyć kontrolę dostępności i alert

To ćwiczenia w Codelabs skupiają się na tworzeniu alertu na potrzeby kontroli dostępności. Nieistotne koncepcje i kod aplikacji zostały zamaskowane. Można je po prostu skopiować i wkleić.

Czego potrzebujesz

  • Konto Google Cloud z uprawnieniami do:
  • Wdrażanie aplikacji Cloud Run
  • Tworzenie tematów Pub/Sub
  • Utwórz kontrole dostępności
  • Tworzenie alertów

2. Przygotowanie

Wybierz lub utwórz projekt Google Cloud

Aby wybrać istniejący projekt, skorzystaj z menu:

b35bf95b8bf3d5d8.png

Aby utworzyć nowy projekt w Google Cloud, wykonaj te czynności:

  1. Otwórz konsolę Google Cloud Platform.
  2. Kliknij przycisk Utwórz projekt.
  3. Wpisz nazwę projektu.
  4. Wybierz konto rozliczeniowe dla projektu.
  5. Kliknij przycisk Utwórz.

Twój projekt zostanie utworzony i przejdziesz do panelu projektu. Następnie możesz zacząć korzystać z usług Google Cloud.

Oto dodatkowe informacje o każdym z tych kroków:

  • Nazwa: nazwa projektu musi być niepowtarzalna w obrębie organizacji.
  • Konto rozliczeniowe: możesz użyć istniejącego konta rozliczeniowego lub utworzyć nowe.
  • Tworzenie: po wpisaniu wszystkich wymaganych informacji kliknij przycisk Utwórz, aby utworzyć projekt.

Więcej informacji znajdziesz w dokumentacji Google Cloud dotyczącej tworzenia projektów.

3. Wdrażanie aplikacji API

Czego dotyczy przykładowa aplikacja lub interfejs API?

Nasza aplikacja to prosta aplikacja Inventory API, która udostępnia punkt końcowy interfejsu API REST z kilkoma operacjami w celu wyświetlania listy elementów asortymentu i pobierania określonej liczby zasobów.

Po wdrożeniu interfejsu API, zakładając, że jest on hostowany pod adresem https://<jakiśhost>, możemy uzyskać dostęp do jego punktów końcowych w następujący sposób:

https://<somehost>/inventory

Spowoduje to wyświetlenie listy wszystkich produktów, które mają dostępne poziomy asortymentu.

https://<somehost>/inventory/{productid}

Dzięki temu uzyskasz pojedynczy rekord z identyfikatorem produktu oraz dostępnym poziomem asortymentu dla tego produktu.

Zwracane dane odpowiedzi są w formacie JSON.

Uwaga: ta aplikacja interfejsu API służy wyłącznie do celów demonstracyjnych i nie przedstawia bezpiecznej ani niezawodnej implementacji interfejsu API. Chodzi o to, aby mieć do dyspozycji szybką aplikację do poznania głównego celu modułu, czyli Google Cloud Operations.

Przykładowe dane i żądanie/odpowiedź interfejsu API

Dla uproszczenia aplikacja nie korzysta z bazy danych w backendzie. Zawiera on 3 przykładowe identyfikatory produktów i ich dostępne poziomy asortymentu.

Identyfikator produktu

Poziom lokalnego asortymentu

I-1

10

I-2

20

I-3

30

Przykładowe żądanie i odpowiedź do interfejsu API znajdziesz poniżej:

Żądanie do interfejsu API

Odpowiedź interfejsu API

https://&lt;somehost&gt;/inventory

[ { &quot;I-1&quot;: 10, &quot;I-2&quot;: 20, &quot;I-3&quot;: 30 }]

https://&lt;somehost&gt;/inventory/I-1

{ &quot;productid&quot;: &quot;I-1&quot;, &quot;qty&quot;: 10}

https://&lt;somehost&gt;/inventory/I-2

{ &quot;productid&quot;: &quot;I-2&quot;, &quot;qty&quot;: 20}

https://&lt;somehost&gt;/inventory/I-200

{ &quot;productid&quot;: I-200, &quot;qty&quot;: -1}

Klonowanie repozytorium

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

W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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.

Skonfiguruj gcloud

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

PROJECT_ID=[YOUR-PROJECT-ID]

gcloud config set project $PROJECT_ID

Teraz uruchom to polecenie:

$ git clone https://github.com/rominirani/cloud-code-sample-repository.git

Spowoduje to utworzenie w nim folderu cloud-code-sample-repository.

(Opcjonalnie) Uruchamianie aplikacji w Cloud Shell

Aby uruchomić aplikację lokalnie, wykonaj te czynności:

  1. W terminalu przejdź do wersji interfejsu API w języku Python za pomocą tego polecenia:

$ cd cloud-code-sample-repository

$ cd python-flask-api

  1. W terminalu wpisz to polecenie (w chwili pisania do Cloud Shell zainstalowany jest Python 3.9.x i będziemy korzystać z wersji domyślnej. Jeśli chcesz uruchomić ją lokalnie na laptopie, możesz użyć Pythona 3.8 lub nowszego:

$ python app.py

  1. Aby lokalnie uruchomić serwer Pythona, możesz uruchomić poniższe polecenie.

1f798fbddfdc2c8e.png 46edf454cc70c5a6.png

Kliknij Podgląd na porcie 8080. 5. Otworzy się okno przeglądarki. Wyświetli się błąd 404, a to nie problem. Zmodyfikuj URL i zadbaj o to, aby po nazwie hosta pojawiał się tylko ciąg /inventory.

Na przykład: na moim komputerze wygląda to tak:

https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory

Pojawi się lista pozycji asortymentu, jak wyjaśniliśmy wcześniej:

709d57ee2f0137e4.png

  1. Aby zatrzymać serwer teraz, przejdź do terminala i naciśnij klawisze Ctrl+C.

Wdrażanie aplikacji

Teraz wdrożymy tę aplikację API w Cloud Run. W procesie wdrażania kodu w Cloud Run trzeba było skorzystać z klienta wiersza poleceń gcloud.

W terminalu wpisz to polecenie gcloud:

$ gcloud run deploy --source .

Zada Ci to kilka pytań. Poniżej znajdziesz niektóre z nich:

  1. Nazwa usługi (python-flask-api): użyj tej wartości domyślnej lub wybierz coś w rodzaju my-inventory-api
  2. Interfejs API [run.googleapis.com] nie został włączony w projekcie [613162942481]. Czy chcesz włączyć tę funkcję i spróbować ponownie (zajmie to kilka minut)? (y/N)? T
  3. Określ region: wybierz 31 (us-west-1)
  4. W projekcie [613162942481] nie włączono interfejsu API [artifactregister.googleapis.com]. Czy chcesz włączyć tę funkcję i spróbować ponownie (zajmie to kilka minut)? (y/N)? T
  5. Wdrożenie ze źródła wymaga repozytorium Dockera w Artifact Registry do przechowywania utworzonych kontenerów. Zostanie utworzone repozytorium o nazwie [cloud-run-source-deploy] w regionie [us-west1].
  6. Czy chcesz kontynuować (T/n)? T
  7. Zezwolić na nieuwierzytelnione wywołania [my-inventory-api] (y/N)? T

W końcu spowoduje to uruchomienie procesu pobierania kodu źródłowego, skonteneryzowania go, wypchnięcia do Artifact Registry, a następnie wdrożenia usługi i wersji Cloud Run. Prosimy o cierpliwość (może to potrwać 3–4 minuty). Proces powinien się zakończyć wraz z wyświetlanym adresem URL usługi.

Przykładowe uruchomienie:

87ba8dbf88e8cfa4.png

Testowanie aplikacji

Po wdrożeniu aplikacji w Cloud Run możesz uzyskać dostęp do aplikacji API w ten sposób:

  1. Zapisz adres URL usługi z poprzedniego kroku. Na przykład w mojej konfiguracji jest on wyświetlany jako https://my-inventory-api-bt2r5243dq-uw.a.run.app. Nazwijmy go <SERVICE_URL>.
  2. Otwórz przeglądarkę i otwórz te 3 adresy URL punktów końcowych interfejsu API:
  3. <SERVICE_URL>/inventory
  4. <SERVICE_URL>/inventory/I-1
  5. <SERVICE_URL>/inventory/I-100

Powinna ona być zgodna ze specyfikacją, którą przedstawiliśmy we wcześniejszej sekcji z przykładowymi żądaniami i odpowiedziami do interfejsu API.

Pobieranie szczegółów usługi z Cloud Run

Wdrożyliśmy naszą usługę API w Cloud Run – bezserwerowym środowisku obliczeniowym. Usługę Cloud Run możemy w każdej chwili otworzyć w konsoli Google Cloud.

W menu głównym otwórz Cloud Run. Spowoduje to wyświetlenie listy usług uruchomionych w Cloud Run. Powinna być widoczna wdrożona przed chwilą usługa. W zależności od wybranej nazwy powinna wyświetlić się nazwa podobna do tej:

2633965c4bc957cc.png

Kliknij nazwę usługi, aby wyświetlić szczegóły. Szczegóły przykładu znajdziesz poniżej:

33042ae64322ce07.png

Zwróć uwagę na adres URL, który jest tylko adresem URL usługi, który możesz wpisać w przeglądarce i uzyskać dostęp do wdrożonego właśnie interfejsu Inventory API. Sprawdź Wskaźniki i inne informacje.

Zacznijmy teraz od Google Cloud Operations Suite.

4. Utwórz temat Pub/Sub, aby otrzymywać powiadomienie o alertach

Aby utworzyć temat Pub/Sub, możesz wykonać te czynności w konsoli Google Cloud:

  1. W polu wyszukiwania wyszukaj Pub/Sub i przejdź do Pub/Sub. 935028bd8f6328ef.png
  2. Kliknij kartę Tematy, jeśli nie jest ona jeszcze otwarta. 7fd8bf91386a88fd.png
  3. Kliknij przycisk Utwórz temat. cd9d197f9023c41b.png
  4. Wpisz nazwę tematu.

173f313b4a3c4934.png

  1. Kliknij przycisk Utwórz. ca9a02477da21a44.png
  2. Skopiuj Nazwę tematu, korzystając z ikony kopiowania. Będzie Ci on potrzebny w następnej sekcji.

20848252ee83df93.png

5. Tworzenie kontroli dostępności

Aby utworzyć kontrolę dostępności aplikacji Google Cloud Run:

  1. Otwórz konsolę Google Cloud Platform.
  2. Kliknij kartę Monitorowanie.
  3. Kliknij kartę Kontrole dostępności.
  4. U góry strony kliknij przycisk Utwórz kontrolę dostępności.

96561799ca500777.png

  1. Użyj następujących wartości:
  2. Protokół : HTTPS
  3. Typ zasobu : URL
  4. Hostname (Nazwa hosta): wpisz adres URL usługi Cloud Run bez https. Przykład znajdziesz na ekranie poniżej. Jeśli nie masz pewności, jaki jest adres URL usługi, otwórz Cloud Run z głównej konsoli Google Cloud i przejdź do szczegółów usługi Cloud Run w sposób opisany powyżej.
  5. Ścieżka : healthy
  6. Częstotliwość kontroli: 1 minuta

342865c6d921ff41.png

  1. Kliknij Dalej.
  2. Włącz opcję Dopasowanie treści jest włączone.
  3. Wpisz „All Izz Well” w sekcji Treść odpowiedzi; ten ciąg jest już w aplikacji, gdy wysyła pełne odpowiedzi.
  4. Keep

6c9ad336b5479478.png

  1. Ustaw Dopuszczalny kod odpowiedzi HTTP jako klasy kodu odpowiedzi i ustaw 2xx jako jedyną klasę kodu odpowiedzi. Dzięki temu w przypadku ciągu będą ocenione tylko kody odpowiedzi z kodem 2xx, a wszystkie pozostałe będą automatycznie uznawane za nieudane sprawdzanie. 5a75d8a9e8a11dd4.png
  2. Kliknij Dalej.
  3. Wybierz temat Cloud Pub/Sub jako kanał powiadomień i kliknij OK.

d00db9f6ac56d07c.png

  1. Kliknij Dalej.
  2. Dodaj rozpoznawalny tytuł d639135da780cce3.png
  3. Kliknij przycisk Przetestuj.

968753a66ed43a75.png

  1. Zapoznaj się z nimi i kliknij przycisk Utwórz72e5e2081a36d902.png

Zostanie utworzona kontrola dostępności i rozpocznie monitorowanie aplikacji Cloud Run. Stan kontroli dostępności możesz sprawdzić na karcie Kontrole dostępności.

3fd026b0c07ef4ec.png

6. Gratulacje

Gratulacje! Udało Ci się skonfigurować kontrolę dostępności tak, aby wysyłała alerty do Pub/Sub.