Monitoring-as-code – Monaco

6 May, 2022 11:00 5 min Administrator

GitOps

GitOps to podejście (a właściwie zbiór dobrych praktyk DevOps-owych używanych do tworzenia aplikacji, takich jak kontrola wersji, współpraca, zgodność i narzędzia CI/CD), które stosuje się do automatyzacji infrastruktury IT. Automatyzacja wdrożeń oprogramowania jest obecnie już dość mocno rozwinięta, natomiast w przypadku infrastruktury czy też monitoringu pozostaje wciąż procesem w dużej mierze ręcznym, wymagającym angażowania wyspecjalizowanych zespołów. Nowoczesna infrastruktura musi być elastyczna i skalowalna, aby umożliwiać efektywne zarządzanie zasobami potrzebnymi do rozwoju aplikacji i ciągłych wdrożeń. Automatyzacja procesu wdrażania infrastruktury w oparciu o GitOps realizowana jest poprzez wykorzystanie plików konfiguracyjnych przechowywanych jako kod (Infrastructure as a code).

„Wszystko jako kod”

Podejście to stało się wiodącym trendem wśród organizacji stosujących praktyki DevOps, jednak monitorowanie i obserwowalność wciąż pozostają w tyle za narzędziami do wdrażania aplikacji. Termin „Monitoring as code” nie jest nowy i obejmuje on nie tylko automatyczną instalację i konfigurację agentów, pluginów itp., ale całe podejście do obserwowalności, w tym automatyczną diagnostykę, alertowanie czy zarządzanie incydentami. CI/CD zmieniły sposób, w jaki budujemy i wdrażamy aplikacje. Dzięki DevOps, Infrastructure as a code oraz konteneryzacji zarządzanie infrastrukturą i IT stały się zdecentralizowane. Teraz organizacje mogą działać sprawniej i szybciej dostarczać wysokiej jakości oprogramowanie. Tak kompleksowe podejście CI/CD powinno obejmować również monitoring i obserwowalność.

I tutaj właśnie pojawia się przestrzeń dla Monitoring as a code - wypełnia ono lukę w dostarczaniu pełnej obserwowalności infrastruktury i aplikacji. Kieruje się tą samą zasadą co IaaS, przy użyciu składni i plików konfiguracyjnych jesteśmy w stanie zbudować monitoring i pełną obserwowalność oraz wdrożyć ją razem z kodem aplikacji czy też infrastruktury. Dzięki takiemu podejściu programiści budują, testują i wdrażają aplikacje wraz z monitoringiem za pośrednictwem ujednoliconego potoku CI/CD, a następnie zarządzają resztą rozwiązania do monitorowania całkowicie poza pasmem tego potoku, np. konfigurują reguły alertowania, dashboardy itp. Kompleksowe monitorowanie jako kod obejmuje nie tylko wdrażanie agentów, czy też zbieranie danych, ale także diagnozowanie, ostrzeganie oraz przetwarzanie danych monitoringu, a wszystko to zdefiniowane jest jako kod. Monitoring as code rozwiązuje zatem bolączki wielu projektów, polegające na tym, że nieoczekiwane problemy podczas testów przedprodukcyjnych lub wdrożeń pozostają niewykryte. Dzięki monitoringowi wdrożonemu wraz z aplikacją za pośrednictwem CI/CD można wcześniej wykryć wszelkie problemy oraz punkty krytyczne wdrażanej aplikacji.

Przykłady zastosowania

Za pomocą podejścia Monitoring as code możemy stworzyć „idealny świat” w którym zespoły deweloperskie - poprzez dostępne funkcje samoobsługi - są w stanie skonfigurować monitoring i alertowanie bez konieczności angażowania zespołów administratorskich odpowiedzialnych za monitoring. Twórca aplikacji jest najlepszym źródłem informacji o tym, co powinno być monitorowane i o czym powinniśmy zostać poinformowani podczas awarii.

Innym scenariuszem jest rozpropagowanie gotowego monitoringu na środowiskach i ujednolicenie go. Dla przykładu wyobraźmy sobie, że mamy już w pełni skonfigurowany monitoring aplikacji XYZ na środowisku testowym, a za rogiem jest wdrożenie tej aplikacji na środowisko produkcyjne. Perspektywa ręcznego przenoszenia konfiguracji jest pracochłonna i może być zwyczajnie dołująca.

