Google Cloud Monitoring, czyli o kontrolowaniu infrastruktury chmurowej GCP

02/06/2021

Google Cloud Monitoring tutorial

Infrastruktura jest sercem wielu współczesnych biznesów – zwłaszcza tych, które rozwijają i oferują produkty cyfrowe. Na pojęcie “infrastruktury” składa się gros elementów: serwery, maszyny wirtualne, dyski, bazy danych, sieci, usługi chmury obliczeniowej…

Te same organizacje, by zapewnić dostępność i stabilność produktów, a jednocześnie utrzymać wysokie tempo rozwoju, muszą monitorować każdy obszar infrastruktury, szybko reagować na awarie, a najlepiej namierzać potencjalne incydenty i zagrożenia jeszcze przed ich wystąpieniem.

Tutaj wkracza Cloud Monitoring – usługa Google Cloud Platform, która pozwala monitorować każdy element infrastruktury, nawet w modelu multi- czy hybrid cloud.

Zobacz też:

Co to jest Google Cloud Monitoring?

Cloud Monitoring to usługa chmury Google, która prowadzi pomiary usług Google Cloud Platform, jak też infrastruktury multi-cloud (w połączeniu GCP+AWS) czy hybrid cloud (za pośrednictwem narzędzia BindPlane). Gromadzi informacje o kondycji usług i aplikacji, dostępności, wydajności i przedstawia je za pomocą list, dashboardów czy samodzielnie utworzonych wykresów. Pozwala tym samym uzyskać odpowiedzi na takie pytania jak:

  • Czy uruchomione usługi i aplikacje są dostępne i działają sprawnie? 
  • Jakie jest obciążenie danej usługi?
  • Jaki jest czas pracy danej usługi (uptime)?
  • Czy witryna internetowa działa i czy odpowiada w prawidłowy sposób?
  • Jaka jest wydajność usług, aplikacji, serwisów?

Obok przedstawienia wyników na grafach, Cloud Monitoring daje możliwość ustawienia dowolnych alertów. System powiadomień (oprócz działania w obszarze SMS-ów i maili) można zintegrować z zewnętrznym narzędziami, takimi jak Slack czy PagerDuty. Każde powiadomienie może być sprzężone z niezbędną dokumentacją i instrukcją postępowania w obliczu konkretnego incydentu.

Cloud Monitoring, zbierając informacje z każdego zakątka infrastruktury – również w modelu multi- czy hybrid cloud – oraz informując użytkowników o anomaliach, umożliwia implementację metod SRE używanych przez samo Google.

SRE – czym jest Site Reliability Engineering?

Site Reliability Engineering może być tłumaczone na język polski jako inżynieria niezawodności. SRE to koncepcja, która wspiera tworzenie skalowalnych i wysoce niezawodnych aplikacji czy programów. Pozwala znaleźć i utrzymać złoty środek pomiędzy wysoką prędkością rozwoju a stabilnością kolejnych udostępnianych elementów systemu. Działania SRE mają doprowadzić do minimalizacji występujących błędów i awarii, między innymi poprzez nieustanne prowadzenie monitoringu (oraz ulepszanie metod namierzania i zwalczania incydentów) czy automatyzację wykonywanych zadań.

Site Reliability Engineering
Podstawą całej koncepcji Site Reliability Engineering jest monitoring. Jedynie obserwując i mierząc, można wprowadzać ulepszenia.

 

Koncepcja Site Reliability Engineering została utworzona przez Benjamina Treynora Slossa (VP of Engineering w Google) w 2003 roku. Początkowo SRE było rozwijane właśnie w Google, jako projekt wewnętrzny. Umożliwiło gigantowi tworzenie, wdrażanie, monitorowanie i utrzymywanie jednych z największych systemów na świecie. Obecnie zespół SRE Google liczy ponad 2500 specjalistów, którzy 24/7 dbają o niezawodność usług i produktów takich jak Google Cloud, Search, Ads, Gmail, Android, YouTube czy App Engine. 

