Konuyu Açan #1
awk ile düzenli bakım planlama

Günlük, haftalık ve aylık bakım işlerini otomatikleştirmek için awk’ı nasıl kullanabileceğinizi paylaşıyorum. Notlar, gerçek dünya senaryolarında karşılaşılan türlerin nasıl ele alınabileceğine odaklıdır ve temel fikirleri pekiştirmeye yöneliktir.


Giriş ve neden awk?
  • awk, metin tabanlı günlükler, çıktı dosyaları ve durum raporları üzerinde satır satır işlem yapmanıza olanak verir. Özellikle log dosyaları, durum dosyaları ve yapılandırma özetleri gibi metin formatındaki veriler için idealdir.
  • Düzenli bakım planında sıklıkla ihtiyaç duyulan işlemler: filtreleme, özetleme, alan çıkarımı, hesaplamalar ve uyarı üretme. Bu görevler için awk’nin güçlü desen-eşik yapısı çok uygundur.


Kullanım alanları ve örnek senaryolar
  • Günlük disk kullanımı özeti:
    KOD
    1awk -F, '{print $1": "$5" kullanılıyor, "$6" MB boşta"}' disk_rapor.csv | sort -k2 -n -r | head -n 10

    Bu komut, CSV biçimindeki disk raporundan en çok kullanılan bölümleri öne çıkarır ve yönetime hızlı özet sunar.
  • Saatlik hizmet durumu özeti:
    KOD
    1awk -F: '/ERROR|WARN/ {print strftime("%Y-%m-%d %H:%M:%S"), $0}' /var/log/service.log

    Hataları ve uyarıları zaman damgası ile birlikte listeleyerek toplamayı kolaylaştırır.
  • Haftalık bakım kontrol listesi oluşturma:
    KOD
    1awk 'BEGIN{print "Haftalık Bakım Kontrol Listesi"} /CHECK/ {print "-",$0}' /bakim/checklist.txt > /raporlar/bakim_haftalik.txt

    Kontrol listesinde bulunan maddeleri rapora taşır ve değişiklikleri izler.
  • Sunucu durumundan özet çıkarma:
    KOD
    1awk '/CPU|Memory|Disk/ {print NR":",$0}' /proc/stat /proc/meminfo /proc/diskstats

    Donanım durumunu basit bir metin özeti olarak derleyebilir.


İyi uygulamalar ve sınırlar
  • Field separator olarak uygun değeri seçin (genelde -F, ile CSV veya tab ile ayırımlı dosyalar için). Kaçınılmaz hatalarda birinci satıra BEGIN bloğunda değişken ataması yapın.
  • Büyük log dosyalarını çalıştırırken bellek sınırlarını dikkate alın; gerektiğinde dosyayı parçalara bölün ve akış halinde işleyin.
  • Uyarı ve alarm mantığını ayrı bir katmana taşıyın: awk çıktısını bir mesaj kuyruğuna veya e-posta/Slack entegrasyonuna bağlayın.
  • Zaman damgası ve filtreler için locale ayarlarını sabitleyin ki farklı makinelerde karşılaştırma tutarlı olsun.


Sonuç ve kapanış
Awk, metin tabanlı bakım verilerini hızlı çıkarma ve günlük otomasyon akışlarına entegre etme konusunda temel taşlardan biridir. XPath veya SQL kadar karmaşık değildir ama pratikte bir çok operasyonu tek satırda çözer. Bu teknikleri kendi ortamınıza uyarlarken karşılaştığınız somut durumları paylaşabilir misiniz?

Yanıt vermek için giriş yapmış olmalısınız.

Bu konuyu görüntüleyen kullanıcılar (Toplam: 2, Üyeler: 2, Misafirler: 0)
Toplam: 2 (üyeler: 2, misafirler: 0)
0 alıntı seçildi