صاحب الموضوع
#1
grep ile çoklu günlükte desen arama
1) Temel çoklu desen arama
Aynı satırda birden çok deseni kapsayacak şekilde birer alternation kullanılır. Desenlerin birbiriyle karışmaması için dikkatli gruplama gerekir. Örneğin:
Bu yaklaşım, kritik seviyedeki olayları tek bir komutla çekip hızlı bir özet sağlar.
2) Dosya kümesi üzerinde arama
Kök dizinini genişletirken -r (veya --recursive) ile alt dizinlerdeki tüm dosyaları tarayabiliriz. Ancak izinler ve gereksinimler burada belirleyici oluyor; çok büyük dizinlerde performans için hedef kısıtlar gerekebilir.
3) Dosya başına ayrı çıktı almak
-H çıktı dosya adını, -h ise dosya adını yazdırmaz; çoklu dosya üzerinde çalışırken hangi satır hangi dosyadan geldiğini görmek için faydalı.
4) Satır numarasıyla birlikte
-i seçenekleriyle küçük/büyük harfe duyarsız arama yapabilirsiniz:
5) Desenleri daha güvenli gruplama
Bu, alternatifleri daha belirginleştirir ve yanlış eşleşmeleri azaltır.
6) Belirli alanlar veya satır türleriyle sınırlama
7) Performans ipuçları
8) Örnek senaryo
Bu yöntemler, günlük dosyalarınızdaki çoklu desen aramalarını daha sistematik ve verimli kılar. Kullandığınız log formatı veya özel yapılandırmalar varsa, sizin için daha özelleştirilmiş desenler önerebilirim.
Günlük dosyalarında birden fazla deseni efektif biçimde aramak, sorun köklerini hızlı tespit etmek ve operasyonel aksaklıkları anlamak için temel bir beceri. Özellikle çok sayıda log kaydı bir araya geldiğinde hangi desenin hangi olayla ilişkili olduğunu ayırmak zorlaşabilir. Bu yazıda, grep ile bu tür çoklu aramaları nasıl yapılacağını, farklı gereksinimler için ipuçlarını ve pratik örnekleri paylaşacağım.
1) Temel çoklu desen arama
- grep -E "desen1|desen2" dosya
Aynı satırda birden çok deseni kapsayacak şekilde birer alternation kullanılır. Desenlerin birbiriyle karışmaması için dikkatli gruplama gerekir. Örneğin:
- grep -E "ERROR|FATAL|WARN" /var/log/syslog
Bu yaklaşım, kritik seviyedeki olayları tek bir komutla çekip hızlı bir özet sağlar.
2) Dosya kümesi üzerinde arama
- grep -E "desen1|desen2" /var/log/*.log
- grep -E -r "desen1|desen2" /var/log
Kök dizinini genişletirken -r (veya --recursive) ile alt dizinlerdeki tüm dosyaları tarayabiliriz. Ancak izinler ve gereksinimler burada belirleyici oluyor; çok büyük dizinlerde performans için hedef kısıtlar gerekebilir.
3) Dosya başına ayrı çıktı almak
- grep -H -E "desen1|desen2" /var/log/*.log
- grep -h -E "desen1|desen2" /var/log/*.log
-H çıktı dosya adını, -h ise dosya adını yazdırmaz; çoklu dosya üzerinde çalışırken hangi satır hangi dosyadan geldiğini görmek için faydalı.
4) Satır numarasıyla birlikte
- grep -n -E "desen1|desen2" dosya
-i seçenekleriyle küçük/büyük harfe duyarsız arama yapabilirsiniz:
- grep -i -E "desen1|desen2" dosya
5) Desenleri daha güvenli gruplama
- Özellikle parantez dışında özel karakterler varsa: grep -E "(desen1|desen2)" dosya
Bu, alternatifleri daha belirginleştirir ve yanlış eşleşmeleri azaltır.
6) Belirli alanlar veya satır türleriyle sınırlama
- Eğer hata kodu veya belirli etiketli girdileri arıyorsanız:
- grep -E "ERROR|ERR|Fail" /var/log/nginx/access.log
- Ayrıca satır içindeki belirli alanı hedeflemek için: grep -E "level=(error|warn)|status=5[0-9]{2}" dosya
7) Performans ipuçları
- Büyük loglar için dosyayı önce sıkıştırılmış halde taramak yerine belirli zaman aralıklarını düşünün.
- zgrep ile gzipli dosyalarında arama yapabilirsiniz.
- -F ile sabit dizgileri hızlı arama yapılabilir; ancak desenleriniz regex ise -E gerekliliğini kaybetmez.
8) Örnek senaryo
- Çok sayıda günlükte “timeout” ve “authentication failure” olaylarını aynı anda izlemek:
- grep -E "timeout|authentication failure" /var/log/*log
- Sıralı ve hızlı tespit için tarih aralığına göre filtreleme:
- grep -E "2026-11-01|2026-11-02" /var/log/app.log | grep -E "timeout|authentication failure"
Bu yöntemler, günlük dosyalarınızdaki çoklu desen aramalarını daha sistematik ve verimli kılar. Kullandığınız log formatı veya özel yapılandırmalar varsa, sizin için daha özelleştirilmiş desenler önerebilirim.
