Gece çalışan bir cron job var. Log dosyaları büyüyor, disk dolmaya başlıyor. Sabah işe geldiğinizde disk yüzde yüz dolu, servisler çökmüş. E-posta gelmişti — ama kimse okumamıştı.

Linux sistem yönetiminde disk doluluk alarmı en klasik senaryolardan biridir. Çözüm basit görünür: bir script yaz, cron'a ekle, e-posta gönder. Ama gece gelen e-postayı kimse okumuyorsa alarm işe yaramaz.

Linux'ta Sesli Alarm Mümkün mü?

Evet — curl ile webhook göndermek yeterli.

Linux'ta herhangi bir koşul gerçekleştiğinde Alertalk'a HTTP POST isteği göndererek telefon çağrısı tetiklenebilir. Ek bir kütüphane veya araç gerekmez. Sunucunuzda curl varsa bu entegrasyon çalışır.

Çalışma mantığı: Bash Script → curl → Alertalk API → Telefon Çağrısı

Alertalk Webhook Yapısı

Alertalk webhook'u şu şekilde çalışır:

Temel Disk Alarm Script'i

Aşağıdaki script disk kullanımını kontrol eder. Belirlenen eşik aşıldığında Alertalk üzerinden telefon çağrısı başlatır.

#!/bin/bash

WEBHOOK_URL="https://tr.alertalk.net/webhook/receive"
WEBHOOK_KEY="buraya-alertalk-key-giriniz"
PHONE="5XXXXXXXXX"
THRESHOLD=85
HOSTNAME=$(hostname)

DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | tr -d '%')

if [ "$DISK_USAGE" -ge "$THRESHOLD" ]; then
    MESSAGE="Disk alarmi: $HOSTNAME sunucusunda disk kullanimi yuzde $DISK_USAGE. Mudahale gerekiyor."
    curl -s -X POST "$WEBHOOK_URL" \
        -H "X-Webhook-Key: $WEBHOOK_KEY" \
        -H "Content-Type: application/json" \
        -d "{\"phone_number\": \"$PHONE\", \"error_message\": \"$MESSAGE\"}"
fi

Cron ile Otomatik Çalıştırma

Script her 5 dakikada bir çalışacak şekilde cron'a eklenir:

chmod +x /opt/scripts/disk_alarm.sh
crontab -e

Crontab satırı:

*/5 * * * * /opt/scripts/disk_alarm.sh >> /var/log/disk_alarm.log 2>&1

Hangi Eşik Değeri Kullanılmalı?

Disk Kullanımı Durum Önerilen Aksiyon
%70 altı Normal İzle
%70 - %80 Dikkat E-posta bildirimi yeterli
%80 - %90 Uyarı Sesli alarm devreye girmeli
%90 üzeri Kritik Anında müdahale gerekli

Eşik değeri ortama göre değişir. Veritabanı sunucularında %75, log sunucularında %85 makul başlangıç noktalarıdır.

Birden Fazla Disk Bölümünü İzlemek

Sadece kök diski değil, tüm mount noktalarını izlemek için script genişletilebilir:

#!/bin/bash

WEBHOOK_URL="https://tr.alertalk.net/webhook/receive"
WEBHOOK_KEY="buraya-alertalk-key-giriniz"
PHONE="5XXXXXXXXX"
THRESHOLD=85
HOSTNAME=$(hostname)

df -H | grep -vE "^Filesystem|tmpfs|cdrom|udev" | awk '{ print $5 " " $6 }' | while read -r output; do
    USAGE=$(echo "$output" | awk '{ print $1}' | cut -d'%' -f1)
    MOUNT=$(echo "$output" | awk '{ print $2 }')

    if [ "$USAGE" -ge "$THRESHOLD" ]; then
        MESSAGE="Disk alarmi: $HOSTNAME sunucusunda $MOUNT bolumu yuzde $USAGE dolu."
        curl -s -X POST "$WEBHOOK_URL" \
            -H "X-Webhook-Key: $WEBHOOK_KEY" \
            -H "Content-Type: application/json" \
            -d "{\"phone_number\": \"$PHONE\", \"error_message\": \"$MESSAGE\"}"
    fi
done

Sadece Disk mi?

Aynı yapı farklı koşullar için de kullanılabilir. Webhook gönderme mekanizması değişmez, sadece kontrol edilen koşul değişir:

Bash ile kontrol edebildiğiniz her koşul, Alertalk webhook'u üzerinden sesli alarma dönüştürülebilir.

Kimler için Uygundur?

Monitoring aracı kurmak yerine hafif bir script çözümü tercih eden sistem yöneticileri için idealdir. Zabbix veya PRTG gibi araçlara gerek duymadan belirli koşullar için sesli alarm alınabilir. Özellikle küçük ortamlarda veya monitoring aracının kapsamadığı özel senaryolarda kullanışlıdır.

Adım Adım Kurulum

Alertalk hesabı oluşturma, webhook anahtarı alma ve ilk test için:

Webhook Entegrasyon Dokümantasyonu

Alertalk'ı Ücretsiz Deneyin