Zarządzanie Operational Insights opartych na ML z Amazon DevOps Guru do strumienia zdarzeń Datadog

18 sierpnia 2023

Zarządzanie Operational Insights opartych na ML z Amazon DevOps Guru do strumienia zdarzeń Datadog

Amazon DevOps Guru to w pełni zarządzana usługa AIOps, która wykorzystuje uczenie maszynowe (ML) do szybkiego identyfikowania, kiedy aplikacje zachowują się poza ich normalnymi wzorcami działania i jednocześnie generuje wgląd w swoje ustalenia. Te spostrzeżenia generowane przez DevOps Guru mogą być używane do ostrzegania dyżurnych zespołów o reagowaniu na anomalie w krytycznych obciążeniach biznesowych. Jeśli już używasz Datadog do automatyzacji monitorowania infrastruktury, monitorowania wydajności aplikacji i zarządzania dziennikami w celu obserwowania całego stosu technologicznego w czasie rzeczywistym, ten artykuł jest dla Ciebie.

Być może już używasz Datadog do skonsolidowanego widoku interfejsu Datadog Events do wyszukiwania, analizowania i filtrowania zdarzeń z wielu różnych źródeł w jednym miejscu. Zdarzenia Datadog to zapisy znaczących zmian istotnych dla zarządzania operacjami IT i rozwiązywania problemów, takich jak kod, wdrożenia, stan usług, zmiany konfiguracji i alerty monitorowania.

Gdziekolwiek DevOps Guru wykryje zdarzenia operacyjne w Twoim środowisku AWS, które mogą prowadzić do przestojów, generuje spostrzeżenia i rekomendacje. Te spostrzeżenia/zalecenia są następnie przekazywane do punktu końcowego Datadog, specyficznego dla użytkownika przy użyciu interfejsu API zdarzeń Datadog. Następnie możesz tworzyć pulpity nawigacyjne, zdarzenia, alarmy lub podejmować zautomatyzowane działania naprawcze w oparciu o te spostrzeżenia i zalecenia w Datadog.

Datadog gromadzi i ujednolica wszystkie dane przesyłane strumieniowo z tych złożonych środowisk, integrując je jednym kliknięciem w celu pobierania metryk i tagów z ponad 90 usług AWS. Firmy mogą wdrażać agenta Datadog bezpośrednio na swoich hostach i instancjach obliczeniowych w celu zbierania metryk o większej szczegółowości – z dokładnością do jednej sekundy. A dzięki gotowym do użycia pulpitom integracyjnym Datadog firmy zyskują nie tylko ogólny wgląd w kondycję swojej infrastruktury i aplikacji, ale także głębszy wgląd w poszczególne usługi, takie jak AWS Lambda i Amazon EKS.

Poniższy artykuł w przystępny sposób pokaże Ci, jak wykorzystać Amazon DevOps Guru z Datadog, aby uzyskać wgląd w czasie rzeczywistym i rekomendacje dotyczące Twojej infrastruktury AWS. Autorzy zademonstrują, w jaki sposób wgląd wygenerowany przez Amazon DevOps Guru dla anomalii może być automatycznie przesyłany do strumieni zdarzeń Datadog, które następnie można wykorzystać do tworzenia pulpitów nawigacyjnych, tworzenia alarmów i alertów w celu podjęcia działań naprawczych.

Omówienie rozwiązania

Kiedy tworzony jest wgląd Amazon DevOps Guru, reguła Amazon EventBridge jest używana do przechwytywania wglądu jako zdarzenia i kierowania do celu AWS Lambda Function. Funkcja lambda współdziała z Datadog za pomocą interfejsu API REST w celu wypychania odpowiednich zdarzeń DevOps Guru przechwyconych przez Amazon EventBridge.

Regułę EventBridge można dostosować w celu przechwytywania wszystkich szczegółowych informacji DevOps Guru lub zawęzić je do określonych szczegółowych informacji. W tym artykule autorzy zgromadzili wszystkie spostrzeżenia DevOps Guru i wykonają działania w Datadog dla poniższych wydarzeń DevOps Guru:

  • DevOps Guru New Insight Open
  • DevOps Guru New Anomaly Association
  • DevOps Guru Insight Severity Upgraded
  • DevOps Guru New Recommendation Created
  • DevOps Guru Insight Closed