Koncept SRE jest też obecny niemal w każdej firmie, która tworzy produkt IT i stawia na szybki oraz stabilny rozwój. Firmy te, w dużej mierze, podążają ścieżką, którą kilkanaście lat temu wydeptał zespół SRE z Benem Slossem na czele. 

Cloud Monitoring a Stackdriver

Przez niektórych zestaw usług chmury Google do monitorowania usług i aplikacji czy śledzenia logów jest nazywany Stackdriver.

W 2020 roku Stackdriver został przemianowany na Google Cloud’s operations suite – pakiet narzędzi do śledzenia logów, analizy wydajności aplikacji i usług czy namierzania i zwalczania wąskich gardeł infrastrukturalnych, na który składają się: Cloud Logging, Cloud Monitoring, Cloud Trace, Cloud Debugger i Cloud Profiler.

Zmiana nie wydarzyła się jedynie w obszarze nazwy. Stackdriver był dość rozproszonym zestawem usług; natomiast Google Cloud’s operations suite to jeden panel, z poziomu którego można monitorować całą infrastrukturę, jak i konkretny jej wycinek. Cloud Monitoring było ostatnią zmigrowaną do panelu usługą, a w związku z przemianowaniem zestawu narzędzi zmieniono też wygląd UI na bardziej intuicyjny, poprawiono nawigację oraz dodano nowe funkcje.

Co można monitorować w Google Cloud Monitoring? Tutoriale

Jeśli utworzysz projekt w Google Cloud Platform, automatycznie otrzymasz możliwość uruchomienia w nim usługi Cloud Monitoring. Jeśli chcesz nadać dostęp innej osobie, zwróć uwagę, czy nadana rola obejmuje uprawnienia do edycji Cloud Monitoring. Więcej informacji o dostępach do usługi znajduje się tutaj: Authorization.

Cloud Monitoring umożliwia przeglądanie i zarządzanie metrykami dla projektów w następujący sposób:

  • dla pojedynczego projektu GCP,
  • dla wielu projektów GCP w obrębie organizacji,
  • dla wielu projektów GCP w obrębie wielu organizacji,
  • dla przynajmniej jednego projektu GCP i dowolnej liczby kont AWS,
  • dla przynajmniej jednego projektu GCP i infrastruktury on-premise (poprzez narzędzie BindPlane).

Uruchomienie usługi Cloud Monitoring

Żeby przejść do usługi, trzeba być zalogowanym w konsoli Google Cloud Platform oraz mieć wskazany projekt, dla którego ma być utworzony monitoring.

W celu uruchomienia usługi należy z menu po lewej stronie wybrać Monitoring.

Google Cloud Monitoring tutorial

Po kliknięciu zostanie automatycznie utworzony panel z podsumowaniem dla danego projektu.

Google Cloud Monitoring tutorial

W panelu znajduje się komplet informacji – dashboardy, powiadomienia czy kontrole dostępności, pozwalające ocenić kondycję używanej w projekcie infrastruktury i najważniejszych jej elementów:

  • w tabeli po lewej (Resources dashboard) znajduje się lista monitorowanych zasobów,
  • niżej (Uptime checks) będzie znajdował się spis utworzonych reguł kontroli dostępności oraz ich wyniki z podziałem na lokalizacje,
  • na dole (Groups) będzie lista pogrupowanych zasobów, z ostrzeżeniami dotyczącymi poszczególnych zbiorów, 
  • po prawej stronie (Incidents) znajduje się dashboard, w którym zapisane będą bieżące i zamknięte incydenty – czyli wydarzenia, które wyszły poza ustalone normy i wywołały alert, 
  • dalej (Charts) przedstawione są wykresy z informacjami dotyczącymi monitorowanych w projekcie usług.

Z panelu można też przejść do usługi przeglądania logów Logging czy Trace – usługi śledzenia opóźnień i namierzania bottleneck’ów.

Jeśli chcesz śledzić więcej niż jeden projekt, powinieneś utworzyć multi-project metrics scope – zakres metryk obejmujący kilka projektów. Tutaj znajdziesz informacje, jak utworzyć taki scope: Viewing metrics for multiple projects.

Instalacja agenta monitoringu

