Konuyu Açan #1
awk ile hata kaynağını belirleme

Bu yazı, günlük dosyaları ve hata mesajları üzerinden sorunların kaynağını adım adım izleyen bir yaklaşım sunar. Özellikle sistem yöneticileri ve geliştiriciler için pratik, uygulanabilir bir rehber olarak düşünülmelidir.


Giriş ve amaç
  • awk, metin tabanlı verileri alan ve biçimlendirilmiş çıktı üreten güçlü bir araçtır. Hata kaynağını belirlerken, log dosyalarındaki belirli alanları (zaman damgası, kaynak, hata seviyesi vs.) ayıklamak için idealdir.
  • Temel hedef, hata olaylarını olay sırasına göre toplamak, filtrelemek ve ilgili bağlamı (girdi satırı, çalışan süreç, kapanış bilgisi) ile ilişkilendirmektir. Bu sayede hangi koşulun hangi hataya yol açtığına dair net bir görünüm elde edilir.


Etkin başlangıçlar: temel desenler
  • Belirli bir deseni içeren satırları seçme: awk '/desen/ {print NR ":" $0}' log dosyası
  • Belirli alanları ayıklama: log biçimi "tarih kaynak seviye mesaj" ise: awk '{print $1, $2, $3, $NF}' logfile
  • Alan sayısına göre uyum sağlama: awk '{if (NF>=5) print $1,$2,$3,$4,$5}'


Hata kaynağını daraltma stratejileri
  • Zaman dilimini daraltma: belirli saat aralığındaki kayıtları filtrelemek için tarih aralığına göre akışı sınırla. Örnek: awk '$0 ~ /2024-11-05/ && $0 ~ /ERROR/'
  • Hata seviyelerini sınıflandırma: ERROR, WARN, FATAL gibi etiketleri kullanarak kritik olayları öncelemek. Örnek: awk '$0 ~ /(ERROR|FATAL)/ {print $0}'
  • Kaynak veya süreç kümelerini izleme: belirli bir hizmet veya modüle ait kayıtları izlemek için desene ek filtre ekle. Örnek: awk '$0 ~ /moduleri/ {print $0}'


Bağlamı yakalamak ve referansları anlamak
  • Satır numaralarını ve bağlamı saklama: awk '/hata/ {print NR ":" $0}' ile ilgili çevre satırlarını görmek için sed ile komplementer kullanımı düşünebilirsiniz.
  • Çok alanlı loglarda yapılandırılmış çıktı elde etmek: ayrıştırıcı olarak FS değiştirilebilir. Örneğin: awk -F '|' '{print $1,$3,$5}' logfile


Kod örnekleri ve pratik ipuçları
  • Hata mesajını bir dosyada toplama: awk '/ERROR/ {print $0}' logfile > hatalar.log
  • En sık görülen hata türlerini sayma: awk '/ERROR/ {count[$NF]++} END {for (e in count) print e, count[e]}' logfile
  • Satır başı ve sondaki bağlamı görmek: awk '/ERROR/ {print "BAŞ:", $0; getline; print "SON:", $0}' logfile


Kapanış
  • awk ile hata kaynağını belirlerken, hedeflenen desenleri dikkatle tanımlamak, alan ayrıştırmasını doğru yapmak ve bağlamı korumak en kritik adımdır. Bu yaklaşım, hızlı bir şekilde hangi koşulun hangi hataya yol açtığını netleştirmeye yarar.

Yanıt vermek için giriş yapmış olmalısınız.

Bu konuyu görüntüleyen kullanıcılar (Toplam: 4, Üyeler: 4, Misafirler: 0)
Toplam: 4 (üyeler: 4, misafirler: 0)
0 alıntı seçildi