Zarzadzanie Operational Insights opartych na ML z Amazon DevOps Guru do strumienia zdarzen Datadog

Etapy wdrażania rozwiązania

Wymagania wstępne

Przed wdrożeniem rozwiązania wykonaj następujące kroki.

  • Konfiguracja konta Datadog: Połączy swoje konto AWS z Datadog. Jeśli nie masz konta Datadog, możesz poprosić o bezpłatną próbną instancję deweloperską za pośrednictwem Datadog.
  • Poświadczenia Datadog: Zbierz poświadczenia kluczy Datadog, które będą używane do łączenia się z AWS. Wykonaj poniższe czynności, aby utworzyć klucz API i klucz aplikacji.

Dodaj klucz API lub token klienta:

  1. Aby dodać klucz Datadog API lub token klienta:
  2. Przejdź do ustawień organizacji, a następnie kliknij klucze API lub tokeny klienta
  3. Kliknij przycisk Nowy klucz lub Nowy token klienta, w zależności od tego, który tworzysz.
  4. Wprowadź nazwę swojego klucza lub tokena.
  5. Kliknij Utwórz klucz API lub Utwórz token klienta.
  6. Zanotuj nowo wygenerowaną wartość klucza API. Będziesz tego potrzebować w późniejszych krokach

Zarzadzanie Operational Insights opartych na ML z Amazon DevOps Guru do strumienia zdarzen Datadog

Dodaj klucze aplikacji.

  1. Aby dodać klucz aplikacji Datadog, przejdź do Ustawienia organizacji > Klucze aplikacji. Jeśli masz uprawnienia do tworzenia kluczy aplikacji, wybierz Nowy klucz. Zanotuj nowo wygenerowany klucz aplikacji. Będziesz tego potrzebować w późniejszych krokach.

Dodaj klucz aplikacji i klucz API do AWS Secrets Manager: Secrets Manager umożliwia zastąpienie zakodowanych na stałe poświadczeń w kodzie, w tym haseł, wywołaniem API do Secrets Manager w celu programowego pobrania klucza tajnego. Pomaga to zapewnić, że klucz nie może zostać naruszony przez osobę badającą Twój kod, ponieważ klucz już nie istnieje w kodzie. Wykonaj poniższe czynności, aby utworzyć nowy secret w AWS Secrets Manager.

  1. Otwórz konsolę Secrets Manager pod adresem https://console.aws.amazon.com/secretsmanager/
  2. Wybierz Store a new secret.
  3. Na stronie Choose secret type wykonaj następujące czynności:
  1. W polu Secret type wybierz other type of secret.
  2. W parach Key/value wprowadź swój klucz tajny w polu Key/value

Zarzadzanie Operational Insights opartych na ML z Amazon DevOps Guru do strumienia zdarzen Datadog

Kliknij Dalej i wpisz „DatadogSecretManager” jako tajną nazwę, a następnie Przejrzyj i Zakończ.

Zarzadzanie Operational Insights opartych na ML z Amazon DevOps Guru do strumienia zdarzen Datadog

Opcja 1: Wdróż aplikację Datadog Connector z repozytorium AWS Serverless

Aplikacja DevOps Guru Datadog Connector jest dostępna w AWS Serverless Application Repository, które jest zarządzanym repozytorium dla aplikacji bezserwerowych. Aplikacja jest spakowana z szablonem AWS Serverless Application Model (SAM), definicją wykorzystywanych zasobów AWS oraz linkiem do kodu źródłowego. Wykonaj poniższe czynności, aby szybko wdrożyć tę bezserwerową aplikację na swoim koncie AWS.

 

  • Zaloguj się do konsoli zarządzania AWS konta, na którym planujesz wdrożyć to rozwiązanie.
  • Przejdź do aplikacji DevOps Guru Datadog Connector w AWS Serverless Repository i kliknij „Deploy”.
  • Zostanie wyświetlony ekran wdrażania aplikacji Lambda, na którym można wprowadzić nazwę aplikacji DatadogZarzadzanie Operational Insights opartych na ML z Amazon DevOps Guru do strumienia zdarzen Datadog 6Zarzadzanie Operational Insights opartych na ML z Amazon DevOps Guru do strumienia zdarzen Datadog 6Zarzadzanie Operational Insights opartych na ML z Amazon DevOps Guru do strumienia zdarzen Datadog
  • Po pomyślnym wdrożeniu na stronie aplikacji AWS Lambda zostanie wyświetlony status „Create complete” dla aplikacji serverlessrepo-DevOps-Guru-Datadog-Connector. Szablon CloudFormation tworzy cztery zasoby,
  1. Funkcja Lambda, która posiada logikę do integracji z Datadog
  2. Reguła Event Bridge dla DevOps Guru Insights
  3. Pozwolenie Lambdy
  4. Rola IAM
  • Teraz pomiń opcję 2 i wykonaj czynności opisane w sekcji „Testowanie rozwiązania”, aby wywołać pewne spostrzeżenia/zalecenia DevOps Guru i sprawdzić, czy zdarzenia są tworzone i aktualizowane w Datadog.

