awk ile otomatik kontrol oluşturma

0 Ответов 3 Просмотра
Оценившие
Участники
Автор темы #1
awk ile otomatik kontrol oluşturma

Bu konu, sistem yöneticileri ve geliştiricilerin günlük iş akışını kolaylaştıran basit ama etkili bir yaklaşımı ele alır: awk ile metin tabanlı verileri otomatik olarak kontrol etmek, raporlamak ve uyarı üretmek. Aşağıdaki açıklama, gerçek dünyadan örneklerle ve uygulanabilir adımlarla ilerler.


Giriş ve temel kavramlar
  • awk, satır satır işleyen bir metin işleyicisidir. Dizin tarama, log analizi, tablo benzeri çıktı üretme gibi görevlerde kullanılır.
  • Temel yapı: awk 'desen { işlem }' dosya. Desen eşleşen satırları, işlem bloğu ise her eşleşmede yürütülür.
  • Birkaç pratik örnekle yaygın kullanım senaryolarını kavrarsınız: sütun bazlı kontrol, belirli hata mesajlarının sayımı, belirli eşleşmelere göre uyarı üretimi.


Kullanım senaryoları ve adımlar
1) Dosya içindeki belirli sütunu kontrol etmek
  • Amaç: günlük dosyasından kullanıcı oturum açma sayısını saymak ve 100 oturumdan fazla görüldüğünde bildirim oluşturmak.
  • Yaklaşım: İlk sütunda kullanıcı adı, üçüncü sütunda durum varsa, satırları filtrele; ardından toplama işlemiyle toplam sayıyı elde et.

КОД
1awk '$3 ~ /FAILED/ {count++} END {if (count>0) print "FAILED kayıtlar: "count; else print "Tüm kayıtlar başarılı."}' /var/log/auth.log


2) Hatalı satırları özetlemek
  • Amaç: log dosyasındaki ERROR ve WARN mesajlarını sayıp rapor halinde sunmak.
  • Yaklaşım: desende regexp ile eşleşen satırları sayıp, END bloğunda özet çıktı üretmek.

КОД
1awk '/ERROR|WARN/ {err[$0]++} END {for (k in err) print k" -> "err[k] }' /var/log/app.log


3) Otomatik uyarı için koşullu çıktı
  • Amaç: CPU kullanımını içeren bir çıktı analiz etmek ve eşik aşıldığında bildirim satırı üretmek.
  • Yaklaşım: dosyadan belirli alanı çekip, END veya satır içindeki hesaplama ile karşılaştırma yapmak.

КОД
1awk '$2+0 > 80 {print "yüksek CPU:", $2"%"}' /tmp/cpu_usage.log


İpuçları ve güvenli uygulamalar
  • Dosya boyutu çok büyükse, awk üzerinden satırları akış halinde işlemek bellek dostudur.
  • Field separatoru farklıysa -F ile ayarlayın (ör. -F"," veya -F"\t").
  • Değişkenler ve dizilerle durum tutabilir, report çıktısını dosyaya yönlendirebilirsiniz: awk '...' /path > /path/report.txt
  • Birden çok dosyayı ardışık işlemek için FILENAME ve NR kullanımı, bağlam değişikliklerini yönetir.


Sonuç ve dikkat edilmesi gerekenler
  • awk ile otomatik kontrol, hızlı prototipleme ve günlük/monitoring için uygundur; ancak karmaşık durumlar için bir DSL veya script katmanı gerekebilir.
  • Yetkili dosyalarla çalışırken dosya izinlerini ve log formatını dikkatle ele alın; yanlış desenler yanlış uyarılar doğurabilir.


Bu konudaki deneyimleriniz veya kendi iş akışlarınızı otomatikleştirmek için hangi awk desenlerini kullanıyorsunuz?

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

Пользователи, просматривающие эту тему (Всего: 4, Участники: 4, Гости: 0)
Всего: 4 (участники: 4, гости: 0)
0 цитат выбрано