Automatyzacja Amazon CloudWatch Alarm Cleanup na dużą skalę

24 kwietnia 2023

Automatyzacja Amazon CloudWatch Alarm Cleanup na dużą skalę

Czy masz tysiące alarmów Amazon CloudWatch w regionach AWS i chcesz szybko zidentyfikować, które z nich są alarmami o niskiej wartości lub błędnie skonfigurowanymi alarmami w różnych regionach? Szukasz sposobów na identyfikację alarmów, które są w stanie „ALARM” lub „IN_SUFFICIENT” przez kilka dni i wymagają ponownego sprawdzenia? Czy potrzebujesz mechanizmu czyszczenia, aby przeglądać alarmy o niskiej wartości w różnych regionach i okresowo je usuwać, aby zoptymalizować koszty alarmów?

Za pomocą tego artykułu autorzy zbadają, w jaki sposób można wdrożyć mechanizm porządkowania alarmów o niskiej wartości CloudWatch na dużą skalę w różnych regionach na koncie AWS. Omówią również mechanizm, który pomaga klientom optymalizować koszty alarmów CloudWatch poprzez identyfikowanie różnych rodzajów błędnie skonfigurowanych lub alarmów o niskiej wartości. Alarmy, które pozostawały w stanie ALARM lub INSAFFICIENT_DATA nieprzerwanie przez kilka dni, są klasyfikowane jako nieaktualne alarmy. Alarmy, które nie podejmują żadnych działań i nie są przywoływane przez alarm złożony, mogą mieć niską wartość. Autorzy zachęcają do zapoznania się z nimi, aby upewnić się, że są przydatne lub usunąć je, jeśli zdasz sobie sprawę, że już ich nie potrzebujesz.

Wdrażanie rozwiązania

To rozwiązanie i powiązane zasoby są dostępne do wdrożenia na własnym koncie AWS jako szablon AWS CloudFormation.

Wymagania wstępne

W przypadku tego przewodnika należy spełniać następujące wymagania wstępne:

  • konto AWS
  • Zasobnik Amazon S3 do przesyłania podejrzanych i alarmów do usuwania arkuszy kalkulacyjnych

Co wdroży szablon CloudFormation?

Szablon CloudFormation wdroży następujące zasoby na koncie AWS:

  • Rola AWS Identity and Access Management (IAM) dla AWS Lambda
    • CloudWatchAlarmHealthCheckerRole
    • Umożliwia zapisywanie w dziennikach CloudWatch i zasobniku S3 oraz dostęp do interfejsów API CloudWatch
  • Funkcja AWS Lambda
    • CloudWatchAlarmHealthCheckerpy-< stackname >

Jak wdrożyć szablon CloudFormation

  1. Pobierz plik yaml.
  2. Przejdź do konsoli CloudFormation na swoim koncie AWS.
  3. Wybierz Utwórz stos.
  4. Wybierz opcję Szablon jest gotowy, prześlij plik szablonu i przejdź do właśnie pobranego pliku yaml.
  5. Wybierz Dalej.
  6. Nadaj stosowi nazwę (maks. długość 30 znaków) i wybierz Dalej.
  7. W razie potrzeby dodaj znaczniki i wybierz Dalej.
  8. Przewiń do Możliwości na dole ekranu i zaznacz pole „Przyjmuję do wiadomości, że AWS CloudFormation może tworzyć zasoby IAM o niestandardowych nazwach” i Utwórz stos.
  9. Poczekaj na zakończenie tworzenia stosu.
  10. Przejdź do konsoli Lambda > Funkcje.
  11. Wybierz funkcję Lambda o nazwie CloudWatchAlarmHealthCheckerpy-<stackname >
  12. Przewiń w dół do sekcji Kod funkcji Lambda i wybierz Test.
  13. Skonfiguruj zdarzenie testowe i wprowadź dane poniżej.Automatyzacja Amazon CloudWatch Alarm Cleanup na dużą skalę

Użyj poniższego przykładowego pliku json i wprowadź swój zasobnik S3.

Możesz zmienić „nodata_days”, „stale_days”, „disabled_actions_days”, aby wyświetlić listę podejrzanych alarmów zgodnie z przypadkiem użycia lub wymaganiami. „outputPath” musi zostać zaktualizowane do konkretnego segmentu Amazon S3, do którego zostaną przesłane podejrzane alarmy i alarmy do usunięcia arkuszy kalkulacyjnych. Jeśli ta wartość nie jest ustawiona, szczegóły będą dostępne w grupie logów CloudWatch funkcji lambda. „max_iterations” możesz skonfigurować na podstawie liczby alarmów i metryk na koncie. „regiony” można konfigurować na podstawie regionów obecności na koncie.

