Event Tracing for Windows (ETW) ile Performans İzleme ve Olay Analizi
Event Tracing for Windows (ETW) ile Performans İzleme ve Olay Analizi
Event Tracing for Windows (ETW), Windows işletim sisteminde çekirdek (kernel) ve kullanıcı düzeyindeki olayların yüksek performanslı biçimde kaydedilmesini sağlayan gelişmiş bir izleme altyapısıdır. ETW, özellikle performans analizi, sorun giderme ve güvenlik olaylarının korelasyonu için sistem yöneticileri ve geliştiriciler tarafından kullanılır. Bu yazıda, ETW’nin mimarisini, temel kullanım komutlarını, performans ölçümlerinde nasıl kullanılacağını ve log analizinde en iyi uygulamaları inceleyeceğiz.
- 1. ETW Nedir ve Nasıl Çalışır?
- ETW Temel Bileşenleri:
- 2. ETW’nin Kullanım Alanları
- 3. ETW İzleme Başlatma (PowerShell)
- Logman ile Temel Kullanım:
- PowerShell ile Örnek:
- 4. Kernel Modu İzleme (System Performance)
- 5. Kullanıcı Modu İzleme (Uygulama Düzeyi)
- 6. ETW Dosyalarını Analiz Etme
- 7. Olay ID ve Provider Tespiti
- 8. Performans İzleme Senaryosu (Örnek)
- 9. Güvenlik ve Log Korelasyonu
- 10. Performans ve Depolama Önerileri
- Sonuç
1. ETW Nedir ve Nasıl Çalışır?
ETW, çekirdek ve kullanıcı modundaki bileşenlerin gerçek zamanlı olarak olay (event) üretebildiği bir altyapıdır. Bu olaylar, Provider tarafından oluşturulur, Controller tarafından yönetilir ve Consumer (örneğin bir analiz aracı) tarafından okunur.
ETW Temel Bileşenleri:
- Provider: Olayları üreten bileşen (ör. Kernel, IIS, DNS Client, PowerShell).
- Controller: Hangi provider’ın aktif olacağını ve verilerin nereye yazılacağını belirler.
- Consumer: Toplanan olayları analiz eder (ör. PerfView, Windows Performance Analyzer).
2. ETW’nin Kullanım Alanları
- CPU, disk, ağ ve bellek performans izleme.
- Kernel-level IO analizi (işlem, thread, dosya erişimi).
- PowerShell, IIS veya .NET uygulama performans profili çıkarma.
- Güvenlik olayları ve anomali tespiti (ör. Process Creation chain).
3. ETW İzleme Başlatma (PowerShell)
ETW izlemelerini başlatmak için logman veya New-EtwTraceSession kullanılabilir.
Logman ile Temel Kullanım:
# Kernel olaylarını kaydetmek logman create trace "KernelTrace" -p "NT Kernel Logger" -o C:\Logs\kernel_trace.etl -ets # İzlemeyi durdurmak logman stop "KernelTrace" -ets
PowerShell ile Örnek:
$session = New-EtwTraceSession -Name "CPUTrace" -LocalFilePath "C:\Logs\cpu_trace.etl" Add-EtwTraceProvider -Session $session -ProviderName "Microsoft-Windows-Kernel-Processor-Power" Start-EtwTraceSession -Session $session
4. Kernel Modu İzleme (System Performance)
Kernel-level analiz, CPU scheduling, disk IO, context switching gibi olayları inceler. Örnek:
xperf -on PROC_THREAD+LOADER+DISK_IO+FILE_IO+NETWORKTRACE -stackwalk profile -buffersize 1024 -MaxFile 256 -FileMode Circular -f C:\Logs\system_trace.etl xperf -d C:\Logs\system_trace.etl
Bu komutlar, Windows Performance Toolkit (WPT) ile gelen xperf aracına aittir.
5. Kullanıcı Modu İzleme (Uygulama Düzeyi)
Örneğin bir IIS veya PowerShell performans izleme oturumu başlatabilirsiniz:
logman create trace "IISPerf" -p "Microsoft-Windows-IIS" 0xFFFFFFFF -o C:\Logs\iis_trace.etl -ets logman stop "IISPerf" -ets
Bu tür izlemeler, yüksek CPU veya gecikme sorunlarını anlamak için çok değerlidir.
6. ETW Dosyalarını Analiz Etme
Oluşturulan .etl dosyaları Windows Performance Analyzer (WPA) veya PerfView ile açılabilir. Bu araçlar CPU kullanımı, disk IO, ağ trafiği ve thread detaylarını görselleştirir.
- PerfView: .NET uygulama ve garbage collection analizleri için idealdir.
- WPA: Kernel-level trace analizi, timeline bazlı grafikler için kullanılır.
7. Olay ID ve Provider Tespiti
Mevcut provider listesini görmek için:
logman query providers
Belirli bir provider’ın olay ID’lerini ve açıklamalarını görmek için:
wevtutil gp "Microsoft-Windows-Kernel-Process"
8. Performans İzleme Senaryosu (Örnek)
Bir sistemde rastgele CPU dalgalanmaları varsa aşağıdaki adımlar uygulanabilir:
- Kernel Trace başlatılır:
xperf -on PROC_THREAD+PROFILE - CPU yükü oluştuğu an izlenir.
- Trace durdurulup WPA’da analiz edilir.
- “CPU Usage (Sampled)” görünümünde hangi prosesin yük oluşturduğu tespit edilir.
9. Güvenlik ve Log Korelasyonu
ETW, Defender, Sysmon ve PowerShell log’larıyla korelasyon için kullanılabilir. Örneğin “Microsoft-Windows-Threat-Intelligence” provider’ı kullanılarak kötü amaçlı işlem zincirleri izlenebilir.
10. Performans ve Depolama Önerileri
- ETW loglarını dairesel modda (circular mode) tutarak disk doluluğunu önleyin.
- Büyük izleme senaryolarında buffer boyutunu artırın (
-buffersize 1024). - Uzun süreli izleme için Performance Monitor (Perfmon) ile ETW birleşik kullanımını tercih edin.
Sonuç
Event Tracing for Windows (ETW), sistem yöneticileri için yalnızca bir performans aracı değil, aynı zamanda güçlü bir adli analiz (forensics) ve güvenlik denetimi aracıdır. Doğru yapılandırıldığında, CPU’dan IO’ya kadar tüm bileşenlerdeki gecikme ve darboğazları yüksek doğrulukla ortaya çıkarabilir. HostLigo Windows Sunucu altyapılarında ETW tabanlı izleme, operasyonel görünürlük ve proaktif arıza tespiti için kritik bir bileşen haline gelmiştir.