awk ile servis durumunu kontrol etme

0 ردود 10 مشاهدات
المقيّمون
المشاركون
صاحب الموضوع #1
awk ile servis durumunu kontrol etme

Bu yazı, bir sistemi komut satırında hızlı ve güvenilir biçimde izlemek isteyenler için pratik bir yol sunuyor. Özellikle birden çok servis çalışırken, basit bir awk tabanlı yaklaşım ile durumları net biçimde raporlayabilir ve gerektiğinde uyarı mekanizmaları kurabilirsiniz. Aşağıda adım adım ilerleyen, gerçek dünya kullanımına uygun bir akış ve bazı örnek senaryolar yer alıyor.


Giriş ve temel düşünce
Bir Linux sisteminde servislerin çalışıp çalışmadığını kontrol etmek çoğu zaman systemctl veya ps gibi araçlarla yapılır. Ancak hedefiniz çok sayıda hizmeti tek bir komutla ve belleği minimum kullanarak gözlemlemekse awk’in metin akışını işleme gücü işinize yarar. Temel fikir, önce servis durumlarını içeren bir komutun çıktılarını toplamak; sonra bu çıktıyı awk ile parse etmek ve her servis için durum, PID, işlem süresi gibi alanları ayıklamaktır. Bu yaklaşım, görevleri otomatize etmek için basit bir raporlama yapısına olanak verir; örneğin her servis için "Active: active (running)" gibi bir kalıp üzerinden uyarı satırları üretebilirsiniz.

Örnek senaryo: basit bir durum tarama
  • Amaç: 3 adımdan oluşan bir kontrol yapmak. 1) Servis adını belirt, 2) systemctl status çıktısını korte göre temizle, 3) "running" durumu olanlar için aktif sayısını hesapla.
  • Yaklaşım: systemctl list-units --type=service --all | awk komutu ile her satırda hizmet adını ve durumu çıkarıp, "running" olanların sayısını topla.


Gerçekçi bir akış için önerilen yapı
  • İlk adımda servisleri listele: systemctl list-units --type=service --all | awk '/\.service/ {print $1, $3}'
  • İkinci adımda durum analizi: awk '/running/ {count["running"]++} END {print "Running:", count["running"]}'
  • Üçüncü adımda raporu sadeleştir: birden fazla servis için durum özeti ve kırmızı uyarılar.


Örnek kod parçacığı (sade ve uygulanabilir)
كود
12345678910111213#!/bin/bash
[b]Basit bir servis durumu raporu: running olanları say ve eksik/status gösterecek bir liste[/b]
systemctl list-units --type=service --all | awk '/\.service/ {
    name=$1; sub(/\.service$/, "", name);
    if (tolower($3) ~ /running/) {
        printf "RUNNING: %s\n", name;
        running++
    } else if (tolower($3) ~ /(failed|dead|inactive)/) {
        printf "ISSUE: %s - %s\n", name, $3;
        issues++
    }
}
END { printf "Toplam running: %d, sorunlu: %d\n", running, issues }'


Dikkat edilmesi gerekenler
  • Çıktı formatını kendi sisteminize göre özelleştirin; servis adlarını ve durumunu net tutun.
  • Banyak durumlar için daha ayrıntılı alanlar (CPU, bellek gibi) gerekiyorsa, systemctl show -p Field benzeri ek bilgiler alınabilir ve awk ile işlenebilir.
  • Güvenlik ve performans: çok sayıda servis taranıyorsa çıktı çok uzayabilir; gerektiğinde sadece hedef servisleri seçmek için listeni daraltın.


Güçlü yönler ve sınırlamalar
  • Güç: metin tabanlı çıktı üzerinden hızlı, bağımsız ve taşınabilir bir raporlama sağlar.
  • Sınırlama: Kompleks durumlar için ayrıntılı JSON veya özel API’ler gerekiyorsa awk tek başına yeterli olmayabilir.


Bu yöntemde siz hangi servis kümelerini bu şekilde izlemek için özelleştirdiniz? Özel bir çıktı formatı veya uyarı mekanizması var mı?

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

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