grep ile günlük filtreleme

0 Ответов 3 Просмотра
Оценившие
Участники
Автор темы #1
grep ile günlük filtreleme

Giriş ve bağlam
Sistem günlükleri (loglar) hızla büyüyebilir ve içinden ilginç olayları çıkarmak, hataları tespit etmek veya güvenlik olaylarını izlemek için filtreleme gerekir. grep, metin içeriğinde desen arayan temel araçlardan biridir ve günlük analizi için pratik bir başlangıç noktası sağlar. Burada basit kullanımdan başlayıp, birlikte daha karmaşık kombinasyonları kuracağız: birden çok deseni aynı anda kontrol etmek, belirli zaman aralıklarındaki kayıtları izlemek ve günlük dosyalarını dönüştürmeden hızlıca analiz etmek.

Temel yaklaşım: desene göre arama
Gelen kutu günlük dosyasında belirli bir hatayı bulmak için:
КОД
1grep "ERROR" /var/log/syslog

Bu yaklaşım, tek satır üzerinde belirli bir kelime veya ifade arar. Ancak günlükler genelde zaman damgaları içerir; bu yüzden daha kırpılmış aramalar için regex kullanımı faydalı olur. Örneğin:
КОД
1grep -E "ERROR|CRITICAL" /var/log/syslog

Burada -E ile genişletilmiş regex kullanıyoruz ve iki farklı deseni aynı anda yakalıyoruz.

Zaman aralığına göre filtreleme
Günlüklerin çoğu zaman damgası içerir. Belirli bir tarih aralığını hedeflemek için tarih desenini kullanabiliriz:
КОД
1grep -E "2024-11-0[1-9]|2024-11-1[0-5]" /var/log/syslog

Dikkat: tarih formatı sistemden sisteme değişebilir. Ayrıca logrotate nedeniyle günlükler sıkıştırılmış olabilir; bu durumda zgrep kullanılır:
КОД
1zgrep "WARNING" /var/log/syslog.1.gz


Çoklu dosya ve izleme
Bir dizindeki tüm günlükleri taramak için:
КОД
1grep -R "failed user" /var/log

Gerçek zamanlı izleme için tail ile birlikte kullanabiliriz:
КОД
1tail -f /var/log/auth.log | grep --line-buffered "Accepted password"

--line-buffered, akış halinde çıktı üretmesini sağlar.

İpucu ve riskler
  • Deseni dikkatli seçin; ifadeleriniz kısmi eşleşmelere yol açabilir. Örneğin "ERR" yalnızca kısmı eşleşmelere neden olabilir.
  • Büyük dosyaları işlerken -F (fixed strings) kullanmak performansı artırır:

КОД
1grep -F "ERROR" /var/log/syslog

  • Büyük çıktıların yönetimi için çıktıyı dosyaya yönlendirmek veya awk/sed ile biçimlendirmek faydalıdır:

КОД
1grep -E "ERROR|CRITICAL" /var/log/syslog | awk '{print $1, $2, $3, $0}' > errors.log


Sonuç ve kapanış
grep ile günlük filtreleme, hızlı başlangıç için yeterince esnek ve güçlüdür. Temel desen aramalarından zaman damgası odaklı filtrelere, çoklu desenlere ve gerçek zamanlı izlemlere kadar geniş bir yelpazeyi kapsar. Belirli bir günlük yapılandırması veya özel deseniniz varsa, onunla uyumlu bir çözüm üretelim.

Чтобы ответить, необходимо войти в систему.

0 цитат выбрано