Opcja 2: Zbuduj i wdróż przykładową aplikację Datadog Connector przy użyciu interfejsu wiersza poleceń AWS SAM

Jak widać powyżej, możesz bezpośrednio wdrożyć przykładową aplikację bezserwerową z repozytorium bezserwerowego za pomocą jednego kliknięcia. Alternatywnie możesz sklonować źródłowe repozytorium GitHub i wdrożyć je za pomocą SAM CLI ze swojego terminala.

Serverless Application Model Command Line Interface (SAM CLI) to rozszerzenie AWS CLI, które dodaje funkcjonalność do tworzenia i testowania aplikacji bezserwerowych. CLI udostępnia polecenia, które umożliwiają sprawdzenie czy pliki szablonów AWS SAM są napisane zgodnie ze specyfikacją, lokalne wywoływanie funkcji Lambda, debugowanie funkcji Lambda krok po kroku, pakowanie i wdrażanie aplikacji bezserwerowych w chmurze AWS itd. Aby uzyskać szczegółowe informacje na temat korzystania z interfejsu AWS SAM CLI, w tym pełny opis poleceń AWS SAM CLI, zobacz AWS SAM reference – AWS Serverless Application Model.

Zanim przejdziesz dalej, upewnij się, że na początku wypełniłeś sekcję wymagań wstępnych, która powinna skonfigurować AWS SAM CLI, Maven i Java na twoim lokalnym terminalu. Musisz także zainstalować i skonfigurować Dockera, aby uruchamiać swoje funkcje w środowisku Amazon Linux, które pasuje do Lambda.

Sklonuj kod źródłowy z repozytorium github.

git clone https://github.com/aws-samples/amazon-devops-guru-connector-datadog.git

Zbuduj przykładową aplikację przy użyciu SAM CLI.

$cd DatadogFunctions

$sam build
Building codeuri: $\amazon-devops-guru-connector-datadog\DatadogFunctions\Functions runtime: java11 metadata: {} architecture: x86_64 functions: Functions
Running JavaMavenWorkflow:CopySource
Running JavaMavenWorkflow:MavenBuild
Running JavaMavenWorkflow:MavenCopyDependency
Running JavaMavenWorkflow:MavenCopyArtifacts

Build Succeeded

Built Artifacts  : .aws-sam\build
Built Template   : .aws-sam\build\template.yaml

Commands you can use next
=========================
[*] Validate SAM template: sam validate
[*] Invoke Function: sam local invoke
[*] Test Function in the Cloud: sam sync --stack-name {{stack-name}} --watch
[*] Deploy: sam deploy --guided

To polecenie zbuduje źródło Twojej aplikacji poprzez zainstalowanie zależności zdefiniowanych w Functions/pom.xml, utworzenie pakietu wdrożeniowego i zapisanie go w. folder aws-sam/build.

Wdróż przykładową aplikację przy użyciu SAM CLI.

$sam deploy --guided

