Hard drive modern memiliki mekanisme internal yang disebut S.M.A.R.T. yang melaluinya adalah mungkin untuk mengetahui kapan hard disk akan gagal. Bukankah menyenangkan server untuk mengirimi Anda email sebelum kegagalan seperti itu?
Gambaran
Program seperti "mdadm" (untuk manajemen RAID perangkat lunak) dan "Palimpsest Disk Utility" (digunakan pada Ubuntu LiveCD), menggunakan informasi S.M.A.R.T untuk memberi tahu Anda saat disk akan atau gagal. Namun pada server tanpa kepala (tanpa GUI) tidak ada layanan yang akan memberi tahu Anda tentang malapetaka yang tertunda sebelum terlambat. Selain itu, bagaimana Anda akan mengetahuinya tanpa masuk ke server secara manual?
Skrip ini, ketika dijalankan sekali sehari dengan cron, akan memberi tahu jika salah satu jumlah sektor buruk Hard Drive sistem telah mencapai batas yang sengaja diturunkan dari ambang batas "disk buruk", dan mengirimkan peringatan melalui email ke administrator mesin.
Prasyarat dan asumsi
- Anda telah menyiapkan dukungan Email untuk server menggunakan " Cara Mengatur Peringatan Email di Linux "Panduan.
- 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.
Mendirikan
Instal paket "smartmontools" yang membaca informasi S.M.A.R.T dari pengontrol hard drive dan menyajikannya kepada kami.
sudo aptitude menginstal smartmontools
Buat skrip monitor:
sudo vim /root/smart-monitor.sh
Jadikan ini sebagai konten:
#! / Bin / Bash
######## Fungsi email ########
email_admin_func()
{
echo "To: [email protected]"> $ temp_email_file
echo "Dari: nama- [email protected]" >> $ temp_email_file
echo "Subjek: Ambang Batas monitor S.M.A.R.T dilanggar" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t <$ temp_email_file
echo "Mengirim Email ke Admin"
}
smartc_func ()
{
/ usr / sbin / smartctl -A / dev / $ 1 | grep Realokasi_Sector_Ct | tr -s '' | cut -d '' -f11
}
######## Akhir Fungsi ########
######## Tetapkan parameter kerja ########
temp_email_file = / tmp / smart_monitor.txt
Allowed_threshold = 5 #set jumlah bad sector yang ingin Anda jalani, disarankan 5.
########Mesin########
untuk saya di sda sdb; do # Tambah atau kurangi nama disk dari daftar ini yang sesuai untuk pengaturan Anda.
jika [[ "`smartc_func $i`" -ge $allowed_threshold ]]; kemudian
echo Mengirim email ke Administrator
email_admin_func "Salah satu HD di" `hostname`", telah mencapai batas ambang atas !!! n Ambang batas disetel ke: $ allow_threshold dan status disk $ i adalah: "` smartc_func $ i` ""
menjadi
selesai
Hal-hal penting yang perlu diperhatikan adalah:
- Fungsi email - Setel informasi yang sesuai seperti nama mesin dan email administrator.
- Ambang batas yang diizinkan - Setel parameter ini ke apa yang Anda rasa tepat, saya telah menggunakan 5 karena batas yang ditetapkan untuk hard drive "tingkat server" yang saya gunakan adalah 10. (saya menemukan ambang batas untuk drive "tingkat konsumen" ke setinggi 140).
- Atur perangkat yang ingin Anda pantau dengan menyesuaikan pencacahan nama disk di loop "untuk". 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 alasan tertentu.
* dalam penyiapan awal saya, disk pertama adalah flash drive sehingga membaca informasinya jika memungkinkan tidak banyak berguna.
Jadikan 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 pekerjaan Cron baru untuk itu.
Seperti yang dinyatakan di "
Cara Mengatur Peringatan Email di Linux
”Panduan hasil dari melakukannya, adalah jika skrip itu sendiri mengalami 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 skrip untuk dijalankan setiap pagi pada jam 7 pagi.
Semua sektor Anda adalah milik kami :)