Cloud Monitoring może uzyskać dostęp do niektórych metryk używanych maszyn wirtualnych (CPU, ruch na dysku, ruch sieciowy, informacje o dostępności) bez “pośrednictwa” agenta. Jednak aby uzyskać dostęp do dodatkowych zasobów systemowych i usług aplikacji, należy zainstalować agenta monitorowania – Monitoring Agent.

Monitoring Agent zbiera metryki z maszyn w usłudze Compute Engine (GCP) oraz Amazon Elastic Compute Cloud (AWS).

Google Cloud Monitoring tutorial

Żeby zainstalować agenta monitorowania, w skrypcie startowym należy zawrzeć poniższe polecenia:

curl -sSO https://dl.google.com/cloudagents/add-monitoring-agent-repo.sh
sudo bash add-monitoring-agent-repo.sh
sudo apt-get update
sudo apt-get install stackdriver-agent

Więcej informacji o instalacji znajduje się tu: https://cloud.google.com/monitoring/agent/installation 

Warto rozważyć też zainstalowanie agenta logów (Logging Agent), co da bardziej szczegółowy wgląd w akcje i kondycję maszyn wirtualnych. Tutaj znajduje sie więcej informacji o agencie logów: https://cloud.google.com/logging/docs/agent/logging.

Uptime checks – reguły kontroli dostępności

Kontrole dostępności (uptime checks) to żądania wysyłane do zasobów w celu sprawdzenia, czy odpowiadają – czyli czy funkcjonują prawidłowo

Za pomocą uptime check można zweryfikować dostępność usług publicznych w lokalizacjach na całym świecie. Cloud Monitoring daje opcję sprawdzenia stanu aplikacji App Engine, adresu URL hosta, instancji Compute Engine, instancji AWS czy Elastic Load Balancer (systemu równoważenia obciążenia chmury Amazon). W konfiguracji uptime check należy wskazać protokół sieciowy – HTTP, HTTPS lub TCP. Dla każdej reguły można stworzyć politykę alertów i wyświetlić informacje o czasie między wysłaniem żądania a otrzymaniem odpowiedzi każdej z lokalizacji.

Aby utworzyć kontrolę dostępności, należy wybrać w menu Monitoring, następnie Uptime check i nacisnąć Create uptime check (u góry ekranu).

Google Cloud Monitoring tutorial

Pojawi się okno, w którym utworzymy regułę kontroli dostępności spełniającą wskazane warunki.

Google Cloud Monitoring tutorial

Przykładowy uptime check

Przedstawiony poniżej przykład sprawdza dostępność HTTP. Zasób jest sprawdzany co minutę z 10-sekundowym limitem czasu. Uptime checks, które nie dają odpowiedzi w ramach tego limitu, są uznawane za awarię.

Poniżej znajdują się przykłady, jak mogą wyglądać statusy widoczne w głównym panelu Uptime checks oraz w szczegółowych panelach.

1. Awaria maszyny wirtualnej:

Google Cloud Monitoring tutorial
Widok w panelu Uptime checks
Google Cloud Monitoring tutorial
Widok szczegółowego panelu

2. Częściowo funkcjonująca maszyna wirtualna:

Google Cloud Monitoring tutorial
Widok w panelu Uptime checks

3. Sprawnie funkcjonująca maszyna wirtualna:

Google Cloud Monitoring tutorial
Widok w panelu Uptime checks
Google Cloud Monitoring tutorial
Widok szczegółowego panelu

Alerty

Wykresy są niezwykle przydatne, ale mało kto ma czas, by obserwować zachodzące na nich zmiany 24/7. Jeśli chcemy być informowani na bieżąco o anomaliach (na przykład o awarii serwera, osiągnięciu konkretnego poziomu pojemności, przepustowości czy też o zbliżaniu się do progu rozliczeniowego) powinniśmy utworzyć polityki alertów, które wyślą powiadomienie w momencie, gdy spełnione zostaną konkretne warunki. Powiadomienie można otrzymać wybranym kanałem – np. SMS-em, na maila, na Slack czy PagerDuty.