To polecenie spakuje i wdroży twoją aplikację w AWS, z serią monitów, na które powinieneś odpowiedzieć, jak pokazano poniżej:

  • Nazwa stosu: Nazwa stosu do wdrożenia w CloudFormation. Powinno to być unikalne dla Twojego konta i regionu, a dobrym punktem wyjścia byłoby coś pasującego do nazwy Twojego projektu.
  • Region AWS: Region AWS, w którym chcesz wdrożyć swoją aplikację.
  • Potwierdź zmiany przed wdrożeniem: Jeśli ustawiono na Y, wszystkie zestawy zmian zostaną wyświetlone przed wykonaniem w celu ręcznego przeglądu. Jeśli ustawiono wartość N, AWS SAM CLI automatycznie wdroży zmiany w aplikacji.
  • Zezwól na tworzenie ról SAM CLI IAM: Wiele szablonów AWS SAM, w tym ten przykład, tworzy role AWS IAM wymagane przez funkcje AWS Lambda w celu uzyskania dostępu do usług AWS. Domyślnie są one ograniczone do minimalnych wymaganych uprawnień. Aby wdrożyć stos AWS CloudFormation, który tworzy lub modyfikuje role IAM, należy podać wartość CAPABILITY_IAM dla możliwości. Jeśli w tym monicie nie podano uprawnień, aby wdrożyć ten przykład, należy jawnie przekazać opcję --capabilities CAPABILITY_IAM do tego samego polecenia wdrażania.
  • Wyłącz wycofywanie zmian [T/N]: Jeśli ustawione na Y, zachowuje stan wcześniej udostępnionych zasobów, gdy operacja się nie powiedzie.
  • Zapisz argumenty w pliku konfiguracyjnym (samconfig.toml): Jeśli ustawione na Y, twoje wybory zostaną zapisane w pliku konfiguracyjnym wewnątrz projektu, dzięki czemu w przyszłości będziesz mógł po prostu ponownie uruchomić sam wdrażania bez parametrów, aby wdrożyć zmiany w swoim aplikacja.

Po wprowadzeniu parametrów powinieneś zobaczyć coś takiego, jeśli podałeś Y, aby wyświetlić i potwierdzić zestawy zmian. Przejdź tutaj, podając „Y”, aby wdrożyć zasoby.

Initiating deployment
=====================

        Uploading to sam-app-datadog/0c2b93e71210af97a8c57710d0463c8b.template  1797 / 1797  (100.00%)


Waiting for changeset to be created..

CloudFormation stack changeset
---------------------------------------------------------------------------------------------------------------------
Operation                     LogicalResourceId             ResourceType                  Replacement
---------------------------------------------------------------------------------------------------------------------
+ Add                         FunctionsDevOpsGuruPermissi   AWS::Lambda::Permission       N/A
                              on
+ Add                         FunctionsDevOpsGuru           AWS::Events::Rule             N/A
+ Add                         FunctionsRole                 AWS::IAM::Role                N/A
+ Add                         Functions                     AWS::Lambda::Function         N/A
---------------------------------------------------------------------------------------------------------------------


Changeset created successfully. arn:aws:cloudformation:us-east-1:867001007349:changeSet/samcli-deploy1680640852/bdc3039b-cdb7-4d7a-a3a0-ed9372f3cf9a


Previewing CloudFormation changeset before deployment
======================================================
Deploy this changeset? [y/N]: y

2023-04-04 15:41:06 - Waiting for stack create/update to complete

CloudFormation events from stack operations (refresh every 5.0 seconds)
---------------------------------------------------------------------------------------------------------------------
ResourceStatus                ResourceType                  LogicalResourceId             ResourceStatusReason
---------------------------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS            AWS::IAM::Role                FunctionsRole                 -
CREATE_IN_PROGRESS            AWS::IAM::Role                FunctionsRole                 Resource creation Initiated
CREATE_COMPLETE               AWS::IAM::Role                FunctionsRole                 -
CREATE_IN_PROGRESS            AWS::Lambda::Function         Functions                     -
CREATE_IN_PROGRESS            AWS::Lambda::Function         Functions                     Resource creation Initiated
CREATE_COMPLETE               AWS::Lambda::Function         Functions                     -
CREATE_IN_PROGRESS            AWS::Events::Rule             FunctionsDevOpsGuru           -
CREATE_IN_PROGRESS            AWS::Events::Rule             FunctionsDevOpsGuru           Resource creation Initiated
CREATE_COMPLETE               AWS::Events::Rule             FunctionsDevOpsGuru           -
CREATE_IN_PROGRESS            AWS::Lambda::Permission       FunctionsDevOpsGuruPermissi   -
                                                            on
