صاحب الموضوع #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.

يجب تسجيل الدخول للرد.

المستخدمون الذين يشاهدون هذا الموضوع (الإجمالي: 3, الأعضاء: 3, الضيوف: 0)
الإجمالي: 3 (الأعضاء: 3, الضيوف: 0)
0 اقتباسات محددة