Amazon CloudWatch, AWS kaynaklarınızın ve uygulamalarınızın performansını izlemenizi sağlayan temel bir hizmettir. CloudWatch Logs ile log verilerinizi toplar, analiz eder ve oluşan sorunlara karşı alarmlar tetikleyebilirsiniz. Bu yazıda, CloudWatch ile log yönetimi ve alarm yapılandırmasında dikkat etmeniz gereken pratik ipuçlarını ve adım adım bir kontrol listesini bulacaksınız.
CloudWatch Logs Nedir ve Neden Kullanmalısınız?
CloudWatch Logs; EC2, Lambda, ECS gibi servislerden gelen logları merkezi bir yerde toplamanıza, bu loglarda belirli desenleri aramak için metrik filtreleri oluşturmanıza ve belirlediğiniz eşikler aşıldığında alarm tetiklemenize olanak tanır. Log yönetimi, hata ayıklama, güvenlik olaylarını takip etme ve performans iyileştirme için kritiktir. Örneğin, bir AWS Step Functions iş akışındaki başarısız adımları tespit etmek için CloudWatch alarmları kullanabilirsiniz.
Log Grupları ve Akışlarını Doğru Yapılandırma
Loglarınızı organize etmek için log grupları (log groups) ve log akışları (log streams) kullanılır. Her uygulama veya servis için ayrı bir log grubu oluşturun. Log akışları genellikle her bir instance veya Lambda çağrısı için otomatik oluşur. İsimlendirme standartları belirleyin; örneğin: /prod/ec2/web-server-1. Bu, arama ve filtreleme işlemlerini kolaylaştırır. Ayrıca, logların saklama süresini (retention) belirleyerek maliyetleri kontrol altına alın. Varsayılan süre sonsuzdur; bunu 7, 14 veya 30 gün gibi makul bir değere indirin.
Metrik Filtreleri ile Değerli Verileri Yakalama
Metrik filtreleri, log akışlarındaki belirli desenleri sayarak özel metrikler oluşturur. Örneğin, ERROR kelimesini içeren log satırlarının sayısını izleyen bir filtre tanımlayabilirsiniz. Bu metrikleri kullanarak alarm oluşturabilir ve hata sayısı anormal bir seviyeye ulaştığında bildirim alabilirsiniz. Filtre oluştururken doğru deseni seçmek önemlidir:
- Desen sözdizimi:
?ERROR ?WARNgibi boşlukla ayrılmış anahtar kelimeler kullanın. - Ölçü birimi: Sayma (count) veya özel bir değer (value) seçin.
- Namespace: Özel metrikleriniz için ayrı bir ad alanı (ör.
Custom/AppLogs) kullanarak varsayılan AWS metriklerinden ayırın.
Alarm Yapılandırmasında Dikkat Edilmesi Gerekenler
CloudWatch alarmları, belirlediğiniz metrik eşikleri aşıldığında SNS bildirimi, Auto Scaling veya Lambda tetikleyebilir. Etkili alarm yapılandırması için şu noktalara dikkat edin:
- Eşik değerleri: İstatistiksel verilerinize göre dinamik eşikler yerine sabit değerler kullanmak genellikle yeterlidir. Ancak mevsimsel desenler için anomaly detection modu tercih edin.
- Değerlendirme dönemi ve veri noktası: Alarmın ne kadar süreyle kaç veri noktasında eşiği aşması gerektiğini belirleyin. Örneğin, 2 dönem (period) boyunca 3 veri noktası. Bu, geçici ani yükselişlerden kaynaklanan yanlış alarmları azaltır.
- Aksiyonlar: Alarm tetiklendiğinde bir SNS konusuna mesaj gönderin ve eğer uygunsa bir Lambda fonksiyonu ile otomatik düzeltme yapın. Örneğin, yüksek CPU alarmına yanıt olarak Auto Scaling politikasını tetikleyebilirsiniz.
Büyük Ölçekli Ortamlarda Log Yönetimi İpuçları
Çok sayıda kaynaktan log toplarken maliyet ve performans dengesini kurmak önemlidir. İşte pratik öneriler:
- Log seviyesi filtreleme: Tüm logları göndermek yerine yalnızca
WARNve üstü seviyeleri CloudWatch'a gönderin. DEBUG seviyesini yerel dosyada tutun. - Log gruplarını abonelik filtreleri ile aktarın: Logları uzun süreli saklama veya analiz için Amazon S3 veya Elasticsearch'e yönlendirin. Bu, CloudWatch Logs maliyetini düşürür.
- Varsayılan log akışlarından kaçının: Örneğin, EC2'de CloudWatch agent'ı yapılandırırken gereksiz log akışlarını (örn. günlük sistem logları) devre dışı bırakın.
- Lambda için reserve concurrency: Lambda fonksiyonlarınızın log gruplarında çok sayıda log akışı oluşmasını engellemek için reserved concurrency ayarlayın.
Sık Yapılan Hatalar ve Çözümleri
- Tüm logları sonsuza kadar saklamak: Retention süresini ayarlamayı unutmayın; aksi takdirde gereksiz maliyet oluşur.
- Alarm eşiğini çok düşük veya yüksek ayarlamak: İlk birkaç hafta alarm geçmişini inceleyerek eşikleri optimize edin.
- Metrik filtresi desenlerini test etmemek: Filtre oluşturduktan sonra
Test Patternbutonunu kullanarak örnek loglarla doğrulama yapın. - Alarm aksiyonlarını eksik bırakmak: Alarm yalnızca e-posta göndermekle kalmamalı; otomatik iyileştirme mekanizmaları da kurulmalıdır.
Kontrol Listesi: CloudWatch Log ve Alarm Kurulumu
- Her uygulama/servis için ayrı log grubu oluşturuldu mu?
- Log gruplarına uygun retention süresi (7-30 gün) atandı mı?
- Önemli hata/uyarı desenleri için metrik filtresi tanımlandı mı?
- Metrik filtresi test edildi ve doğru çalışıyor mu?
- Kritik metrikler için alarm oluşturuldu mu?
- Alarm değerlendirme dönemi ve veri noktası sayısı doğru ayarlandı mı?
- Alarm tetiklendiğinde SNS, Lambda veya Auto Scaling aksiyonu tanımlandı mı?
- Log akışları gereksiz bilgi içermiyor mu? (log seviyesi filtrelemesi yapıldı mı?)
- Büyük ölçekli ortamda loglar S3/Elasticsearch'e yönlendirildi mi?
- Maliyet takibi için CloudWatch Metrics dashboard oluşturuldu mu?
Gerçek Dünyadan Bir Örnek
Bir e-ticaret uygulaması düşünün. Uygulama sunucuları EC2'de çalışıyor ve ödeme işlemleri AWS SQS kullanıyor. CloudWatch Logs ile hem EC2’nin erişim loglarını hem de bir Lambda fonksiyonunun hata loglarını topluyorsunuz. Ödeme başarısızlık sayısını izlemek için bir metrik filtresi oluşturup 5 başarısızlık eşiğinde alarm tetikleyecek şekilde yapılandırıyorsunuz. Alarm, devOps ekibine SNS ile bildirim gönderir ve otomatik olarak bir Lambda fonksiyonu tetiklenerek payment servisini restart eder. Bu sayede sorunlar otomatik çözülür ve kullanıcı etkilenmez.
Sonuç
CloudWatch Logs ve alarm yapılandırması, AWS ortamınızın sağlığını ve güvenliğini korumanın anahtarıdır. Yukarıdaki ipuçları ve kontrol listesi ile log yönetimi maliyetlerini düşürebilir, yanlış alarmları azaltabilir ve sorunlara hızlı tepki verebilirsiniz. Unutmayın, loglarınızı izlemek sadece bir başlangıçtır; doğru alarmlarla proaktif bir yaklaşım benimseyin. Daha fazla bilgi için AWS Fargate vs Amazon ECS yazımızda konteyner izleme stratejilerini inceleyebilirsiniz.
Sık Sorulan Sorular
CloudWatch Logs maliyeti nasıl optimize edilir?
Log gruplarına retention süresi atayarak, gereksiz logları filtreleyerek ve logları S3 veya Elasticsearch’e aktararak maliyeti düşürebilirsiniz.
Metrik filtresi oluştururken nelere dikkat etmeliyim?
Deseni doğru yazdığınızdan emin olmak için test pattern kullanın. Ayrıca filtrenin sayacağı desenin loglarda düzenli olarak geçtiğinden emin olun.
CloudWatch alarmı tetiklendiğinde otomatik düzeltici aksiyon nasıl eklenir?
Alarmın aksiyon bölümüne bir Lambda fonksiyonu veya Auto Scaling politikası ekleyerek otomatik yanıt mekanizması kurabilirsiniz.
Log akışı sayısı çok fazla olduğunda ne yapmalıyım?
Lambda için reserved concurrency ayarlayarak veya EC2'de CloudWatch agent'ını yapılandırarak gereksiz akışları engelleyebilirsiniz.
CloudWatch Logs'da hata loglarını izlemek için en iyi yöntem nedir?
Hata kelimelerini içeren bir metrik filtresi oluşturun, bu metriği bir alarmda kullanın ve SNS üzerinden e-posta veya Slack bildirimi alın.






