Laman » bagaimana untuk » Skrip Monitor Cakera Keras untuk Pelayan Linux tanpa kepala

    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 :)