Loggning och mätvärden med Amazon CloudWatch

Driftsättning av applikationer på AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Är den nere?

  • En kund säger att appen inte fungerar
  • Du har ingen data som bekräftar eller avfärdar det
  • CloudWatch omvandlar gissningar till svar

En övervakningsdashboard med ett frågetecken, oklart om tjänsten är uppe eller nere

Driftsättning av applikationer på AWS

Loggning vs övervakning vs observerbarhet

Tredelat diagram som skiljer loggning som oföränderliga händelseposter, övervakning som mätvärdsgränser med larm, och observerbarhet som korrelering av data för att besvara nya frågor

  • Loggning: registrera diskreta händelser i realtid
  • Övervakning: spåra kända mätvärden mot gränsvärden
  • Observerbarhet: ställ nya frågor till din data
  • Du behöver alla tre för att driva tjänster tryggt
Driftsättning av applikationer på AWS

Logggrupper, loggströmmar och kvarhållning

  • Logggrupp: en namngiven behållare för relaterade loggar
  • Loggström: en sekvens från en enda källa
  • Kvarhållning: hur länge loggar sparas
  • Loggar kostar pengar – sätt kvarhållningstid medvetet

CloudWatch Logs-hierarki: logggrupp med flera loggströmmar, varje ström visar en tidssorterad händelsesekvens, med inställning för kvarhållningstid och kostnadsinformation

Driftsättning av applikationer på AWS

Mätvärden och anpassade mätvärden

  • Mätvärden: numerisk tidsseriedata
  • AWS publicerar många tjänstemätvärden automatiskt
  • Anpassade mätvärden: tal som din app skickar ut
  • Dimensioner delar upp ett mätvärde efter attribut

CloudWatch-mätvärden: AWS-tjänstemätvärden som publiceras automatiskt till vänster, anpassat mätvärde med dimensioner till höger, och ett tidsseriediagram med en larmgräns

Driftsättning av applikationer på AWS

Det inbäddade måttformatet

En enda strukturerad loggrad innehåller dina mätvärden samt ett _aws-block som talar om för CloudWatch vilka fält som är mätvärden:

{
  "_aws": {
    "CloudWatchMetrics": [
      {
        "Namespace": "OrdersApp",
        "Dimensions": [["customerTier"]],
        "Metrics": [{ "Name": "OrderLatencyMs", "Unit": "Milliseconds" }]
      }
    ]
  },
  "customerTier": "premium",
  "OrderLatencyMs": 142
}
Driftsättning av applikationer på AWS

Dashboards och larm

CloudWatch-dashboardwidget till vänster och larmtillståndsmaskin med tillstånden OK, ALARM och INSUFFICIENT_DATA till höger, SNS-avisering vidarebefordrar till e-post och automatisering

  • Dashboard: en skärm med diagram och widgetar
  • Larm: utlöses när ett mätvärde överskrider ett gränsvärde
  • Larm skickar till SNS, sedan e-post, SMS eller automatisering
  • Larm på symptom som användare märker, inte på varje mätvärde
Driftsättning av applikationer på AWS

En strategi för strukturerad loggning

  • Logga som JSON, inte fritext
  • Inkludera tidsstämpel, nivå, begäran-ID, användar-ID
  • Strukturerade fält kan filtreras och frågas mot
  • Konsekvent struktur över tjänster möjliggör korrelering

Strukturerad JSON-loggrad med fälten timestamp, level, requestId och userId, samt en Logs Insights-fråga som visar hur namngivna fält möjliggör exakt filtrering och aggregering

Driftsättning av applikationer på AWS

Nu kör vi en övning!

Driftsättning av applikationer på AWS

Preparing Video For Download...