AWS Solutions Architect · Lektion

CloudWatch Logs och Log Insights

Samla loggar från EC2, Lambda och containrar i logggrupper och kör CloudWatch Logs Insights-frågor för att hitta fel och mönster.

Lektion 3 av 413 steg

CloudWatch Logs och Log Insights är en gratis lektion i AWS Solutions Architect på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för AWS Solutions Architect, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.

Översikt över CloudWatch Logs

Amazon CloudWatch Logs är en fullständigt hanterad tjänst för loggaggregering som samlar in, lagrar och analyserar loggdata från AWS-tjänster och Era egna applikationer. Till skillnad från traditionell logghantering, där Ni ansluter till servrar via SSH för att läsa filer, centraliserar CloudWatch Logs alla loggar i en beständig och krypterad lagring med inbyggd sökning, filtrering, extrahering av mätvärden och hantering av lagringsperioder. Tjänsten integrerar direkt med EC2, Lambda, ECS, EKS, API Gateway, CloudTrail och VPC Flow Logs.

Logggrupper och loggströmmar

Loggar organiseras hierarkiskt: en logggrupp är en namngiven behållare för loggar som delar samma inställningar för lagringsperiod och åtkomstkontroll (till exempel /aws/lambda/my-function). I en logggrupp representerar varje loggström en enskild källa med sekventiella logghändelser — en EC2-instans, en Lambda-container eller en ECS-uppgift. En logggrupp kan ha tusentals strömmar, men varje ström tillhör exakt en logggrupp.

# Create a log group with 30-day retention
aws logs create-log-group \
  --log-group-name /myapp/production/api

aws logs put-retention-policy \
  --log-group-name /myapp/production/api \
  --retention-in-days 30

# List log streams in a group
aws logs describe-log-streams \
  --log-group-name /myapp/production/api \
  --order-by LastEventTime \
  --descending

Skicka loggar från Lambda och EC2

AWS Lambda skickar automatiskt all stdout- och stderr-utdata till CloudWatch Logs — Ni behöver bara se till att Lambdas exekveringsroll innehåller logs:CreateLogGroup, logs:CreateLogStream och logs:PutLogEvents. För EC2-instanser installerar Ni CloudWatch Agent och konfigurerar vilka loggfiler som ska följas (till exempel /var/log/nginx/access.log), vilken logggrupp som ska användas och vilket mönster som identifierar enskilda loggposter.

# CloudWatch Agent config for tailing an application log file
# /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
# {
#   "logs": {
#     "logs_collected": {
#       "files": {
#         "collect_list": [{
#           "file_path": "/var/log/myapp/app.log",
#           "log_group_name": "/myapp/production/api",
#           "log_stream_name": "{instance_id}",
#           "timestamp_format": "%Y-%m-%dT%H:%M:%S"
#         }]
#       }
#     }
#   }
# }

CloudWatch Logs Insights

CloudWatch Logs Insights är en interaktiv frågemotor som låter Er söka i och analysera loggdata med hjälp av ett särskilt frågespråk. Ni kan köra frågor över en eller flera logggrupper, filtrera efter tidsintervall, extrahera fält från strukturerade eller ostrukturerade loggrader, aggregera data och visualisera resultat som stapeldiagram eller tidsserier. Frågor körs på begäran och debiteras per GB genomsökt data — om Ni strukturerar loggar som JSON minskar genomsökningsvolymen avsevärt.

# Find the top 10 slowest Lambda invocations in the last hour
aws logs start-query \
  --log-group-name /aws/lambda/my-function \
  --start-time $(date -d '1 hour ago' +%s) \
  --end-time $(date +%s) \
  --query-string 'filter @type = "REPORT"
| fields @requestId, @duration
| sort @duration desc
| limit 10'

Frågespråket i Logs Insights

