Logování a metriky s Amazon CloudWatch

Nasazování aplikací na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Je to nedostupné?

  • Zákazník říká, že aplikace nefunguje
  • Nemáš žádná data, která by to potvrdila nebo vyvrátila
  • CloudWatch mění dohady na odpovědi

Monitorovací dashboard s otazníkem – není jasné, zda je služba v pořádku nebo nedostupná

Nasazování aplikací na AWS

Logování vs. monitoring vs. observabilita

Třísloupkový diagram rozlišující logování jako neměnné záznamy událostí, monitoring jako prahové hodnoty metrik s alarmy a observabilitu jako korelaci dat pro zodpovězení nových otázek

  • Logování: zaznamenávání jednotlivých událostí v reálném čase
  • Monitoring: sledování metrik vůči prahovým hodnotám
  • Observabilita: pokládání nových otázek nad daty
  • K sebejistému provozu potřebuješ všechny tři
Nasazování aplikací na AWS

Log groups, log streams a retention

  • Log group: pojmenovaný kontejner pro související logy
  • Log stream: posloupnost událostí z jednoho zdroje
  • Retention: jak dlouho jsou logy uchovávány
  • Logy něco stojí – nastav dobu uchování záměrně

Hierarchie CloudWatch Logs: log group obsahující více log streamů, každý stream zobrazuje časově seřazenou posloupnost událostí, nastavení doby uchování a upozornění na náklady

Nasazování aplikací na AWS

Metriky a vlastní metriky

  • Metriky: číselná data jako časová řada
  • AWS automaticky publikuje mnoho metrik služeb
  • Vlastní metriky: čísla, která emituje tvoje aplikace
  • Dimenze rozdělují metriku podle atributů

Metriky CloudWatch: metriky AWS služeb automaticky publikované vlevo, vlastní metrika s dimenzemi vpravo a graf časové řady s prahovou linií alarmu

Nasazování aplikací na AWS

Formát vložené metriky

Jeden strukturovaný řádek logu nese hodnoty metrik a blok _aws, který říká CloudWatch, která pole jsou metriky:

{
  "_aws": {
    "CloudWatchMetrics": [
      {
        "Namespace": "OrdersApp",
        "Dimensions": [["customerTier"]],
        "Metrics": [{ "Name": "OrderLatencyMs", "Unit": "Milliseconds" }]
      }
    ]
  },
  "customerTier": "premium",
  "OrderLatencyMs": 142
}
Nasazování aplikací na AWS

Dashboardy a alarmy

Panel widgetů dashboardu CloudWatch vlevo a stavový automat alarmu se stavy OK, ALARM a INSUFFICIENT_DATA vpravo, směrování SNS notifikací na e-mail a automatizaci

  • Dashboard: jedna obrazovka grafů a widgetů
  • Alarm: spustí se, když metrika překročí prahovou hodnotu
  • Alarmy směřují na SNS, pak na e-mail, SMS nebo automatizaci
  • Nastav alarmy na příznaky, které vnímají uživatelé, ne na každou metriku
Nasazování aplikací na AWS

Strategie strukturovaného logování

  • Loguj jako JSON, ne jako prostý text
  • Uváděj timestamp, level, request ID, user ID
  • Strukturovaná pole lze filtrovat a dotazovat
  • Konzistence napříč službami umožňuje korelaci

Strukturovaný řádek logu ve formátu JSON s poli timestamp, level, requestId a userId a dotaz Logs Insights ukazující, jak pojmenovaná pole umožňují přesné filtrování a agregaci

Nasazování aplikací na AWS

Pojďme cvičit!

Nasazování aplikací na AWS

Preparing Video For Download...