Ikhtisar
Program seperti "mdadm" (untuk manajemen perangkat lunak RAID) dan "Palimpsest Disk Utility" (digunakan pada Ubuntu LiveCD), gunakan informasi S.M.A.R.T untuk memberi tahu Anda kapan disk tersebut akan atau telah gagal. Namun pada server tanpa kepala (tanpa GUI) tidak ada layanan yang akan memberitahu Anda tentang penghentian sementara sebelum terlambat. Selain itu, bagaimana Anda akan tahu tentang hal itu tanpa secara manual masuk ke server?
Skrip ini, ketika dijalankan sekali sehari dengan cron, akan memperingatkan jika salah satu dari Hard Drive sistem bad sector yang terhitung telah mencapai batas yang secara sengaja lebih rendah dari ambang "disk buruk", dan mengirim email peringatan ke administrator mesin.
Prasyarat dan asumsi
- Anda telah menyiapkan dukungan Email untuk server menggunakan panduan "Cara Pengaturan Email Alerts pada Linux".
- Anda menggunakan sistem berbasis Debian.
- Anda tidak menggunakan * pengontrol RAID perangkat keras.
- Anda akan melihat saya menggunakan VIM sebagai program editor, ini hanya karena saya sudah terbiasa … Anda dapat menggunakan editor lain yang Anda inginkan.
* Karena sangat mungkin pengontrol RAID perangkat keras memblokir akses sistem ke informasi ini.
Mempersiapkan
Instal paket "smartmontools" yang membaca informasi S.M.A.R.T dari pengontrol hard drive dan mengirimkannya kepada kami.
sudo aptitude install smartmontools
Buat skrip monitor:
sudo vim /root/smart-monitor.sh
Jadikan ini kontennya:
#!/bin/bash ########Email function######## email_admin_func() { echo 'To: [email protected]' > $temp_email_file echo 'From: [email protected]' >> $temp_email_file echo 'Subject: S.M.A.R.T monitor Threshold breached' >> $temp_email_file echo '' >> $temp_email_file echo -e $1 >> $temp_email_file /usr/sbin/ssmtp -t < $temp_email_file echo 'Sent an Email to the Admin' }
smartc_func() { /usr/sbin/smartctl -A /dev/$1 | grep Reallocated_Sector_Ct |tr -s ' '|cut -d' ' -f11 }
########End of Functions########
########Set working parameter######## temp_email_file=/tmp/smart_monitor.txt allowed_threshold=5 #set the amount of bad sectors your willing to live with, recommended 5.
########Engine######## for i in sda sdb; do # Add or subtract disk names from this list as appropriate for your setup. if [ '`smartc_func $i`' -ge $allowed_threshold ]; then echo Emailing the Administrator email_admin_func 'One of the HDs on '`hostname`', has reached the upper threshold limit!!! nThe threshold was set to:$allowed_threshold and the $i disk status was: '`smartc_func $i`'' fi done
Poin utama yang perlu diperhatikan adalah:
- Fungsi email - Atur informasi yang sesuai seperti nama mesin dan email administrator.
- Batasan yang diizinkan - Tetapkan parameter ini sesuai keinginan Anda, saya telah menggunakan 5 karena batas yang ditetapkan untuk hard drive "kelas server" yang digunakan adalah 10. (saya menemukan ambang batas untuk drive "tingkat konsumen") setinggi 140).
- Atur perangkat yang ingin Anda pantau dengan menyesuaikan pencacahan nama disk di loop "for". Saat ini dua disk (sda & sdb) disertakan, jadi sesuaikan untuk pengaturan Anda. Anda dapat menyertakan semua disk Anda atau hanya beberapa, jika Anda perlu * mengecualikan disk karena beberapa alasan.
* di pengaturan awal saya, disk pertama adalah flash drive sehingga membaca informasinya jika mungkin tidak banyak bermanfaat.
Buat skrip dapat dieksekusi:
sudo chmod +x /root/smart-monitor.sh
Pengaturan selesai.
Jadwalkan skrip untuk dijalankan secara otomatis
Kami ingin membuat skrip berjalan secara otomatis sehingga kami akan membuat tugas Cron baru untuknya. Seperti yang dinyatakan dalam “Cara Mengatur Pemberitahuan Email di Linux” memandu penyelesaiannya, adalah jika skrip itu sendiri menemui kesalahan, cron akan secara otomatis memberi tahu kami melalui email segera setelah itu terjadi.
Buka penjadwal tugas cron:
sudo crontab -e
Tambahkan ini ke isinya:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Ini akan mengatur naskah untuk dijalankan setiap pagi jam 7 pagi.
Semua sektor Anda adalah milik kami:)