/ Skript na sledovanie pevného disku pre servery bez Linuxu

Skript na sledovanie pevného disku pre servery bez Linuxu

chladný-kreslený-2569506

Moderné pevné disky majú interný mechanizmuss názvom S.M.A.R.T. prostredníctvom ktorého je možné zistiť, kedy sa pevný disk chystá zlyhať. Nebolo by pekné, keby vám server poslal e-mail skôr, ako sa tak stane?

Prehľad

Programy ako „mdadm“ (pre softvérové ​​pole RAID)správy) a „Palimpsest Disk Utility“ (používa sa na Ubuntu LiveCD), použite informácie S.M.A.R.T, aby vás informovali, keď sa disk blíži alebo zlyhá. Avšak na bezhlavom serveri (bez GUI) neexistuje žiadna služba, ktorá by vás informovala o čakajúcom zániku skôr, ako bude príliš neskoro. Ako by ste sa o tom dozvedeli bez manuálneho prihlásenia na server?

Tento skript, keď beží raz denne s cronom, budeupozorniť, ak počet chybných sektorov pevných diskov systému dosiahol limit, ktorý je úmyselne nižší ako prahová hodnota „disk je chybný“, a upozornenie pošlite e-mailom správcovi zariadenia.

Predpoklady a predpoklady

  • Už ste nastavili e-mailovú podporu pre server pomocou príručky „Ako nastaviť e-mailové upozornenia v systéme Linux“.
  • Používate systém založený na Debiane.
  • Nepoužívate * hardvérový radič RAID.
  • Uvidíte, že používam VIM ako editorský program, je to len preto, že som na to zvyknutý ... môžete použiť ľubovoľného iného editora, ktorý by ste chceli.

* Pretože je veľmi možné, že hardvérový radič RAID blokuje prístup systému k týmto informáciám.

Nastaviť

Nainštalujte balík „smartmontools“, ktorý prečíta informácie o S.M.A.R.T z radiča pevného disku a predloží ich nám.

sudo aptitude install smartmontools

Vytvorte skript monitora:

sudo vim /root/smart-monitor.sh

Nech je to obsah:

#!/bin/bash
########Email function########
email_admin_func()
{
echo "To: machine-admin@some-domain.com" > $temp_email_file
echo "From: machine-name@some-domain.com" >> $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

Kľúčové body, ktoré treba poznamenať, sú:

  • E-mailová funkcia - Nastavte príslušné informácie, ako je názov počítača a e-mail správcu.
  • Povolený prah - Nastavte tento parameter na čomáte pocit, že je to vhodné, použil som 5, pretože limit stanovený pre pevné disky typu „server grade“, ktoré som používal, bol 10. (Zistil som, že prah pre disky typu „spotrebiteľský stupeň“ je až 140).
  • Nastavte zariadenia, podľa ktorých chcete monitorovaťúprava výčtu názvov diskov v slučke „for“. Momentálne sú zahrnuté dva disky (sda & sdb), takže ich upravte podľa nastavenia. Ak potrebujete disk z nejakého dôvodu * vylúčiť, môžete zahrnúť všetky disky alebo len niektoré.

* v mojom pôvodnom nastavení bol prvým diskom flash disk, takže čítanie jeho informácií, ak vôbec nie je veľmi užitočné.

Vytvorte spustiteľný skript:

sudo chmod +x /root/smart-monitor.sh

Nastavenie je hotové.

Naplánujte automatické spúšťanie skriptu

Chceme, aby sa skript spustil automaticky, aby sme preň vytvorili novú úlohu Cron.
Ako je uvedené v príručke „Ako nastaviť e-mailové upozornenia v systéme Linux“, je to tak, že ak skript sám zaznamená chybu, cron nás bude automaticky informovať prostredníctvom e-mailu ihneď, ako k tomu dôjde.

Otvorte plánovač úloh cron:

sudo crontab -e

Pridajte to k svojmu obsahu:

0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log

Týmto nastavíte skript, aby sa spúšťal každé ráno o 7:00.


Celý váš sektor patrí nám :)</ P>