Сучасні жорсткі диски мають внутрішній механізм, який називається S.M.A.R.T. за допомогою яких можна дізнатися, коли жорсткий диск ось-ось вийде з ладу. Чи не було б приємно серверу надіслати вам електронного листа до такої невдачі?
Огляд
Такі програми, як “mdadm” (для управління RAID програмним забезпеченням) та “Palimpsest Disk Utility” (використовується на Ubuntu LiveCD), використовують інформацію S.M.A.R.T, щоб повідомити вас, коли диск збирається або вийшов з ладу. Однак на безголовому сервері (без графічного інтерфейсу користувача) немає служби, яка повідомлятиме вас про очікувану загибель, поки не стане занадто пізно. Більше того, як би ви про це знали, не входячи на сервер вручну?
Цей сценарій під час запуску один раз на день за допомогою cron повідомляє про те, що будь-який із підрахунків пошкоджених секторів жорстких дисків системи досягнув межі, яка навмисно нижча за поріг "диск поганий", та надсилає попередження адміністратору машини.
Передумови та припущення
- Ви вже налаштували підтримку сервера електронною поштою, використовуючи “ Як налаштувати сповіщення електронною поштою на Linux ”Путівник.
- Ви використовуєте систему на основі Debian.
- Ви не використовуєте * апаратний RAID-контролер.
- Ви побачите, як я використовую VIM як програму редактора, це просто тому, що я звик до цього ... Ви можете використовувати будь-який інший редактор, який вам заманеться.
* Оскільки дуже можливо, що апаратний RAID-контролер блокує доступ системи до цієї інформації.
Налаштування
Встановіть пакет “smartmontools”, який зчитує інформацію S.M.A.R.T із контролера жорсткого диска та представляє її нам.
sudo aptitude встановити smartmontools - -
Створіть сценарій монітора:
sudo vim /root/smart-monitor.sh
Зробіть це своїм вмістом:
#! / Bin / Bash
######## Функція електронної пошти ########
email_admin_func ()
{
echo "To: [email protected]"> $ temp_email_file
echo "From: [email protected]" >> $ temp_email_file
echo "Тема: Монітор S.M.A.R.T порушений поріг" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t <$ temp_email_file
echo "Надіслано електронний лист адміністратору"
}
smartc_func ()
{
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s '' | cut -d '' -f11
}
######## Кінець функцій ########
######## Встановити робочий параметр ########
temp_email_file = / tmp / smart_monitor.txt
дозволений_поріг = 5 # встановити кількість поганих секторів, з якими ви бажаєте жити, рекомендовано 5.
######## Двигун ########
для i в sda sdb; do # Додайте або відніміть імена дисків із цього списку відповідно до налаштувань.
якщо [[ "`smartc_func $i`" -ge $allowed_threshold ]]; тоді
echo Електронна пошта адміністратору
email_admin_func "Один із HD-дисків на" `ім'я хосту`", досягнув верхнього порогового обмеження !!! nПорогове значення було встановлено: $ allowed_threshold, а статус диска $ i був: "` smartc_func $ i` "" "
бути
зроблено
Ключові моменти, на які слід звернути увагу:
- Функція електронної пошти - Встановіть відповідну інформацію, таку як назва машини та електронна адреса адміністратора.
- Дозволений поріг - встановіть для цього параметра значення, яке, на вашу думку, є доречним, я використав 5, оскільки обмеження, встановлене для жорстких дисків, що використовуються мною ", було 10. (i'v знайшов поріг для дисків" споживчого класу "на досягати 140).
- Встановіть пристрої, які ви хочете контролювати, налаштувавши перелік імен дисків у циклі “for”. Наразі включено два диски (sda та sdb), тому налаштуйте налаштування. Ви можете включити всі свої диски або лише деякі, якщо вам потрібно * виключити диск з якихось причин.
* у моїй початковій установці першим диском був флеш-накопичувач, тому читання його інформації, якщо це взагалі можливо, не надто корисне.
Зробіть скрипт виконуваним:
sudo chmod + x /root/smart-monitor.sh
Налаштування виконано.
Заплануйте автоматичний запуск сценарію
Ми хочемо, щоб сценарій запускався автоматично, тому ми створимо для нього нове завдання Cron.
Як зазначено в
Як налаштувати сповіщення електронною поштою на Linux
Результатом цього є те, що якщо сам сценарій виявить помилку, cron автоматично повідомляє нас електронною поштою, як тільки це станеться.
Відкрийте планувальник завдань cron:
sudo crontab -e
Додайте це до його вмісту:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Це дозволить запускати сценарій щоранку о 7 ранку.
Усі ваші сектори належать нам :)