Google Cloud Monitoring tutorial
Przykład polityki alertu, w której określony został w czasie próg ruchu wychodzącego z sieci maszyny wirtualnej

Tworzenie alertu

Oto przykład, jak wygląda tworzenie reguł powiadomienia. Aby utworzyć alert, musimy z menu po prawej wybrać Monitoring > Alerting, a następnie kliknąć Create Policy.

Google Cloud Monitoring tutorial

Pojawi się okno konfiguracji polityki.

Google Cloud Monitoring tutorial

Tworzymy warunek, klikając add condition.

Google Cloud Monitoring tutorial

Tworzymy metrykę. W naszym przypadku będzie to metryka dla maszyny wirtualnej.

Wybieramy Uptime Check URL.

Google Cloud Monitoring tutorial

Żeby sprawdzić, czy instancja działa, wybieramy Check passed.

Google Cloud Monitoring tutorial

Jako filtr dodajemy utworzoną kontrolę dostępności – apache.

Google Cloud Monitoring tutorial

Odwołujemy się do naszych projektów.

Google Cloud Monitoring tutorial

Aby powyższy alert zadziałał, maszyna wirtualna musi być wyłączona przez co najmniej minutę.

Google Cloud Monitoring tutorial

Zapewne chcielibyśmy otrzymać informację w momencie, gdy wystąpi problem. Dlatego musimy również w odpowiedni sposób skonfigurować kanały powiadomień. Klikamy Manage notification channels.

Google Cloud Monitoring tutorial

Zostaniemy przeniesieni do okna, w którym będziemy mogli wybrać i skonfigurować kanały, którymi mają być przesyłane powiadomienia. Aby skorzystać z konkretnego kanału należy kliknąć Add new.

Google Cloud Monitoring tutorial

Pojawi się okno, w którym skonfigurujemy wybrany kanał. 

Tak wygląda okno konfiguracji kanału email:

Google Cloud Monitoring tutorial

A tak kanału SMS:

Google Cloud Monitoring tutorial

W przypadku kanału SMS musimy zweryfikować poprawność wprowadzonego numeru poprzez przepisanie otrzymanego kodu.

Google Cloud Monitoring tutorial

Po skonfigurowaniu, kanały pojawią się na liście.

Google Cloud Monitoring tutorial

Po konfiguracji kanałów powiadomień wracamy do ustawień powiadomień i klikamy “odśwież”. Dzięki temu pojawią się nowe kanały, które dodamy do alertu.

Google Cloud Monitoring tutorial

Możemy też do alertu dodać odpowiednią dokumentację, by było jasne, jak postępować w przypadku konkretnej awarii.

Google Cloud Monitoring tutorial

Poniżej przykładowe powiadomienie mailowe:

Google Cloud Monitoring tutorial

Z poziomu takiego maila mamy możliwość przejść bezpośrednio do konsoli GCP, klikając w View incident. Otworzy się okno ze szczegółami awarii:

Google Cloud Monitoring tutorial

Mamy również możliwość tworzenia alertów i wyboru kanałów przy użyciu API. Więcej informacji znajduje się w dokumentacji Google Cloud:

Możemy również utworzyć zasadę wyzwalania alertu w sytuacji, gdy miesięczna suma bajtów dziennika logów przekroczy poziom zdefiniowany w usłudze Cloud Logging. Aby utworzyć taką politykę, można posłużyć się ustawieniami przedstawionymi poniżej:

Google Cloud Monitoring tutorial

Rady dotyczące tworzenia alertów

  • Dobrze jest uzupełnić alert o instrukcje postępowania, informację, które zasoby należy zweryfikować czy niezbędną dokumentację. Pozwoli to szybciej zażegnać incydent, nawet przez osobę, która ma z nim pierwszy raz do czynienia.
  • Zalecane jest monitorowanie objawów, nie przyczyn. Przykładowo, można ustawić alert na zakończone niepowodzeniem zapytania bazy danych, a w sytuacji incydentu sprawdzić, czy baza danych nie działa.
  • Należy upewnić się, że korzystamy jednocześnie z kilku kanałów powiadomień, na przykład maila i SMS. Pozwoli to uniknąć sytuacji, w której jeden z kanałów zawiedzie.
  • Ważne jest też unikanie nadmiaru wysyłanych powiadomień. Nadmierna liczba alertów może spowodować, że osoby, które je otrzymują, zaczną je ignorować. Alerty monitorowania mają być przydatne i odpowiednio dostosowane. Konfigurowanie alertów na bardzo szczegółowym poziomie, w mało istotnych obszarach nie jest dobrą praktyką.

