Log e metriche con Amazon CloudWatch

Distribuire applicazioni su AWS

Dunieski Otano

Amazon Web Services Solutions Architect

È giù?

  • Un cliente dice che l'app non funziona
  • Non hai dati per confermare o smentire
  • CloudWatch trasforma ipotesi in risposte

Una dashboard di monitoraggio con un punto interrogativo, incerta se il servizio sia attivo o giù

Distribuire applicazioni su AWS

Logging vs monitoring vs observability

Diagramma a tre colonne che distingue logging come registri di eventi immutabili, monitoring come soglie di metriche con allarmi e observability come correlazione dei dati per rispondere a nuove domande

  • Logging: registra eventi discreti quando accadono
  • Monitoring: traccia metriche note rispetto a soglie
  • Observability: poni nuove domande ai tuoi dati
  • Servono tutti e tre per operare con fiducia
Distribuire applicazioni su AWS

Log group, log stream e retention

  • Log group: contenitore nominato per log correlati
  • Log stream: sequenza da un'unica fonte
  • Retention: per quanto tempo si conservano i log
  • I log costano; imposta la retention con criterio

Gerarchia CloudWatch Logs: log group che contiene più log stream, ciascuno con una sequenza di eventi ordinati nel tempo, con impostazione del periodo di retention e nota sui costi

Distribuire applicazioni su AWS

Metriche e metriche personalizzate

  • Metriche: dati numerici in serie temporale
  • AWS pubblica automaticamente molte metriche di servizio
  • Metriche personalizzate: numeri emessi dalla tua app
  • Le dimensioni suddividono una metrica per attributo

Metriche CloudWatch: a sinistra metriche dei servizi AWS pubblicate automaticamente, a destra metrica personalizzata con dimensioni e grafico a serie temporale con linea di soglia dell'allarme

Distribuire applicazioni su AWS

Embedded Metric Format

Una singola riga di log strutturata contiene i valori delle tue metriche più un blocco _aws che indica a CloudWatch quali campi sono metriche:

{
  "_aws": {
    "CloudWatchMetrics": [
      {
        "Namespace": "OrdersApp",
        "Dimensions": [["customerTier"]],
        "Metrics": [{ "Name": "OrderLatencyMs", "Unit": "Milliseconds" }]
      }
    ]
  },
  "customerTier": "premium",
  "OrderLatencyMs": 142
}
Distribuire applicazioni su AWS

Dashboard e allarmi

Pannello widget di una dashboard CloudWatch a sinistra e macchina a stati dell'allarme con stati OK, ALARM e INSUFFICIENT_DATA a destra, instradamento SNS a email e automazione

  • Dashboard: una schermata di grafici e widget
  • Alarm: scatta quando una metrica supera una soglia
  • Gli allarmi inviano a SNS, poi email, SMS o automazione
  • Allarma sui sintomi percepiti dagli utenti, non su ogni metrica
Distribuire applicazioni su AWS

Una strategia di logging strutturato

  • Fai log in JSON, non testo libero
  • Includi timestamp, livello, request ID, user ID
  • Campi strutturati sono filtrabili e interrogabili
  • Coerenza tra servizi consente la correlazione

Riga di log JSON strutturata con campi timestamp, level, requestId e userId, e una query Logs Insights che mostra come i campi nominati permettano filtri e aggregazioni precisi

Distribuire applicazioni su AWS

Esercitiamoci!

Distribuire applicazioni su AWS

Preparing Video For Download...