Z pomocą przychodzi Monitoring as code - dzięki temu podejściu możemy skopiować konfiguracje ze środowiska testowego w postaci pliku wsadowego, sprawdzić pliki konfiguracyjne i rozpropagować monitoring aplikacji na środowisku produkcyjnym.

Czym jest Monaco?

Monaco to narzędzie pozwalające wdrożyć, aktualizować i wersjonować konfigurację monitoringu w Dynatrace w postaci kodu w jednym lub wielu środowiskach Dynatrace – Monitoring as a code.

Model selfservice wykorzystany w Monaco pozwala na łatwe i wydajne skonfigurowanie monitoringu na dużą skale przez zespoły programistyczne lub administratorskie.

Monaco daje możliwość np. zdefiniowania całego rozwiązania do monitorowania typu end-to-end, w tym gromadzenia, diagnozowania, alarmowania, przetwarzania jako deklaratywnego kodu JSON lub YAML. Podczas wdrożenia nowej aplikacji Monaco automatycznie skonfiguruje do niej monitoring np. request attribiutes, notification czy też alertowanie.

 Monaco1

Rysunek 1: Monaco - Wdrożenie monitoringu aplikacji

 

Monaco posiada możliwość ściągnięcia istniejącej już konfiguracji i rozpropagowanie jej na inne środowiska. Dzięki funkcji „download” nie musimy pisać od nowa zdefiniowanego wcześniej monitoringu. Wystarczy ściągnąć, przejrzeć konfigurację i rozpropagować ją na innych środowiskach.

Monaco02

Rysunek 2: Monaco - Ściągnij i rozpropaguj monitoring

 

Współzależności między konfiguracjami to kolejny atut Monaco - są one obsługiwane bez śledzenia unikalnych identyfikatorów. Podczas tworzenia pliku konfiguracyjnego wystarczy odwołać się do odpowiedniego wpisu w konfiguracji środowiska:

Monaco3

Rysunek 3: Monaco - Współzależność między konfiguracjami

Dodatkową zaletą Monaco jest to, że potrafi ono samo zweryfikować poprawność konfiguracji i wdrożyć ją w taki sposób, aby wszystkie zależności się zgadzały, np.: jeśli mamy dashboard, który odwołuje się do jakieś managment zony, a managment zona bazuje na tagach, Monaco najpierw wdroży konfiguracje auto-tagów, potem managment zone, a na samym końcu dashboard.

Dzięki Monaco możemy wdrażać również poszczególne konfiguracje na nasze środowiska - nie jesteśmy ograniczeni do rozwiązań typu „wszystko albo nic”. Dzięki zastosowaniu odpowiednich parametrów jesteśmy w stanie określić jakie konfiguracje chcemy w danym potoku wdrożyć w Dynatrace:

 Monaco4


Podsumowując funkcje Monaco, pozwala ono na m.in.:

  • tworzenie szablonów konfiguracji do ponownego wykorzystania w wielu środowiskach
  • obsługę współzależności między konfiguracjami bez konieczności śledzenia unikalnych identyfikatorów
  • stosowanie tej samej konfiguracji w setkach środowisk Dynatrace i możliwość ich jednoczesnej aktualizacji
  • wdrażanie określonych konfiguracji w określonych środowiskach
  • promowanie konfiguracji specyficznych dla aplikacji z jednego środowiska do drugiego, śledząc wdrożenia na każdym etapie
  • obsługę wszystkich mechanizmów i najlepszych praktyk przepływów pracy opartych na git, takich jak pull requesty, scalanie i zatwierdzanie
  • podpięcie pod CI/CD


Więcej informacji na temat możliwości Monako można znaleźć w dokumentacji:

https://dynatrace-oss.github.io/dynatrace-monitoring-as-code/

lub w przykładowych konfiguracjach dostępnych pod adresem:

https://github.com/dynatrace-oss/dynatrace-monitoring-as-code

Sprawdź także

Zadzwoń +48 22 657 0438

lub wypełnij formularz, a skontaktujemy się z Tobą!

Nazywam się
i jestem zainteresowany
Proszę o kontakt pod adresem
lub numerem tel.