AWS Solutions Architect · Lektion

CloudWatch Logs og Log Insights

Saml logs fra EC2, Lambda og containere i loggrupper, og kør CloudWatch Logs Insights-forespørgsler for at finde fejl og mønstre

Lektion 3 af 413 trin

CloudWatch Logs og Log Insights er en gratis AWS Solutions Architect-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i AWS Solutions Architect, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.

Oversigt over CloudWatch Logs

Amazon CloudWatch Logs er en fuldt administreret tjeneste til logaggregering, der indsamler, gemmer og analyserer logdata fra AWS-tjenester og dine egne applikationer. I modsætning til traditionel loghåndtering, hvor du opretter en SSH-forbindelse til servere for at læse filer, samler CloudWatch Logs alle logge i et holdbart, krypteret lager med indbygget forespørgsel, filtrering, udtræk af metrikker og styring af opbevaringsperioder. Tjenesten integreres direkte med EC2, Lambda, ECS, EKS, API Gateway, CloudTrail og VPC Flow Logs.

Loggrupper og logstrømme

Logge organiseres hierarkisk: En loggruppe er en navngiven beholder til logge, der har de samme indstillinger for opbevaring og adgangskontrol (f.eks. /aws/lambda/my-function). I en loggruppe repræsenterer hver logstrøm en enkelt kilde til sekventielle loghændelser — én EC2-instans, én Lambda-container eller én ECS-opgave. En loggruppe kan have tusindvis af logstrømme, men hver strøm tilhører præcis én loggruppe.

# 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

Afsendelse af logge fra Lambda og EC2

AWS Lambda sender automatisk alt stdout- og stderr-output til CloudWatch Logs — du skal blot sørge for, at Lambdas udførelsesrolle indeholder logs:CreateLogGroup, logs:CreateLogStream og logs:PutLogEvents. For EC2-instanser installerer du CloudWatch Agent og konfigurerer, hvilke logfiler der skal følges (f.eks. /var/log/nginx/access.log), hvilken loggruppe der skal skrives til, og hvilket mønster der identificerer de enkelte logposter.

# 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 er en interaktiv forespørgselsmotor, der lader dig søge i og analysere logdata ved hjælp af et specialiseret forespørgselssprog. Du kan køre forespørgsler på tværs af en eller flere loggrupper, filtrere efter tidsinterval, udtrække felter fra strukturerede eller ustrukturerede loglinjer, aggregere data og visualisere resultater som søjlediagrammer eller tidsserier. Forespørgsler køres efter behov og faktureres pr. GB scannede data — strukturering af logge som JSON reducerer scanningsmængden betydeligt.

# 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'

Forespørgselssproget i Logs Insights

Forespørgselssproget i Logs Insights bruger kommandoer adskilt af pipes: fields vælger, hvilke felter der skal vises, filter indsnævrer hændelser (understøtter regulære udtryk med like og =~), stats aggregerer data, sort sorterer resultater, og limit begrænser antallet af resultater. Tjenesten finder automatisk felter i JSON-formaterede loglinjer. For ustrukturerede logge kan du fortolke værdier ved hjælp af parse med glob- eller regulære udtryksmønstre.

# 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

Metrikfiltre: Fra logge til metrikker

Metrikfiltre scanner løbende indkommende loghændelser for mønstre og øger en brugerdefineret CloudWatch-metrik, hver gang der findes et match. Du kan f.eks. oprette et metrikfilter på en Lambda-loggruppe, der øger metrikken ErrorCount, hver gang en loglinje indeholder ERROR. Derefter opretter du en CloudWatch-alarm på denne metrik for at advare dit team. På den måde omdanner du logge til handlingsrettede metrikker uden at gemme resultaterne i en separat database.

# 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

Logabonnementer og streaming

Et abonnementsfilter streamer loghændelser næsten i realtid til en anden tjeneste til behandling eller lagring. Du kan streame til AWS Lambda (for at transformere og dirigere logge), Amazon Kinesis Data Streams (til behandling af store logmængder) eller Amazon Kinesis Firehose (for at levere til S3, OpenSearch eller Splunk). Hver loggruppe understøtter op til to abonnementsfiltre. Streaming af logge på tværs af konti kræver en destination med en passende ressourcetilladelsespolitik.