Frågespråket i Logs Insights använder kommandon som separeras med rör: fields väljer vilka fält som ska visas, filter begränsar händelser (stöder reguljära uttryck med like och =~), stats aggregerar data, sort sorterar resultat och limit begränsar antalet resultat. Tjänsten identifierar automatiskt fält i JSON-formaterade loggrader. För ostrukturerade loggar kan Ni tolka värden med parse och glob- eller regex-mönster.

# Count errors by status code in the last 24 hours
fields @timestamp, @message
| filter @message like /ERROR/
| parse @message '* * * [*] "* *" * *' as host, user, datetime, request, method, status, bytes
| stats count(*) as errorCount by status
| sort errorCount desc
| limit 20

Mätvärdesfilter: från loggar till mätvärden

Mätvärdesfilter genomsöker kontinuerligt inkommande logghändelser efter mönster och ökar ett anpassat CloudWatch-mätvärde varje gång en matchning hittas. Ni kan till exempel skapa ett mätvärdesfilter för en Lambda-logggrupp som ökar mätvärdet ErrorCount varje gång en loggrad innehåller ERROR. Därefter skapar Ni ett CloudWatch-larm för detta mätvärde för att meddela teamet. På så sätt omvandlas loggar till användbara mätvärden utan att resultaten behöver lagras i en separat databas.

# Create a metric filter that counts ERROR lines
aws logs put-metric-filter \
  --log-group-name /myapp/production/api \
  --filter-name ErrorCount \
  --filter-pattern 'ERROR' \
  --metric-transformations \
    metricName=ApplicationErrors,metricNamespace=MyApp,metricValue=1,defaultValue=0

# Now create an alarm on the resulting metric
aws cloudwatch put-metric-alarm \
  --alarm-name HighErrorRate \
  --metric-name ApplicationErrors \
  --namespace MyApp \
  --statistic Sum \
  --period 60 \
  --evaluation-periods 1 \
  --threshold 10 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:Ops

Loggprenumerationer och strömning

Ett prenumerationsfilter strömmar logghändelser i nära realtid till en annan tjänst för bearbetning eller lagring. Ni kan strömma till AWS Lambda (för att omvandla och dirigera loggar), Amazon Kinesis Data Streams (för loggbearbetning med hög volym) eller Amazon Kinesis Firehose (för leverans till S3, OpenSearch eller Splunk). Varje logggrupp stöder upp till två prenumerationsfilter. Loggströmning mellan konton kräver en destination med en lämplig resurspolicy.

# Stream all logs containing ERROR to a Kinesis Firehose for S3 archiving
aws logs put-subscription-filter \
  --log-group-name /myapp/production/api \
  --filter-name ErrorsToFirehose \
  --filter-pattern 'ERROR' \
  --destination-arn arn:aws:firehose:us-east-1:111122223333:deliverystream/LogArchive \
  --distribution 'ByLogStreamName'

Lagringsprinciper och kostnadshantering

Som standard lagrar CloudWatch Logs data på obestämd tid, vilket kan bli dyrt. Ange lagringsprinciper för varje logggrupp så att gamla logghändelser raderas automatiskt. Vanliga lagringsperioder är 7 dagar för felsökningsloggar, 30 dagar för applikationsloggar och 1–5 år för granskningsloggar. Ni kan exportera logggrupper till S3 för långsiktig arkivering till låg kostnad med API:et create-export-task, men exporter är batchåtgärder och sker inte i realtid.

# Set retention on all log groups that have no retention policy
aws logs describe-log-groups \
  --query 'logGroups[?!retentionInDays].logGroupName' \
  --output text | tr '\t' '\n' | while read lg; do
    aws logs put-retention-policy \
      --log-group-name "$lg" \
      --retention-in-days 90
    echo "Set 90-day retention on $lg"
done

VPC Flow Logs

VPC Flow Logs samlar in metadata om IP-trafik till och från nätverksgränssnitt i Er VPC, Era undernät eller enskilda ENI:er. De lagras i CloudWatch Logs eller S3. Flödesloggar innehåller käll-IP, destinations-IP, port, protokoll, antal paket, antal byte, åtgärd (ACCEPT eller REJECT) och tidsstämpel. De är ovärderliga för felsökning av regler för säkerhetsgrupper och NACL:er, upptäckt av portskanningar och granskning av trafikmönster — men de fångar INTE själva paketens nyttolast.

