Log İnceleme ve Filtreleme

Log dosyaları, sistemin işleyişi hakkında değerli bilgiler içerir, ancak genellikle çok büyük olabilirler. İhtiyaç duyulan bilgiyi bulmak için logları etkili bir şekilde incelemek ve filtrelemek önemlidir. Bu bölümde, hem geleneksel metin tabanlı log dosyaları hem de journald günlükleri için yaygın kullanılan araçlar ve teknikler ele alınacaktır.

Geleneksel Log Dosyaları (/var/log)

Bu dosyalar genellikle düz metin formatındadır ve standart komut satırı araçlarıyla işlenebilir.

1. Canlı Takip ve Basit Filtreleme (tail -f | grep)

Bir log dosyasını gerçek zamanlı olarak takip etmek ve belirli anahtar kelimeleri içeren satırları anında görmek için tail -f ve grep kombinasyonu sıkça kullanılır:

# /var/log/syslog dosyasını takip et ve içinde "error" geçen satırları göster (büyük/küçük harf duyarsız)
tail -f /var/log/syslog | grep -i "error"

# /var/log/nginx/access.log dosyasını takip et ve 404 hata kodlarını içeren satırları göster
tail -f /var/log/nginx/access.log | grep ' 404 ' 
  • tail -f: Dosyanın sonunu gösterir ve yeni eklenen satırları sürekli olarak ekrana basar.

  • grep: Standart girdiden gelen satırlar içinde belirtilen kalıbı arar.

2. Regex ile Gelişmiş Filtreleme (grep -E)

Daha karmaşık kalıpları eşleştirmek için grep -E (veya egrep) ile düzenli ifadeler (regular expressions) kullanılır:

# Apache access_log dosyasında belirli bir IP adresinden gelen istekleri bul
grep -E '^192\.168\.1\.10 ' /var/log/apache2/access.log

# auth.log dosyasında başarısız SSH login denemelerini bul
grep -E 'sshd\[[0-9]+\]: Failed password for' /var/log/auth.log

# access_log dosyasından sadece GET isteklerini içeren satırları çıkar
grep -E '^(\S+) (\S+) (\S+) \[.*\] "GET ' /var/log/nginx/access.log

3. Alanlara Göre İşleme (awk)

Log satırları genellikle boşluk veya başka bir ayırıcı ile ayrılmış alanlardan oluşur. awk, bu alanlara göre işlem yapmak için çok güçlü bir araçtır:

4. Metin Değiştirme (sed)

Loglar üzerinde basit metin değiştirme veya ayıklama işlemleri için sed kullanılabilir:

systemd-journald Günlükleri (journalctl)

journald, logları yapılandırılmış bir formatta sakladığı için journalctl komutu güçlü filtreleme yetenekleri sunar.

Canlı Takip:

Filtreleme:

  • Servise Göre (-u):

  • Önem Derecesine Göre (-p):

  • Zamana Göre (--since, --until):

  • Çekirdek Mesajları (-k):

  • Belirli Önyükleme (-b):

  • Meta Veri Alanlarına Göre: journald logları birçok meta veri alanı ile saklar (_PID, _UID, _EXE, _SYSTEMD_UNIT, SYSLOG_FACILITY vb.). Bu alanlara göre filtreleme yapılabilir:

  • Metin Arama (grep ile): journalctl çıktısı metin tabanlı olduğu için grep ile de filtrelenebilir:

Logları etkili bir şekilde incelemek, sistem yönetimi ve sorun gidermenin önemli bir parçasıdır. Hem geleneksel araçları hem de journalctl'i bilmek, farklı durumlarla başa çıkmanıza yardımcı olur.

Last updated