Skrip Monitor Cakera Keras untuk Pelayan Linux tanpa kepala
Pemacu keras Moden mempunyai mekanisme dalaman yang dipanggil S.M.A.R.T. di mana ia mungkin diketahui apabila cakera keras hampir gagal. Bukankah sebaiknya pelayan menghantar E-mel kepada anda sebelum kegagalan tersebut?
Gambaran keseluruhan
Program seperti "mdadm" (untuk pengurusan RAID perisian) dan "Utiliti Disk Palimpsest" (digunakan pada Ubuntu LiveCD), gunakan maklumat S.M.A.R.T untuk memaklumkan kepada anda apabila cakera itu hampir atau gagal. Walau bagaimanapun pada pelayan tanpa kepala (tiada GUI) tidak ada perkhidmatan yang akan memaklumkan anda tentang azab yang belum selesai sebelum terlambat. Lebih-lebih lagi, bagaimana anda tahu mengenainya tanpa secara manual log masuk ke pelayan?
Skrip ini, apabila dijalankan sekali sehari dengan cron, akan memberi amaran jika mana-mana sistem buruk Cakera sistem yang dikira telah mencapai had yang sengaja menurunkan ambang ambang "cakera itu", dan e-mel amaran kepada pentadbir mesin.
Prasyarat dan andaian
- Anda telah menyediakan sokongan E-mel untuk pelayan menggunakan panduan "Cara Menyediakan Isu E-mel di Linux".
- Anda menggunakan sistem berasaskan Debian.
- Anda tidak menggunakan pengawal RAID * perkakasan.
- Anda akan melihat saya menggunakan VIM sebagai program editor, ini hanya kerana saya digunakan untuk itu ... anda boleh menggunakan editor lain yang anda suka.
* Kerana sangat mungkin pengawal RAID perkakasan menghalang akses sistem ke maklumat ini.
Persediaan
Pasang pakej "smartmontools" yang membaca maklumat S.M.A.R.T dari pengawal cakera keras dan membentangkannya kepada kami.
sudo aptitude install smartmontools
Buat skrip monitor:
sudo vim /root/smart-monitor.sh
Jadikan ini kandungan:
#! / bin / bash
######## Fungsi E-mel ########
email_admin_func ()
echo "Kepada: [email protected]"> $ temp_email_file
echo "From: [email protected]" >> $ temp_email_file
echo "Subjek: S.M.A.R.T monitor Threshold dilanggar" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t < $temp_email_file
echo "Menghantar Email kepada Admin"
smartc_func ()
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s "| cut -d" -f11
######## Akhir Fungsi ########
######## Tetapkan parameter kerja ########
temp_email_file = / tmp / smart_monitor.txt
allowed_threshold = 5 #set jumlah sektor buruk yang anda mau hidup dengan, disarankan 5.
######## Engine ########
untuk i sda sdb; lakukan # Tambah atau tolak nama cakera dari senarai ini sesuai untuk persediaan anda.
jika [["'smartc_func $ i'" -ge $ allowed_threshold]]; kemudian
echo Emailing the Administrator
email_admin_func "Salah satu daripada HDs pada" 'nama hos' ", telah mencapai had ambang di atas! n Ambang ditetapkan kepada: $ dibenarkan_threshold dan status $ i disk adalah:" 'smartc_func $ i' ""
fi
dilakukan
Perkara-perkara penting yang perlu diperhatikan ialah:
- Fungsi e-mel - Tetapkan maklumat yang sesuai seperti nama mesin dan e-mel pentadbir.
- Ambang yang dibenarkan - Tetapkan parameter ini kepada apa yang anda rasa sesuai, saya telah menggunakan 5 kerana had yang ditetapkan untuk cakera "gred pelayan" yang saya gunakan adalah 10. (saya mendapati ambang untuk "gred pengguna" memandu ke setinggi 140).
- Tetapkan peranti yang ingin anda pantau dengan melaraskan penghitungan nama cakera dalam "untuk" gelung. Pada masa ini dua cakera (sda & sdb) dimasukkan, jadi laraskan untuk persediaan anda. Anda boleh memasukkan semua cakera anda atau hanya beberapa, jika anda perlu * mengecualikan cakera atas sebab tertentu.
* dalam persediaan asal saya cakera pertama adalah pemacu kilat jadi membaca maklumatnya sekiranya mungkin tidak banyak digunakan.
Buat skrip boleh laku:
sudo chmod + x /root/smart-monitor.sh
Persediaan dilakukan.
Jadual skrip akan dijalankan secara automatik
Kami mahu membuat skrip berjalan secara automatik supaya kami akan mencipta pekerjaan baru Cron untuknya.
Seperti yang dinyatakan di dalam "Cara Menyediakan Isu E-mel di Linux", panduan itu adalah sekiranya skrip itu sendiri mengalami ralat, cron secara automatik akan memberitahu kami melalui e-mel sebaik sahaja ia berlaku.
Buka penjadual kerja cron:
sudo crontab -e
Tambah ini kepada kandungannya:
0 7 * * * /root/smart-monitor.sh> /tmp/last_smart_monitor_run.log
Ini akan menetapkan skrip untuk dijalankan setiap pagi pada 7AM.
Semua sektor anda adalah milik kami :)