Luciano Mammino (@loige)
2021-10-21
Get these slides!
Sono Luciano
Senior Architect @ fourTheorem (Dublin 🇮🇪) 👨💻
Co-Autore di Node.js Design Patterns 👉
Accelerated Serverless | AI as a Service | Platform Modernisation
⭐️ Stiamo assumendo: ti va di lavorare con noi?
🪵
Log strutturati
🔍
Tracing
📈
Metriche
🚨
Allarmi
CloudWatch é un servizio che fornisce:
🪵 Logs (e insights)
📈 Metriche
📊 Dashboard
🚨 Allarmi
🐥 Canaries
🔍 Tracing distribuito (X-Ray)
Soluzioni comuni (as a service)
Soluzioni "fai da te"
Nuove Soluzioni
😍 Un toolkit completo per l'observability
🤩 Colleziona metriche automaticamente per ogni servizio AWS
😟 Tante dashboards, ma organizzate per servizio e non per applicazione!
😢 Zero allarmi pre-configurati!
✅ I prodotti terzi hanno una UX migliore
❌ Bisogna esportare i dati da AWS
❌ Alcune feature potrebbero non essere ben integrate o richiedere integrazioni personalizzate
❌ Potresti restare bloccato in dual-mode
Cloudwatch puó diventare il tuo miglior amico se...
📚 Studi e comprendi tutte le metriche disponibili
📐 Decidi le varie soglie per i tuoi allarmi
📊 Scrive codice (IaC) per creare dashboards per le tue applicazioni
⏰ Scrivi codice (IaC) anche per gli allarmi
⏪ Aggiorni questo codice quando la tua applicazione cambia (e.g. nuovi servizi AWS vengono utilizzati)
📋 Copi ed incolli (e modifichi) tutto questo codice per ogni stack delle tue applicazioni su AWS!
(a.k.a. TANTO DURO LAVORO!)
😇 AWS Well Architected Framework
🏛 5 pilastri
⚙️ Il pilastro "Operational excellence" copre l'argomento "observability"
🧐 Serverless lens applica questi pilastri
👍 Ottima guida sulle metriche da utilizzare
👎 Altra roba da studiare
👎 Devi comunque decidere le soglie
{
"Type":"AWS::CloudWatch::Alarm",
"Properties":{
"ActionsEnabled":true,
"AlarmActions":[
"arn:aws:sns:eu-west-1:665863320777:FTSLICAlarms"
],
"AlarmName":"LambdaThrottles_serverless-test-project-dev-hello",
"AlarmDescription":"Throttles % for serverless-test-project-dev-hello ..",
"EvaluationPeriods":1,
"ComparisonOperator":"GreaterThanThreshold",
"Threshold":0,
"TreatMissingData":"notBreaching",
"Metrics":[
{
"Id":"throttles_pc",
"Expression":"(throttles / throttles + invocations) * 100",
"Label":"% Throttles",
"ReturnData":true
},
{
"Id":"throttles",
"...":"..."
}
]
}
}
[
{
"...":"...",
"MetricStat":{
"Metric":{
"Namespace":"AWS/Lambda",
"MetricName":"Throttles",
"Dimensions":[
{
"Name":"FunctionName",
"Value":"serverless-test-project-dev-hello"
}
]
},
"Period":60,
"Stat":"Sum"
},
"ReturnData":false
},
{
"Id":"invocations",
"MetricStat":{
"Metric":{
"Namespace":"AWS/Lambda",
"MetricName":"Invocations",
"...":"..."
}
}
}
]
Magically generated alarms and dashboards for each application!
la tua applicazione
serverless.yml
Stack CloudFormation
very-big.json
Stack CloudFormation ++
even-bigger.json
sls deploy
SLIC Watch
Deploy ☁️
👀🛠
📈📊
Dai un'occhiata a SLIC Slack
🎀 SLIC Watch ha una buona configurazione di default
📝 ... e puoi comunque cambiare tutti i parametri
🔌 ... o disabilitare specifiche dashboard o allarmi
📣 Crea un Topic SNS come destinazione per gli allarmi (opzionale)
📦 ❯npm i serverless-slic-watch-plugin --save-dev
✍️ Aggiorna serverless.yml per attivare il plugin:
plugins: - serverless-slic-watch-plugin
⚙️ Modifica la configurazione (opzionale)
🚢 ❯ sls deploy
💡 Il repo ufficiale contiene un
🔬Provalo! 🗣 Dacci un feedback! 🌈 Contribuisci!
Cover Photo by Maarten van den Heuvel on Unsplash