# 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'

Opbevaringspolitikker og omkostningsstyring

CloudWatch Logs gemmer som standard data på ubestemt tid, hvilket kan blive dyrt. Angiv opbevaringspolitikker for hver loggruppe, så gamle loghændelser slettes automatisk. Almindelige opbevaringsperioder er 7 dage for fejlfindingslogge, 30 dage for applikationslogge og 1-5 år for revisionslogge. Du kan eksportere loggrupper til S3 til langsigtet arkivering til lave omkostninger ved hjælp af API'et create-export-task, men eksporter er batchhandlinger og foregår ikke 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 registrerer metadata om IP-trafik, der strømmer til og fra netværksgrænseflader i din VPC, dine undernet eller individuelle ENI'er. De gemmes i CloudWatch Logs eller S3. Flowlogge indeholder kilde-IP, destinations-IP, port, protokol, antal pakker, antal bytes, handling (ACCEPT eller REJECT) og tidsstempel. De er uvurderlige til fejlfinding af regler for sikkerhedsgrupper og NACL'er, registrering af portscanninger og kontrol af trafikmønstre — men de registrerer IKKE de faktiske pakkeindhold.

# 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

Forespørgsler i VPC Flow Logs med Insights

CloudWatch Logs Insights er særligt effektivt til analyse af VPC Flow Logs. Du kan hurtigt identificere afvist trafik, finde de største trafikproducenter efter datamængde, registrere usædvanlige forbindelser eller isolere trafik til en bestemt instans. Flowlogformatet er som standard adskilt af mellemrum, men hvis du udgiver logge i JSON-format til CloudWatch Logs, bliver feltudtræk automatisk i Insights-forespørgsler.

# 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

Kryptering af logge med KMS

CloudWatch Logs krypterer som standard alle data i hvile ved hjælp af AWS-administrerede nøgler. For øget sikkerhed — især i regulerede miljøer — kan du knytte en kundeadministreret KMS-nøgle til en loggruppe. Det giver dig kontrol over nøglerotation og adgang og gør det muligt at tilbagekalde adgangen til alle logdata ved at deaktivere nøglen. KMS-nøglen skal have en nøglepolitik, der giver CloudWatch Logs tilladelse til at bruge den til kryptering og 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}'

Hurtigt tjek

Test din forståelse af AWS Solutions Architect (SAA-C03)-begreberne fra denne lektion.

Opsummering af lektionen

I denne lektion lærte du, at loggrupper og -streams organiserer logs efter kilde med konfigurerbar opbevaringsperiode, at Logs Insights lader dig forespørge på og aggregere logdata med et effektivt forespørgselssprog baseret på pipes, og at metric filters konverterer logmønstre til CloudWatch-metrics, der kan udløse alarmer. Herefter undersøger vi CloudWatch Dashboards og Container Insights for operationelt overblik.

Gratis at komme i gang

Lær AWS Solutions Architect med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “CloudWatch Logs og Log Insights” gratis?

Ja — alle 3 lektioner i læringssporet AWS Solutions Architect, inklusive “CloudWatch Logs og Log Insights”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “CloudWatch Logs og Log Insights”?

Saml logs fra EC2, Lambda og containere i loggrupper, og kør CloudWatch Logs Insights-forespørgsler for at finde fejl og mønstre Du øver dig i AWS Solutions Architect med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på AWS Solutions Architect?

Der kræves ingen tidligere erfaring. AWS Solutions Architect på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “CloudWatch Logs og Log Insights”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne AWS Solutions Architect-lektion?

Ja. Alle AWS Solutions Architect-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. CloudWatch-metrikker, namespaces og dimensioner
  2. CloudWatch-alarmer og sammensatte alarmer
  3. CloudWatch Logs og Log Insights
  4. CloudWatch-dashboards og Container Insights
← Tilbage til AWS Solutions Architect