CloudWatch Günlükleri ve Log Insights
EC2, Lambda ve konteyner günlüklerini günlük gruplarında birleştirin ve hataları ve örüntüleri bulmak için CloudWatch Logs Insights sorgularını çalıştırın.
CloudWatch Günlükleri ve Log Insights, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
CloudWatch Logs Genel Bakış
Amazon CloudWatch Logs, AWS hizmetlerinden ve kendi uygulamalarınızdan günlük verilerini toplayan, depolayan ve analiz eden, tamamen yönetilen bir günlük toplama hizmetidir. Günlükleri okumak için sunuculara SSH ile bağlanılan geleneksel günlük yönetiminin aksine CloudWatch Logs, tüm günlükleri yerleşik sorgulama, filtreleme, metrik çıkarma ve saklama yönetimi özelliklerine sahip, dayanıklı ve şifrelenmiş bir depoda merkezileştirir. EC2, Lambda, ECS, EKS, API Gateway, CloudTrail ve VPC Flow Logs ile yerel olarak bütünleşir.
Günlük Grupları ve Günlük Akışları
Günlükler hiyerarşik olarak düzenlenir: bir günlük grubu, aynı saklama ve erişim denetimi ayarlarını paylaşan günlükler için adlandırılmış bir kapsayıcıdır (örneğin, /aws/lambda/my-function). Bir günlük grubunda her günlük akışı, sıralı günlük olaylarının tek bir kaynağını temsil eder — bir EC2 örneği, bir Lambda kapsayıcısı veya bir ECS görevi. Bir günlük grubunda binlerce akış bulunabilir, ancak her akış tam olarak bir günlük grubuna aittir.
# 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 \
--descendingLambda ve EC2'den Günlük Gönderme
AWS Lambda, tüm stdout ve stderr çıktısını otomatik olarak CloudWatch Logs'a gönderir — Lambda yürütme rolüne yalnızca logs:CreateLogGroup, logs:CreateLogStream ve logs:PutLogEvents izinlerini eklemeniz gerekir. EC2 örnekleri için CloudWatch Agent yükleyip hangi günlük dosyalarının izleneceğini (örneğin, /var/log/nginx/access.log), hangi günlük grubuna yazılacağını ve tek tek günlük girdilerini tanımlayan örüntüyü yapılandırırsınız.
# 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, günlük verilerini amaca özel bir sorgu dili kullanarak aramanızı ve analiz etmenizi sağlayan etkileşimli bir sorgu motorudur. Bir veya daha fazla günlük grubu üzerinde sorgular çalıştırabilir, zaman aralığına göre filtreleyebilir, yapılandırılmış veya yapılandırılmamış günlük satırlarından alanlar çıkarabilir, verileri toplulaştırabilir ve sonuçları çubuk grafikler veya zaman serileri olarak görselleştirebilirsiniz. Sorgular isteğe bağlı olarak çalışır ve taranan her GB veri için ücretlendirilir — günlükleri JSON olarak yapılandırmak tarama hacmini önemli ölçüde azaltır.
# 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'Logs Insights Sorgu Dili
Logs Insights sorgu dili, dikey çizgilerle ayrılmış komutlar kullanır: fields hangi alanların görüntüleneceğini seçer, filter olayları daraltır (like ve =~ ile düzenli ifadeleri destekler), stats verileri toplulaştırır, sort sonuçları sıralar ve limit sonuç sayısını sınırlar. Hizmet, JSON biçimli günlük satırlarındaki alanları otomatik olarak keşfeder. Yapılandırılmamış günlüklerde değerleri glob veya düzenli ifade örüntüleriyle parse kullanarak ayrıştırabilirsiniz.
# 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 20Metrik Filtreleri: Günlüklerden Metriklere
Metrik filtreleri, gelen günlük olaylarını örüntüler açısından sürekli tarar ve her eşleşme bulunduğunda özel bir CloudWatch metriğini artırır. Örneğin, bir Lambda günlük grubunda, bir günlük satırı ERROR içerdiğinde ErrorCount metriğini artıran bir metrik filtresi oluşturabilirsiniz. Ardından ekibinizi uyarmak için bu metrik üzerinde bir CloudWatch alarmı oluşturursunuz. Böylece sonuçları ayrı bir veritabanında depolamadan günlüklerinizi eyleme dönüştürülebilir metriklere çevirirsiniz.
# 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:OpsGünlük Abonelikleri ve Akış
Bir abonelik filtresi, günlük olaylarını işleme veya depolama amacıyla neredeyse gerçek zamanlı olarak başka bir hizmete aktarır. Günlükleri AWS Lambda'ya (dönüştürmek ve yönlendirmek için), Amazon Kinesis Data Streams'e (yüksek hacimli günlük işleme için) veya Amazon Kinesis Firehose'a (S3, OpenSearch veya Splunk'a teslim etmek için) aktarabilirsiniz. Her günlük grubu en fazla iki abonelik filtresini destekler. Hesaplar arası günlük akışı için uygun bir kaynak ilkesine sahip bir hedef gerekir.
# 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'Saklama İlkeleri ve Maliyet Yönetimi
CloudWatch Logs varsayılan olarak verileri süresiz saklar; bu durum pahalı olabilir. Eski günlük olaylarını otomatik olarak silmek için her günlük grubunda saklama ilkeleri ayarlayın. Yaygın saklama süreleri hata ayıklama günlükleri için 7 gün, uygulama günlükleri için 30 gün ve denetim günlükleri için 1-5 yıldır. Uzun süreli ve düşük maliyetli arşivleme için create-export-task API'sini kullanarak günlük gruplarını S3'e aktarabilirsiniz; ancak aktarımlar toplu işlemlerdir ve gerçek zamanlı değildir.
# 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, VPC'nizdeki, alt ağlarınızdaki veya tek tek ENI'larınızdaki ağ arabirimlerine gelen ve bu arabirimlerden giden IP trafiği hakkındaki üst verileri yakalar. Bu veriler CloudWatch Logs veya S3'te depolanır. Akış günlükleri kaynak IP'sini, hedef IP'sini, bağlantı noktasını, protokolü, paket sayısını, bayt sayısını, eylemi (ACCEPT veya REJECT) ve zaman damgasını içerir. güvenlik grubu ve NACL kurallarında sorun gidermek, bağlantı noktası taramalarını tespit etmek ve trafik örüntülerini denetlemek için çok değerlidir — ancak gerçek paket içeriklerini yakalamazlar.
# 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/FlowLogsRoleInsights ile VPC Flow Logs Sorgulama
CloudWatch Logs Insights, özellikle VPC Flow Log analizi için güçlüdür. Reddedilen trafiği hızla belirleyebilir, bayt hacmine göre en çok iletişim kuran kaynakları bulabilir, olağan dışı bağlantıları tespit edebilir veya trafiği belirli bir örneğe ayırabilirsiniz. Akış günlüğü biçimi varsayılan olarak boşluklarla ayrılır; ancak CloudWatch Logs'a JSON biçiminde yayımlamak, Insights sorgularında alanların otomatik olarak çıkarılmasını sağlar.
# 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 10KMS ile Günlük Şifreleme
CloudWatch Logs, bekleyen tüm verileri varsayılan olarak AWS tarafından yönetilen anahtarları kullanarak şifreler. Özellikle düzenlemelere tabi ortamlarda daha yüksek güvenlik için bir müşteri tarafından yönetilen KMS anahtarını günlük grubuyla ilişkilendirebilirsiniz. Bu, anahtar döndürme ve erişim üzerinde denetim sahibi olmanızı, anahtarı devre dışı bırakarak tüm günlük verilerine erişimi iptal etmenizi sağlar. KMS anahtarının, CloudWatch Logs'a şifreleme ve şifre çözme için anahtarı kullanma izni veren bir anahtar ilkesine sahip olması gerekir.
# 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}'Hızlı Kontrol
Bu dersteki AWS Çözüm Mimarı (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: log grupları ve akışları, yapılandırılabilir saklama süresiyle günlükleri kaynağa göre düzenler; Logs Insights, güçlü bir ardışık düzen tabanlı sorgu diliyle günlük verilerini sorgulamanızı ve toplamanızı sağlar; metrik filtreleri ise günlük kalıplarını alarmları tetikleyebilen CloudWatch metriklerine dönüştürür. Sırada, operasyonel görünürlük için CloudWatch Panolarını ve Container Insights'ı inceleyeceğiz.
Sıkça Sorulan Sorular
“CloudWatch Günlükleri ve Log Insights” dersi ücretsiz mi?
Evet — “CloudWatch Günlükleri ve Log Insights” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
“CloudWatch Günlükleri ve Log Insights” dersinde ne öğreneceğim?
EC2, Lambda ve konteyner günlüklerini günlük gruplarında birleştirin ve hataları ve örüntüleri bulmak için CloudWatch Logs Insights sorgularını çalıştırın. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“CloudWatch Günlükleri ve Log Insights” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- CloudWatch Ölçümleri, Ad Alanları ve Boyutlar
- CloudWatch Alarmları ve Bileşik Alarmlar
- CloudWatch Günlükleri ve Log Insights
- CloudWatch Panoları ve Container Insights