disk

Menganai judul di atas “Notifikasi Disk Full”, Penulis pernah mengalami dimana server ditempat kerja tidak bisa berjalan dengan semestinya (Website, Akses SSH, SQL Lumpuh), Setelah di selidiki ternyata hal tersebut diakibatkan karna Partisi /var di server over capacity. Sebagai seorang noob yang terpikirkan saat itu adalah delete beberapa file yang dirasa tidak terlalu penting(log log file lama). Dan memang benar beberapa service seperti ssh dapat berjalan kembali.

Masalah muncul setelah nya yaitu website yang di hosting pada server tersebut tetap crash dengan galat “Error Koneksi ke Database”, hmmm lagi lagi sebagai seorang noob coba saya restart mysql server nya.

Oke mysql server berhasil di restart tanpa ada error pada saat proses restart. Nah saya akses kembali itu website dan tetap website masih crash, Mulai lah panik googling sana sini, cek log dan cek struktur database. Dari hasil googling sana googling sini ternyata beberapa tabel ada yang crash (ini dampak karna disk yang over capacity), Check dan repair table masalah selesai.

Apa yang saya petik dari sana ? Jangan biarkan masalah disk yang over capacity menambah pekerjaan saya, karna saya sadar saya adalah admin yang sangat lazy di samping noob juga maka saya membuat script sederhana untuk mengecek disk (jadi saya tidak usah check disk manually secara berkala). Script sederhana ini ya memang sederhana tugas nya adalah mengecek Capacity dari disk saat ini bila ada partisi dari disk tersebut yang capacity nya sudah 98% dan sisa dari disk nya lebih kecil dari 5G, maka script mengirimkan notif ke email saya, Lumayan meski sederhana tapi cukup membantu menyelesaikan permasalahan yang sederhana (check disk manually secara reguler).

Oke berikut ini script nya :

#!/usr/local/bin/perl -w
use strict;
my $hostname = qx/hostname/;
my @disk = qx/df -m/; shift(@disk); 
foreach my $partisi (@disk) {
    next if ($partisi =~ /tmpfs|devfs|fdescfs/);
    my ($label, $size, $used, $avail, $capacity, $mounted) = split(/\s+/, $partisi);
    if ($avail <= 5120 and $capacity ge 98) {
        my $size_disk = $avail / 1000;
        my $isi = "$hostname Partisi $mounted : Sisa nya Tinggal $size_disk G dan penggunaan nya udah $capacity";
        system("echo '$isi' | /usr/bin/mail -s 'DISK-FULL $hostname' admin\@admin.net.id");
      }
}

Jalan script di atas dengan menggunakan crontab setiap 10 menit sekali.

*/10 * * * * /root/notif_disk.pl

Scirpt ini akan mengirimkan notifikasi ke email (Early Warning)sebelum terjadinya over capacity pada partisi yang ada di sever.