CREATE_IN_PROGRESS            AWS::Lambda::Permission       FunctionsDevOpsGuruPermissi   Resource creation Initiated
                                                            on
CREATE_COMPLETE               AWS::Lambda::Permission       FunctionsDevOpsGuruPermissi   -
                                                            on
CREATE_COMPLETE               AWS::CloudFormation::Stack    sam-app-datadog               -
---------------------------------------------------------------------------------------------------------------------


Successfully created/updated stack - sam-app-datadog in us-east-1

Po pomyślnym wdrożeniu powinno być możliwe zobaczenie pomyślnego utworzenia zasobów. Możesz także znaleźć swoją Lambdę, rolę IAM i regułę EventBridge w wartościach wyjściowych stosu CloudFormation.

Możesz także przetestować i debugować swoją funkcję lokalnie za pomocą przykładowych zdarzeń przy użyciu lokalnej funkcjonalności SAM CLI. Przetestuj pojedynczą funkcję, wywołując ją bezpośrednio za pomocą zdarzenia testowego. Zdarzenie to dokument JSON reprezentujący dane wejściowe, które funkcja otrzymuje ze źródła zdarzenia. Więcej informacji można znaleźć w linku Wywoływanie funkcji Lambda lokalnie – AWS Serverless Application Model tutaj.

$ sam local invoke Functions -e ‘event/event.json’

Gdy wykonasz powyższe kroki, przejdź do sekcji „Testowanie rozwiązania” poniżej, aby wywołać pewne spostrzeżenia DevOps Guru i zweryfikować, czy zdarzenia są tworzone i przesyłane do Datadog.

Przetestuj rozwiązanie

Aby przetestować rozwiązanie, przeprowadź symulację DevOps Guru Insight. Po wykryciu anomalii w aplikacji DevOps Guru tworzy wgląd, jak pokazano poniżej.

W przypadku wglądu DevOps Guru pokazanego powyżej odpowiednie zdarzenie jest tworzone automatycznie i przekazywane do Datadog, jak pokazano poniżej. Oprócz tworzenia zdarzeń, wszelkie nowe anomalie i zalecenia od DevOps Guru są również powiązane ze zdarzeniami.

Zarzadzanie Operational Insights opartych na ML z Amazon DevOps Guru do strumienia zdarzen Datadog

Porządkowanie

Aby usunąć utworzoną przykładową aplikację, otwórz nowy terminal w swoim środowisku Cloud 9. Teraz wpisz poniższe polecenie AWS CLI i przekaż nazwę stosu podaną w kroku wdrażania.

aws cloudformation delete-stack --stack-name

Alternatywnie możesz również użyć konsoli AWS CloudFormation, aby usunąć stos. 

Wnioski

W tym artykule opisano, w jaki sposób Amazon DevOps Guru monitoruje zasoby w określonym regionie konta AWS, automatycznie wykrywając problemy operacyjne, przewidując potencjalne wyczerpanie zasobów, identyfikując prawdopodobne przyczyny i zalecając działania naprawcze. Opisuje szyte na miarę rozwiązanie umożliwiające integrację spostrzeżeń DevOps Guru z Datadog, usprawniając zarządzanie i nadzór nad usługami AWS. To rozwiązanie pomaga klientom korzystającym z Datadog zwiększyć efektywność operacyjną, dostarczając spersonalizowane spostrzeżenia, alerty w czasie rzeczywistym i możliwości zarządzania bezpośrednio z DevOps Guru, oferując ujednolicony interfejs do szybkiego przywracania usług i systemów.

Aby rozpocząć uzyskiwanie wglądu operacyjnego w swoją infrastrukturę AWS za pomocą Datadog, przejdź do strony dokumentacji Amazon DevOps Guru.

 

Źródło: AWS

Case Studies
Referencje

Jesteśmy ogromnie zadowoleni ze współpracy z firmą Hostersi. Ich specjaliści doradzili nam rozwiązanie, które dało nam stabilną, skalowalną infrastrukturę, która umożliwia obsłużenie ciągle rosnącego ruchu związanego z COVID-19

Jakub Sperczyński
Prezes Zarządu EduNect
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.