# Enable VPC Flow Logs to CloudWatch Logs
aws ec2 create-flow-logs \
  --resource-ids vpc-0abc1234def567890 \
  --resource-type VPC \
  --traffic-type ALL \
  --log-destination-type cloud-watch-logs \
  --log-group-name /aws/vpc/flow-logs \
  --deliver-logs-permission-arn arn:aws:iam::111122223333:role/FlowLogsRole

Fråga VPC Flow Logs med Insights

CloudWatch Logs Insights är särskilt kraftfullt för analys av VPC Flow Logs. Ni kan snabbt identifiera nekad trafik, hitta de största trafikproducenterna baserat på bytevolym, upptäcka ovanliga anslutningar eller isolera trafik till en specifik instans. Flödesloggformatet är som standard blankstegsseparerat, men om Ni publicerar loggarna i JSON-format till CloudWatch Logs sker fältextraheringen automatiskt i Insights-frågor.

# Find top 10 source IPs by rejected byte volume in the last day
fields srcAddr, dstAddr, dstPort, action, bytes
| filter action = 'REJECT'
| stats sum(bytes) as rejectedBytes by srcAddr
| sort rejectedBytes desc
| limit 10

Loggkryptering med KMS

CloudWatch Logs krypterar som standard all data i vila med AWS-hanterade nycklar. För förbättrad säkerhet — särskilt i reglerade miljöer — kan Ni koppla en kundhanterad KMS-nyckel till en logggrupp. Då får Ni kontroll över nyckelrotation och åtkomst och kan återkalla åtkomsten till all loggdata genom att inaktivera nyckeln. KMS-nyckeln måste ha en nyckelpolicy som ger CloudWatch Logs behörighet att använda den för kryptering och dekryptering.

# Associate a KMS key with a log group
aws logs associate-kms-key \
  --log-group-name /myapp/production/api \
  --kms-key-id arn:aws:kms:us-east-1:111122223333:key/KEY_ID

# Verify encryption is configured
aws logs describe-log-groups \
  --log-group-name-prefix /myapp/production \
  --query 'logGroups[].{Name:logGroupName,KmsKey:kmsKeyId}'

Snabbkontroll

Testa dina kunskaper om AWS Solutions Architect-koncepten (SAA-C03) från den här lektionen.

Sammanfattning av lektionen

I den här lektionen har du lärt dig att log groups and streams organiserar loggar efter källa med konfigurerbar lagringstid, att Logs Insights låter dig söka i och aggregera loggdata med ett kraftfullt frågespråk baserat på pipeoperatorer, samt att metric filters omvandlar loggmönster till CloudWatch-mätvärden som kan utlösa larm. Härnäst utforskar vi CloudWatch Dashboards och Container Insights för operativ överblick.

Gratis att börja

Lär dig AWS Solutions Architect med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”CloudWatch Logs och Log Insights” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen AWS Solutions Architect, inklusive ”CloudWatch Logs och Log Insights”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.

Vad lär jag mig i ”CloudWatch Logs och Log Insights”?

Samla loggar från EC2, Lambda och containrar i logggrupper och kör CloudWatch Logs Insights-frågor för att hitta fel och mönster. Ni övar på AWS Solutions Architect med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AWS Solutions Architect?

Du behöver inga förkunskaper. Utbildningen i AWS Solutions Architect på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”CloudWatch Logs och Log Insights”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AWS Solutions Architect-lektionen?

Ja. Varje AWS Solutions Architect-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. CloudWatch-mätvärden, namnrymder och dimensioner
  2. CloudWatch-larm och sammansatta larm
  3. CloudWatch Logs och Log Insights
  4. CloudWatch-instrumentpaneler och Container Insights
← Tillbaka till AWS Solutions Architect