Log Insights ve analiz

AWS'i İzleme ve Sorun Giderme

John Q. Martin

Principal Consultant

Logs Insights sorgu yapısı

 

 

Alanlar, filter, stats, sort ve limit ile pipe zincirli komutları gösteren Logs Insights sorgu yapısı

AWS'i İzleme ve Sorun Giderme

Sorgu dilleri: aynı sorgu, üç yol

CloudWatch Logs Insights QL

fields @timestamp, @message, level
| filter level = "ERROR"
| filter @timestamp > ago(1h)
| sort @timestamp desc
| limit 20

OpenSearch PPL

source = `/aws/lambda/my-function`
| where level = 'ERROR' and @timestamp > ago(1h)
| fields @timestamp, @message, level
| sort - @timestamp
| head 20
AWS'i İzleme ve Sorun Giderme

Sorgu dilleri: OpenSearch SQL

OpenSearch SQL

SELECT `@timestamp`, `@message`, level
FROM `/aws/lambda/my-function`
WHERE level = 'ERROR'
  AND `@timestamp` > ago(1h)
ORDER BY `@timestamp` DESC
LIMIT 20

 

  • Standart SELECT / FROM / WHERE söz dizimi
  • Log grupları arasında JOIN ekler
  • Ekibine uyanı seç
AWS'i İzleme ve Sorun Giderme

Senaryo 1: Hata sıçramalarını bulma

fields @timestamp, @message, level
| filter level = "ERROR"
| stats count() as error_count by bin(5m)
| sort @timestamp desc
Gelişmiş: hata türüne göre grupla
fields @timestamp, error_type, error_message
| filter level = "ERROR"
| stats count() as count by error_type, bin(5m)
| sort count desc
AWS'i İzleme ve Sorun Giderme

Senaryo 2: Yavaş API uç noktaları

fields @timestamp, endpoint, response_time, status_code
| filter response_time > 1000
| stats avg(response_time) as avg_time,
        max(response_time) as max_time,
        count() as slow_requests
        by endpoint
| sort avg_time desc
Derinlemesine inceleme
fields @timestamp, endpoint, response_time, user_id, request_id
| filter endpoint = "/api/users" and response_time > 1000
| sort response_time desc
| limit 20
AWS'i İzleme ve Sorun Giderme

Senaryo 3: Başarısız kimlik doğrulama

fields @timestamp, user_id, ip_address, action
| filter action = "login_failed"
| stats count() as failed_attempts by user_id, ip_address
| sort failed_attempts desc
| limit 50
Zaman tabanlı analiz
fields @timestamp, user_id, ip_address
| filter action = "login_failed"
| stats count() as attempts by ip_address, bin(1h)
| filter attempts > 10
| sort attempts desc
AWS'i İzleme ve Sorun Giderme

Senaryolar 4 & 5: Veritabanı zaman aşımı ve bellek sızıntıları

Veritabanı zaman aşımı
fields @timestamp, @message
| filter @message like /database/ and @message like /timeout|error|failed/
| parse @message "timeout after * seconds" as timeout_duration
| stats count() as timeout_count,
        avg(timeout_duration) as avg_timeout
        by bin(5m)
Bellek sızıntısı tespiti
fields @timestamp, memory_used_mb, heap_size_mb
| stats avg(memory_used_mb) as avg_memory,
        max(memory_used_mb) as max_memory
        by bin(1h)
| sort @timestamp asc
AWS'i İzleme ve Sorun Giderme

Senaryo 6: İstek izleme

fields @timestamp, @message, request_id, service, action
| filter request_id = "abc123def456"
| sort @timestamp asc
Çoklu servis izi
fields @timestamp, service, action, duration_ms, status
| filter request_id = "abc123def456"
| sort @timestamp asc
| display @timestamp, service, action, duration_ms, status
AWS'i İzleme ve Sorun Giderme

İleri teknikler: parse, Regex

Yapılandırılmamış logları ayrıştırma
fields @timestamp, @message
| parse @message "[*] User * failed to access resource * from IP *"
    as level, user, resource, ip
Regex ile ayrıştırma
| parse @message /Request completed in (?<duration>\d+)ms with status (?<status>\d+)/
AWS'i İzleme ve Sorun Giderme

İleri teknikler: Hesaplanan Alanlar

 

fields @timestamp, requests, errors
| fields error_rate = (errors / requests) * 100

fields @timestamp, status_code
| fields status_category =
    case(status_code < 300, "success",
         status_code < 500, "client_error",
         status_code >= 500, "server_error")
| stats count() as request_count by status_category
AWS'i İzleme ve Sorun Giderme

Sorgu optimizasyonu

 

Dört sorgu optimizasyon kuralı: zaman aralığı filtresi ekle, toplamadan önce uygula, sonuçları sınırla ve birleştirmeleri tercih et

AWS'i İzleme ve Sorun Giderme

Anomali tespiti ve korelasyon

İstatistiksel anomali tespiti
  • Temel seviye hesapla: 7 günde ortalama ve std sapma
  • Mevcut dönemi temel seviye ile karşılaştır
  • 2 std sapma olanları anormal olarak işaretle

Hata oranı korelasyonu
fields @timestamp, level
| stats count() as total_requests,
        sum(case(level = "ERROR", 1, 0)) as errors
        by bin(5m)
| fields error_rate = (errors / total_requests) * 100
AWS'i İzleme ve Sorun Giderme

Özet

 

  • CloudWatch Logs Insights: etkileşimli sorgu servisi, altyapı gerekmez
  • Üç sorgu dili: Logs Insights QL, OpenSearch PPL, OpenSearch SQL
  • Altı sorun giderme senaryosu: hata sıçramaları, yavaş uç noktalar, başarısız kimlik doğrulama, VT zaman aşımı, bellek sızıntısı, istek izleme
  • İleri teknikler: yapılandırılmamış metin için parse, zaman serisi için bin(), yüzdelikler için pct()
  • Korelasyon ve anomali tespiti: hata oranı analizi, istatistiksel temel karşılaştırması
  • İnceleme → otomasyon: metrik filtreleri ve alarmlar döngüyü kapatır
AWS'i İzleme ve Sorun Giderme

Hadi pratik yapalım!

AWS'i İzleme ve Sorun Giderme

Preparing Video For Download...