CloudWatch Logs en Log Insights
Verzamel logs van EC2, Lambda en containers in loggroepen en voer CloudWatch Logs Insights-query's uit om fouten en patronen te vinden.
CloudWatch Logs en Log Insights is een gratis Cloud & IT Cert Prep-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Cloud & IT Cert Prep. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Cloud & IT Cert Prep bevat in totaal 4 lessen.
Overzicht van CloudWatch Logs
Amazon CloudWatch Logs is een volledig beheerde service voor het verzamelen van loggegevens die loggegevens uit AWS-services en je eigen toepassingen verzamelt, opslaat en analyseert. In tegenstelling tot traditioneel logbeheer, waarbij je via SSH verbinding maakt met servers om bestanden te lezen, centraliseert CloudWatch Logs alle loggegevens in een duurzame, versleutelde opslag met ingebouwde mogelijkheden voor query's, filtering, metriekextractie en beheer van de bewaartermijn. De service integreert standaard met EC2, Lambda, ECS, EKS, API Gateway, CloudTrail en VPC Flow Logs.
Loggroepen en logstreams
Loggegevens zijn hiërarchisch georganiseerd: een loggroep is een benoemde container voor loggegevens met dezelfde instellingen voor bewaartermijn en toegangsbeheer (bijvoorbeeld /aws/lambda/my-function). Binnen een loggroep vertegenwoordigt elke logstream één bron van opeenvolgende loggebeurtenissen — één EC2-instance, één Lambda-container of één ECS-taak. Een loggroep kan duizenden streams bevatten, maar elke stream behoort tot precies één loggroep.
# 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 \
--descendingLoggegevens verzenden vanuit Lambda en EC2
AWS Lambda verzendt alle uitvoer naar stdout en stderr automatisch naar CloudWatch Logs — je hoeft alleen de uitvoeringsrol van Lambda de machtigingen logs:CreateLogGroup, logs:CreateLogStream en logs:PutLogEvents te geven. Voor EC2-instances installeer je de CloudWatch Agent en configureer je welke logbestanden moeten worden gevolgd (bijvoorbeeld /var/log/nginx/access.log), naar welke loggroep ze moeten worden geschreven en welk patroon afzonderlijke logregels identificeert.
# 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 is een interactieve query-engine waarmee je loggegevens kunt doorzoeken en analyseren met een speciaal daarvoor ontworpen querytaal. Je kunt query's uitvoeren over een of meer loggroepen, filteren op tijdsbereik, velden uit gestructureerde of ongestructureerde logregels halen, gegevens aggregeren en resultaten visualiseren als staafdiagrammen of tijdreeksen. Query's worden op aanvraag uitgevoerd en er worden kosten in rekening gebracht per GB gescande gegevens — door loggegevens als JSON te structureren, verklein je het scanvolume aanzienlijk.
# 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'Querytaal van Logs Insights
De querytaal van Logs Insights gebruikt opdrachten die door pipes worden gescheiden: fields selecteert welke velden moeten worden weergegeven, filter beperkt de gebeurtenissen (ondersteunt reguliere expressies met like en =~), stats aggregeert gegevens, sort sorteert resultaten en limit beperkt het aantal resultaten. De service detecteert automatisch velden in logregels met JSON-indeling. Voor ongestructureerde loggegevens kun je waarden parseren met parse en jokerteken- of reguliere-expressiepatronen.
# 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 20Metriekfilters: van loggegevens naar metriek
Metriekfilters scannen binnenkomende loggebeurtenissen continu op patronen en verhogen elke keer dat er een overeenkomst wordt gevonden een aangepaste CloudWatch-metriek. Je kunt bijvoorbeeld een metriekfilter maken voor een Lambda-loggroep dat een metriek ErrorCount verhoogt telkens wanneer een logregel ERROR bevat. Vervolgens maak je een CloudWatch-alarm voor deze metriek om je team te waarschuwen. Zo zet je loggegevens om in bruikbare metriek zonder resultaten in een afzonderlijke database op te slaan.
# 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:OpsLogabonnementen en streaming
Een abonnementsfilter streamt loggebeurtenissen vrijwel in realtime naar een andere service voor verwerking of opslag. Je kunt streamen naar AWS Lambda (om loggegevens te transformeren en door te sturen), Amazon Kinesis Data Streams (voor verwerking van grote hoeveelheden loggegevens) of Amazon Kinesis Firehose (om gegevens naar S3, OpenSearch of Splunk te bezorgen). Elke loggroep ondersteunt maximaal twee abonnementsfilters. Voor het streamen van loggegevens tussen accounts is een bestemming met een geschikt resourcebeleid vereist.
# 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'Bewaarbeleid en kostenbeheer
CloudWatch Logs bewaart gegevens standaard onbeperkt, wat duur kan worden. Stel voor elke loggroep bewaarbeleid in om oude loggebeurtenissen automatisch te verwijderen. Veelgebruikte bewaartermijnen zijn 7 dagen voor foutopsporingsloggegevens, 30 dagen voor toepassingsloggegevens en 1–5 jaar voor auditloggegevens. Je kunt loggroepen naar S3 exporteren voor langdurige, goedkope archivering met de API create-export-task, maar exports zijn batchbewerkingen en niet realtime.
# 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"
doneVPC Flow Logs
VPC Flow Logs leggen metagegevens vast over IP-verkeer van en naar netwerkinterfaces in je VPC, subnetten of afzonderlijke ENI's. Ze worden opgeslagen in CloudWatch Logs of S3. Flow Logs bevatten het bron-IP-adres, doel-IP-adres, de poort, het protocol, het aantal pakketten, het aantal bytes, de actie (ACCEPT of REJECT) en een tijdstempel. Ze zijn onmisbaar voor het oplossen van problemen met beveiligingsgroep- en NACL-regels, het detecteren van poortscans en het controleren van verkeerspatronen — maar ze leggen NIET de daadwerkelijke inhoud van pakketten vast.
# 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/FlowLogsRoleVPC Flow Logs doorzoeken met Insights
CloudWatch Logs Insights is bijzonder krachtig voor analyse van VPC Flow Logs. Je kunt snel afgewezen verkeer identificeren, de grootste gegevensverzenders op basis van het aantal bytes vinden, ongebruikelijke verbindingen detecteren of verkeer naar een specifieke instance isoleren. De indeling van Flow Logs gebruikt standaard spaties als scheidingstekens, maar door gegevens in JSON-indeling naar CloudWatch Logs te publiceren, verloopt veldextractie automatisch in Insights-query's.
# 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 10Loggegevens versleutelen met KMS
CloudWatch Logs versleutelt standaard alle gegevens in rust met door AWS beheerde sleutels. Voor betere beveiliging — vooral in gereguleerde omgevingen — kun je een door de klant beheerde KMS-sleutel aan een loggroep koppelen. Zo krijg je controle over sleutelrotatie en toegang en kun je de toegang tot alle loggegevens intrekken door de sleutel uit te schakelen. Het sleutelbeleid van de KMS-sleutel moet CloudWatch Logs toestemming geven om de sleutel voor versleuteling en ontsleuteling te gebruiken.
# 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}'Korte controle
Test je begrip van de concepten uit AWS Solutions Architect (SAA-C03) in deze les.
Samenvatting van de les
In deze les heb je geleerd dat loggroepen en logstromen logboeken op basis van hun bron organiseren en instelbare bewaartermijnen hebben, dat Logs Insights loggegevens kan opvragen en aggregeren met een krachtige op pijplijnen gebaseerde querytaal, en dat metriekfilters patronen in logboeken omzetten in CloudWatch-metrieken die alarmen kunnen activeren. Hierna bekijken we CloudWatch Dashboards en Container Insights voor operationeel inzicht.
Leer Cloud & IT Cert Prep met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 150
- Lessen
- 600
Veelgestelde vragen
Is de les “CloudWatch Logs en Log Insights” gratis?
Ja — de volledige tekst van “CloudWatch Logs en Log Insights” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Cloud & IT Cert Prep wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Cloud & IT Cert Prep bevat in totaal 4 lessen.
Wat leer ik in “CloudWatch Logs en Log Insights”?
Verzamel logs van EC2, Lambda en containers in loggroepen en voer CloudWatch Logs Insights-query's uit om fouten en patronen te vinden. Je oefent met Cloud & IT Cert Prep door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Cloud & IT Cert Prep te beginnen?
Ervaring vooraf is niet nodig. Cloud & IT Cert Prep op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “CloudWatch Logs en Log Insights”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Cloud & IT Cert Prep?
Ja. Elke les over Cloud & IT Cert Prep bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- CloudWatch-metrics, namespaces en dimensies
- CloudWatch- en samengestelde alarmen
- CloudWatch Logs en Log Insights
- CloudWatch-dashboards en Container Insights