Disk Kullanım Uyarı Sistemi

Disk kullanımını kontrol eder ve belirlenen eşik değeri aşıldığında e-posta veya bildirim gönderir. Sistem yöneticileri için kritik bir monitoring aracı.

Yayınlanma: 10.02.2024 Güncellenme: 25.11.2024

Detaylı Bilgi

Bu script, sisteminizdeki disk kullanımını sürekli izler ve belirlenen eşik değerini aştığında sizi uyarır. Disk doluluğu, sistem çökmesine ve veri kaybına neden olabileceği için kritik bir monitoring aracıdır.

Script Ne İşe Yarar?

Bu script, tüm mount edilmiş disk bölümlerini kontrol eder ve kullanım yüzdesini hesaplar. Eşik değeri aşıldığında:

  • E-posta uyarısı gönderir
  • En büyük dizinleri listeler (disk alanını hangi dizinlerin kullandığını gösterir)
  • Detaylı rapor sunar

Neden Kullanmalısınız?

Disk doluluğu, Linux sistemlerinde ciddi sorunlara yol açabilir:

  • Sistem çökmesi
  • Veri kaybı riski
  • Uygulama hataları
  • Log dosyalarının yazılamaması
  • Veritabanı işlemlerinin durması

Bu script sayesinde sorunları önceden tespit edip önlem alabilirsiniz.

Özellikler

  • Otomatik disk kullanım kontrolü
  • E-posta bildirimleri
  • En büyük dizinlerin listelenmesi
  • Özelleştirilebilir eşik değeri
  • Cron job ile tam otomasyon

Nasıl Kullanılır?

Adım Adım Kullanım Kılavuzu

1. E-posta Kurulumu

E-posta gönderebilmek için mail aracını kurun:

# Ubuntu/Debian
sudo apt-get install mailutils

# CentOS/RHEL
sudo yum install mailx

2. Script Dosyasını Oluşturun

nano disk_alert.sh

Script kodunu yapıştırın ve kaydedin.

3. Yapılandırma Ayarları

Script başındaki değişkenleri düzenleyin:

THRESHOLD=80              # Uyarı eşiği (yüzde)
EMAIL="[email protected]"  # Bildirim gönderilecek e-posta

4. Scripti Çalıştırılabilir Yapın

chmod +x disk_alert.sh

5. Test Çalıştırması

./disk_alert.sh

6. Cron Job ile Otomatikleştirin

# Crontab düzenle
crontab -e

# Her saat başı çalıştır
0 * * * * /path/to/disk_alert.sh >> /var/log/disk_alert.log 2>&1

# Her 30 dakikada bir çalıştır
*/30 * * * * /path/to/disk_alert.sh >> /var/log/disk_alert.log 2>&1

Eşik Değeri Ayarlama

Farklı diskler için farklı eşik değerleri kullanabilirsiniz. Scripti düzenleyerek kritik diskler için daha düşük eşik değerleri ayarlayabilirsiniz.

Gereksinimler

Gereksinimler

  • Linux/Unix Sistemi: Script Linux ve Unix tabanlı sistemlerde çalışır
  • df komutu: Disk kullanım bilgisi için (varsayılan kurulu)
  • du komutu: Dizin boyutları için (varsayılan kurulu)
  • mail/mailx: E-posta göndermek için
  • awk, grep, sort: Veri işleme için (varsayılan kurulu)

E-posta Kurulumu

E-posta gönderebilmek için mail aracını kurmanız gerekir:

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install mailutils

# CentOS/RHEL
sudo yum install mailx

# E-posta yapılandırması (opsiyonel)
sudo dpkg-reconfigure mailutils  # Debian/Ubuntu

SMTP Yapılandırması

E-posta gönderebilmek için SMTP sunucu bilgilerini yapılandırmanız gerekebilir. Gmail, SendGrid veya kendi SMTP sunucunuzu kullanabilirsiniz.

Kullanım Senaryoları

Kullanım Senaryoları

1. Production Sunucu İzleme

Production sunucularınızda disk kullanımını sürekli izleyin. Kritik eşik değerine ulaşıldığında anında haberdar olun.

2. Log Dosyası Yönetimi

Log dosyalarının disk alanını doldurmasını önlemek için disk kullanımını izleyin ve gerekirse log rotasyonu yapın.

3. Yedekleme Alanı Kontrolü

Yedekleme dizinlerinin dolmasını önlemek için disk kullanımını izleyin ve eski yedekleri temizleyin.

4. Çoklu Sunucu İzleme

Birden fazla sunucunuz varsa, her birinde bu scripti çalıştırarak merkezi bir monitoring sistemi oluşturabilirsiniz.

5. Proaktif Sorun Çözme

Disk doluluğu sorunlarını oluşmadan önce tespit edip çözebilirsiniz.

6. SLA Uyumluluğu

Hizmet seviyesi anlaşmalarında disk kullanımı izleme zorunluluğu varsa, bu script ile uyumluluk sağlayabilirsiniz.

