Mövzunu Açan #1
awk ile işlem geçmişini inceleme

Bir sistem yöneticisi olarak, günlük dosyalarının ve işlem geçmişinin güvenlik ve performans açısından ne kadar değerli olduğunu sık sık gördünüz. Bu yazıda, awk kullanarak basit fakat etkili bir şekilde işlem geçmişini incelemenin temel yollarını derinleştireceğiz. Amaç, veriyi yapılandırılmış hâle getirip anahtar olayları hızlıca çıkarmak ve uzun trendleri fark etmek.


1) Log dosyalarını anlamak ve hangi sütunların önemli olduğunu belirlemek
Birçok sistem kaydı, zaman damgası, kullanıcı, işlem komutu ve çıktı gibi alanlar içerir. Örneğin /var/log/auth.log veya /var/log/syslog gibi dosyalarda, belirli kalıpları aramak için awk ile temel alanlar üzerinden çalışmak işe yarar. Basit bir örnekle, her satırın ilk alanını zaman damgası olarak ele almak ve belirli bir anahtar kelimeyi (ör. LOGIN) içeren satırları filtrelemek mümkün:
KOD
1awk '/LOGIN/ { print $1\" \"$2\" - \"$0 }' /var/log/auth.log


2) Zaman aralıklarını hesaplamak
Bir dizi olayın toplam süresini veya ortalama arasını görmek için tarih-saat alanlarını parse etmek gerekir. GNU awk (gawk) ile strftime ve mktime kullanımıyla zaman farklarını hesaplamak pratik:
KOD
1awk '{ t=mktime($1\" \"$2\" \"$3\" \"$4\" \"$5\" \"\"$6)); if (prev) diff=t-prev; prev=t; print strftime(\"%F %T\", t)\" +\"diff }' /var/log/syslog

Not: bu örnekler, log formatına göre özelleştirilmelidir.

3) İşlem geçmişindeki kullanıcı etkinlikleri
Kullanıcı bazında toplam komut sayısını, en sık çalıştırılan komutları veya belirli bir kullanıcının başarısız girişlerini özetlemek için alanları ayırıp gruplamak gerekir. Örneğin, kullanıcı ve komut sütunları biliniyorsa:
KOD
1awk '{user=$9; cmd=$11; if ($0 ~ /sudo/) sudo_count++; print user\"|\"cmd }' /var/log/auth.log | sort | uniq -c | sort -nr | head -n 20


4) Olay yoğunluğunu zaman içinde görselleştirmek için basit özetler
Bir günlük aralığında satır sayısını dakikalık ya da saatlik olarak toplamak, trafik anomalisini tespit etmeyi kolaylaştırır.
KOD
1awk '{ ts=$1\" \"$2; count[ts]++ } END { for (t in count) print t\" -> \"count[t] }' /var/log/syslog | sort


5) Güvenlik için kritik kalıpları yakalamak
Belirli hatalı kimlik doğrulama girişleri, yetkisiz erişim denemeleri veya komut enjeksiyonu gibi riskleri hızlıca tespit etmek adına, kalıpla eşleşen satırları öne çıkarmak gerekir. Örnek olarak SSH başarısız girişlerini şu şekilde filtreleyebiliriz:
KOD
1awk '/Failed password/ {print $0}' /var/log/auth.log


Sonuç ve ipuçları
  • Log formatınıza uygun alan ayırıcıyı belirleyin (spaces, tabs, veya özel karakterler).
  • Büyük loglar için chunk okuma, awk ile satır başına işleme performansını korur.
  • Ayrıca, awk ile çıktı dosyasını CSV veya JSON’a dönüştürerek başka araçlarda analiz etmek de mümkündür.


Bu konudaki deneyiminiz veya kullandığınız özel kalıplar var mı? Özellikle hangi loglarda hangi awk yaklaşımları sizin için en değerli çalıştı?

Cavab vermək üçün daxil olmalısınız.

Bu mövzunu görüntüləyən istifadəçilər (Cəmi: 1, Üzvlər: 1, Qonaqlar: 0)
Cəmi: 1 (üzvlər: 1, qonaqlar: 0)
0 sitat seçildi