Niestandardowe metryki

Jeśli standardowe metryki dostarczane przez Cloud Monitoring nie odpowiadają Twoim potrzebom, możesz utworzyć niestandardowe metryki dla następujących zasobów:

  • instancje Amazon EC2,
  • Dataflow job
  • instancje App Engine,
  • instancje Compute Engine,
  • node obliczeniowy lub węzeł obliczeniowy,
  • zadanie (task) zdefiniowane przez użytkownika,
  • instancja kontenera GKE,
  • klaster Kubernetes,
  • kontener Kubernetes,
  • node Kubernetes,
  • pod Kubernetes.
Google Cloud Monitoring tutorial
Przykładowa niestandardowa metryka stworzona w Pythonie

Dla przykładu: weźmy serwer gier, który mieści 50 użytkowników. Z perspektywy infrastruktury można rozważyć użycie wskaźnika obciążenia procesora lub obciążenia ruchu sieciowego jako wartości, które są w pewnym stopniu skorelowane z liczbą użytkowników. Ale dzięki niestandardowym metrykom można faktycznie przekazać aktualną liczbę użytkowników bezpośrednio z aplikacji do usługi Cloud Monitoring.

Więcej informacji:

Dashboardy i grafy

W Cloud Monitoring mamy możliwość tworzenia własnych dashboardów dla wartości, które chcemy monitorować – zarówno metryk domyślnie zbieranych przez usługę, za pośrednictwem agenta monitoringu, dane logów czy metryki niestandardowe. Na wykresach można przedstawić dane liczbowe lub zakresy; nie jest możliwe zaprezentowanie danych tekstowych.

Wykresy zapewniają wgląd w kondycję maszyn wirtualnych oraz ruch sieciowy pomiędzy instancjami. Przykładowo, możemy utworzyć wykresy, które będą przedstawiały informacje o poziomie wykorzystania procesora danej instancji, pakietów lub bajtów wysyłanych i odbieranych przez tę instancję czy porzuconych przez zaporę firewall. Korzystając z filtrów, otrzymamy widok na dane na bardziej szczegółowym poziomie. 

Aby utworzyć dashboard, z menu po lewej wybieramy Monitoring > Dashboards. Po przejściu do panelu klikamy Create Dashboard.

Google Cloud Monitoring tutorial

Zostaniemy przeniesieni do osobnego widoku, w którym nazwiemy panel i odpowiednio go zmodyfikujemy. Możemy wybierać spośród różnych rodzajów wykresów i modeli prezentacji danych (widoczne po lewej stronie screena poniżej).

Google Cloud Monitoring tutorial

Aby dodać wykres, klikamy Add Chart i wybieramy sposób wyświetlania danych, który nas interesuje i który będziemy modyfikować w kolejnych krokach.

Google Cloud Monitoring tutorial

Wybieramy dane, które chcemy wyświetlić:

Google Cloud Monitoring tutorial

I mamy gotowy dashboard.

Google Cloud Monitoring tutorial

Wykresy będą widoczne w panelu Monitoring > Dashboards.

Voucher 500 $ do wykorzystania w GCP

Podstawą do wprowadzania ulepszeń jest znajomość obszarów, w których te ulepszenia można wprowadzić. Cloud Monitoring jest jedną z bazowych usług umożliwiających wdrożenie zasad SRE.

Jeśli używasz Google Cloud Platform i chcesz wykorzystać możliwości jakie daje Cloud Monitoring, skontaktuj się z nami. Obok pomocy certyfikowanych specjalistów otrzymasz również voucher 500 $ do wykorzystania na dowolne usługi GCP.

Zobacz też: