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ı.
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.