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:
- URL:
https://tr.alertalk.net/webhook/receive - Method:
POST - Header:
X-Webhook-Key: {Alertalk panelinden aldığınız key} - Header:
Content-Type: application/json - Body:
{"phone_number": "5XXXXXXXXX", "error_message": "Alarm mesajınız"}
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:
- CPU kullanımı yüksek
- Belirli bir servis durdu
- Belirli bir log satırı tespit edildi
- Bir dosya değişti veya silindi
- Ağ bağlantısı kesildi
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: