Logowanie i metryki w Amazon CloudWatch

Wdrażanie aplikacji na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Czy to awaria?

  • Klient zgłasza, że aplikacja nie działa
  • Nie masz danych, żeby to potwierdzić ani wykluczyć
  • CloudWatch zamienia domysły w konkretne odpowiedzi

Panel monitorowania ze znakiem zapytania — nie wiadomo, czy usługa działa, czy jest niedostępna

Wdrażanie aplikacji na AWS

Logowanie, monitorowanie i obserwowalność

Diagram trójkolumnowy: logowanie jako niezmienne rekordy zdarzeń, monitorowanie jako progi metryk z alarmami, obserwowalność jako korelowanie danych w celu odpowiedzi na nowe pytania

  • Logowanie: rejestrowanie zdarzeń w momencie ich wystąpienia
  • Monitorowanie: śledzenie znanych metryk względem progów
  • Obserwowalność: zadawanie nowych pytań na podstawie danych
  • Potrzebujesz wszystkich trzech, żeby działać pewnie
Wdrażanie aplikacji na AWS

Grupy logów, strumienie i retencja

  • Grupa logów: nazwany kontener dla powiązanych logów
  • Strumień logów: sekwencja zdarzeń z jednego źródła
  • Retencja: czas przechowywania logów
  • Logi kosztują — ustawiaj retencję świadomie

Hierarchia CloudWatch Logs: grupa logów zawierająca wiele strumieni, każdy strumień z uporządkowaną czasowo sekwencją zdarzeń, ustawienie okresu retencji i informacja o kosztach

Wdrażanie aplikacji na AWS

Metryki i metryki niestandardowe

  • Metryki: dane liczbowe w postaci szeregów czasowych
  • AWS automatycznie publikuje wiele metryk usług
  • Metryki niestandardowe: liczby emitowane przez twoją aplikację
  • Wymiary pozwalają filtrować metrykę według atrybutu

Metryki CloudWatch: automatycznie publikowane metryki usług AWS po lewej, metryka niestandardowa z wymiarami po prawej oraz wykres szeregu czasowego z linią progu alarmu

Wdrażanie aplikacji na AWS

Osadzony format metryk

Pojedyncza ustrukturyzowana linia logu zawiera wartości metryk oraz blok _aws, który informuje CloudWatch, które pola są metrykami:

{
  "_aws": {
    "CloudWatchMetrics": [
      {
        "Namespace": "OrdersApp",
        "Dimensions": [["customerTier"]],
        "Metrics": [{ "Name": "OrderLatencyMs", "Unit": "Milliseconds" }]
      }
    ]
  },
  "customerTier": "premium",
  "OrderLatencyMs": 142
}
Wdrażanie aplikacji na AWS

Dashboardy i alarmy

Panel widgetów dashboardu CloudWatch po lewej i automat stanów alarmu ze stanami OK, ALARM i INSUFFICIENT_DATA po prawej, z powiadomieniami SNS kierowanymi do e-maila i automatyzacji

  • Dashboard: jeden ekran wykresów i widgetów
  • Alarm: wyzwalany, gdy metryka przekroczy próg
  • Alarmy kierują do SNS, a stamtąd na e-mail, SMS lub do automatyzacji
  • Twórz alarmy na objawy odczuwane przez użytkowników, nie na każdą metrykę
Wdrażanie aplikacji na AWS

Strategia ustrukturyzowanego logowania

  • Loguj w formacie JSON, nie jako zwykły tekst
  • Umieszczaj znacznik czasu, poziom, ID żądania i ID użytkownika
  • Pola ustrukturyzowane można filtrować i odpytywać
  • Spójność między usługami umożliwia korelację danych

Ustrukturyzowana linia logu JSON z polami timestamp, level, requestId i userId oraz zapytanie Logs Insights pokazujące, jak nazwane pola umożliwiają precyzyjne filtrowanie i agregację

Wdrażanie aplikacji na AWS

Czas na praktykę!

Wdrażanie aplikacji na AWS

Preparing Video For Download...