Сценарій монітора жорсткого диска для безголосних серверів Linux
Сучасні жорсткі диски мають внутрішній механізм під назвою 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 "До: [email protected]"> $ temp_email_file
echo "З: [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
ехо "Надіслано адміністратору електронну пошту"
smartc_func ()
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s "| cut-d" -f11
######## Кінець функцій ########
######## Встановити робочий параметр ########
temp_email_file = / tmp / smart_monitor.txt
allowed_threshold = 5 # встановити кількість поганих секторів, з якими ви готові жити, рекомендовано 5.
######## Engine ########
для i в sda sdb; do # Додайте або віднімайте назви дисків з цього списку відповідно до налаштувань.
if [["'smartc_func $ i'" -ge $ allowed_threshold]]; потім
echo Електронна адреса адміністратора
email_admin_func "Один з HD на" 'hostname' ", досягла верхнього граничного значення! nПорогові значення було встановлено на: $ allowed_threshold, а статус диска $ i:" smartc_func $ i '""
fi
зроблено
Ключові моменти, на які слід звернути увагу:
- Функція електронної пошти - Встановіть відповідну інформацію, наприклад, назву машини та адресу адміністратора.
- Дозволений поріг - Встановіть цей параметр на те, що ви вважаєте доречним, я використав 5, оскільки ліміт, встановлений для жорстких дисків, які використовуються на сервері, дорівнював 10. дорівнює 140).
- Встановіть пристрої, які потрібно контролювати, налаштувавши перелік імен дисків у циклі «за». Наразі включено два диски (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 ранку.
Весь ваш сектор належить нам :)