Örnekler

Kullanım Örnekleri

Örnek 1: Temel Kullanım

# Scripti çalıştır
./disk_alert.sh

# Çıktı:
# Checking disk usage on server1...
# 
# Partition: /dev/sda1
# Mount Point: /
# Usage: 85%
# ⚠️  WARNING: Disk usage is above threshold!
# 
# Top 10 largest directories in /:
# 15G    /var/log
# 10G    /home/user
# 5G     /tmp

Örnek 2: Farklı Eşik Değerleri

# Kritik diskler için düşük eşik
THRESHOLD=70  # / (root) için
THRESHOLD=90  # /home için

# Scripti düzenleyerek farklı eşikler kullanabilirsiniz

Örnek 3: Slack/Telegram Bildirimi

# E-posta yerine webhook kullanın
send_alert() {
    local partition=$1
    local usage=$2
    curl -X POST -H 'Content-Type: application/json' \
        -d "{\"text\":\"Disk usage on $partition: ${usage}%\"}" \
        https://hooks.slack.com/services/YOUR/WEBHOOK/URL
}

Örnek 4: Otomatik Temizleme

# Eşik aşıldığında otomatik temizlik
if [ $USAGE -ge $THRESHOLD ]; then
    # Eski log dosyalarını temizle
    find /var/log -name "*.log" -mtime +30 -delete
    # Temp dosyalarını temizle
    rm -rf /tmp/*
fi

Kod

#!/bin/bash

# Disk Usage Alert System

THRESHOLD=80
EMAIL="[email protected]"
HOSTNAME=$(hostname)

echo "Checking disk usage on $HOSTNAME..."
echo ""

send_alert() {
    local partition=$1
    local usage=$2
    local subject="ALERT: Disk Usage on $HOSTNAME"
    local message="WARNING: Disk usage on $partition has reached ${usage}%\n\nPlease investigate immediately."
    
    echo -e "$message" | mail -s "$subject" "$EMAIL"
}

df -H | grep -vE "^Filesystem|tmpfs|cdrom|loop" | awk "{ print \$5 \" \" \$1 \" \" \$6 }" | while read output; do
    USAGE=$(echo $output | awk "{ print \$1}" | cut -d"%" -f1)
    PARTITION=$(echo $output | awk "{ print \$2 }")
    MOUNT=$(echo $output | awk "{ print \$3 }")
    
    echo "Partition: $PARTITION"
    echo "Mount Point: $MOUNT"
    echo "Usage: $USAGE%"
    
    if [ $USAGE -ge $THRESHOLD ]; then
        echo "⚠️  WARNING: Disk usage is above threshold!"
        send_alert "$PARTITION ($MOUNT)" "$USAGE"
        
        echo ""
        echo "Top 10 largest directories in $MOUNT:"
        du -h "$MOUNT" 2>/dev/null | sort -rh | head -n 10
    else
        echo "✓ Status: OK"
    fi
    echo ""
    echo "---"
    echo ""
done

echo "Disk usage check completed at $(date)"

Kullanım

# E-posta ayarlarını yapılandır
sudo apt-get install mailutils  # Debian/Ubuntu
# veya
sudo yum install mailx  # CentOS/RHEL

# Scripti düzenle
nano disk_alert.sh
# EMAIL değişkenini kendi e-postanla değiştir

chmod +x disk_alert.sh

# Manuel test
./disk_alert.sh

# Crontab ile otomatikleştir (her saat)
crontab -e
# Ekle: 0 * * * * /path/to/disk_alert.sh

Sorun Giderme

Sorun Giderme

Problem: E-posta Gönderilmiyor

Çözüm: Mail aracının kurulu olduğundan ve SMTP yapılandırmasının doğru olduğundan emin olun:

# Mail aracını test et
echo "Test" | mail -s "Test" [email protected]

# SMTP yapılandırmasını kontrol et
cat /etc/postfix/main.cf  # Postfix kullanıyorsanız

Problem: "df: command not found"

Çözüm: df komutu genellikle varsayılan kuruludur. Eksikse:

# Ubuntu/Debian
sudo apt-get install coreutils

# CentOS/RHEL
sudo yum install coreutils

Problem: Yanlış Disk Kullanım Yüzdesi

Çözüm: df komutunun çıktı formatını kontrol edin. Bazı sistemlerde format farklı olabilir. Scripti sisteminize göre düzenleyin.

Problem: Script Çok Sık Çalışıyor

Çözüm: Cron job ayarlarını kontrol edin. Her saat başı yeterli olabilir. Çok sık çalıştırmak gereksiz e-posta gönderir.

Problem: E-posta Spam Kutusuna Düşüyor

Çözüm: E-posta konusunu ve içeriğini daha açıklayıcı yapın. SPF, DKIM kayıtlarını kontrol edin.

Etiketler

disk monitoring uyarı sistemi disk kullanımı alert