Gdy uruchomisz to rozwiązanie na swoim koncie, rozwiązanie wyświetli arkusze kalkulacyjne do przejrzenia, przesłane do wybranego zasobnika S3. Poniższe arkusze kalkulacyjne zawierają listę alarmów, które są gotowe do usunięcia oraz alarmów, które są podejrzane i wymagają Twojej weryfikacji.

  • Arkusz kalkulacyjny zawierający listę alarmów gotowych do usunięcia według regionu. Utworzony arkusz kalkulacyjny zawiera listę alarmów, które prawdopodobnie można usunąć, ponieważ odwołują się do metryki, która nie istnieje, co może oznaczać, że metryka nie jest już emitowana lub została błędnie wpisana w czasie tworzenia alarmu.
  • Kolejny arkusz kalkulacyjny zawierający listę wszystkich podejrzanych alarmów w poszczególnych regionach. Ten utworzony plik to lista alarmów, które są nieaktualne lub mogą mieć niską wartość.Automatyzacja Amazon CloudWatch Alarm Cleanup na dużą skalę

Arkusz kalkulacyjny podejrzanych alarmów zawiera listę alarmów na koncie w różnych regionach:

  • w stanie „ALARM” przez ponad „stale_days” bez danych
  • w stanie „IN_SUFFICIENT” przez ponad „nodata_days”
  • alarmy, które nie są powiązane z żadną akcją i nie posiadają elementu nadrzędnego.
  • alarmy, które były stale wyłączone przez ponad „disabled_actions_days”

„stale_days”, „nodata_days”, „disabled_actions_days” można konfigurować w ramach szablonu CloudFormation udostępnionego w tym artykule na blogu AWS. Lista podejrzanych alarmów jest do przejrzenia i usunięcia. Zasadniczo alarmy, które nie są powiązane z żadnym działaniem i nie mają alarmu nadrzędnego, znajdują się na liście podejrzanych, a ponieważ zmiana stanu alarmu może być monitorowana przez EventBridge, znajdują się one na liście podejrzanych alarmów do przejrzenia.

Alarmy do usunięcia, jeśli arkusz kalkulacyjny zawiera:

  • alarm odnoszący się do nieprawidłowej przestrzeni nazw lub przestrzeni, która nie istnieje
  • alarm dotyczący nieznanej metryki
  • alarm odnoszący się do wymiaru, który nie istnieje dla metryki.

Koszty

Korzystanie z tego rozwiązania wiąże się z kosztami, ponieważ przechowuje ono dane w zasobniku S3. Rozwiązanie uruchamia kod Lambda i w tym przypadku funkcje Lambda wykonują wywołania API. Koszt powinien być minimalny. Na przykład 100 000 alarmów z 300 000 metryk na Twoim koncie kosztuje mniej niż kilka centów.

Wszystkie szczegóły dotyczące cen są dostępne na stronach Amazon S3 i AWS Lambda.

Porządkowanie

Jeśli zdecydujesz, że nie chcesz już przechowywać pulpitu nawigacyjnego i powiązanych zasobów, możesz przejść do CloudFormation w konsoli AWS, wybrać stos (będziesz go nazywał podczas wdrażania) i wybrać Usuń. Wszystkie zasoby zostaną usunięte.

Jeśli chcesz ponownie dodać mechanizm czyszczenia i porządkowania w dowolnym momencie, możesz ponownie utworzyć stos z pliku yaml CloudFormation.

Wnioski

Możesz użyć tego rozwiązania, aby lepiej zrozumieć alarmy CloudWatch, które mają niską wartość lub są przestarzałe i podjąć działania w celu ich usunięcia. Możesz uruchomić to raz i przejrzeć alarmy do usunięcia lub uruchamiać to okresowo za pomocą Amazon EventBridge Events. Klienci mogą szybko identyfikować i usuwać alarmy przestarzałe lub o niskiej wartości w różnych regionach i tym samym oszczędzać koszty.

Case Studies
Referencje

Bardzo sprawny kontakt z pracownikami Hostersi pozwolił nam pomyślną realizację naszego projektu i osiągnięcie założonych celów biznesowych. Jesteśmy pełni uznania dla kompetencji specjalistów Hostersi i jakości świadczonych przez nich usług.

Beata Kaczor
Dyrektor Zarządzający
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.