Skip to content
gSpotx2f edited this page Oct 26, 2021 · 9 revisions

Описание

S.M.A.R.T.HTML - скрипт, предназначенный для мониторинга SMART параметров жёстких дисков в ОС Linux. Скрипт создает HTML страницу со списком SMART атрибутов и отображает их изменения. Умеет рисовать графики с помощью RRDtool и отправлять email-оповещения. Решение изначально создавалось для мониторинга USB-диска на маршрутизаторах с прошивками от "энтузиастов" (http://wl500g.info) и Padavan'а (https://bitbucket.org/padavan/), а поэтому полностью совместимо с ash и awk из busybox...

Принцип работы

Скрипт получает данные из вывода smartctl, сравнивает их с сохранёнными значениями предыдущей проверки и создаёт HTML страницу с таблицей атрибутов, отображая в ней последние изменения значений. Также пишет в лог при изменении критически важных атрибутов и может отсылать сообщения по email. Опционально использует RRDtool для построения графика температуры (вообще, скрипт позволяет создавать RRD графики для любых SMART атрибутов). Для RRD присутствуют несколько вариантов пресетов создания баз, в зависимости от интервала обновления данных.

Зависимости

  • Для работы необходимы: smartmontools (версии >= 7.0), fdisk.

  • Для отрисовки графиков нужно установить RRDtool (версии >= 1.2).

  • Для использования email-оповещений требуется наличие SMTP-клиента.

Установка

Установка и настройка для прошивки от Padavan'а

Настройка email-оповещений (опционально).

Email-оповещения включаются опцией USE_MAIL=1 в конфигурационном файле. Весь код работы оповещений находится в отдельном скрипте, поэтому возможно применять любые доступные утилиты. Для sendmail и msmtp есть готовые скрипты.

Установка и настройка на примере скрипта для msmtp:

  1. Установить msmtp:

     opkg install msmtp
    
  2. Скачать скрипт в /opt/usr/bin:

     wget --no-check-certificate -O /opt/usr/bin/smarthtml_mailer_msmtp https://raw.githubusercontent.com/gSpotx2f/smarthtml/master/usr/bin/smarthtml_mailer_msmtp
     chmod +x /opt/usr/bin/smarthtml_mailer_msmtp
    
  3. В конфигурационном файле /opt/etc/smarthtml.conf задать путь к mailer-скрипту и включить оповещения:

     MAILER_SCRIPT="/opt/usr/bin/smarthtml_mailer_msmtp"
     USE_MAIL=1
    
  4. Для правильной работы должны быть заданы следующие переменные в mailer-скрипте (/opt/usr/bin/smarthtml_mailer_msmtp):

     MAIL_RECIPIENT="email@gmail.com"    # email на который будут приходить оповещения
     MAIL_SENDER="email@gmail.com"       # email для отправки оповещений (можно использовать предыдущий из MAIL_RECIPIENT)
     MAIL_LOGIN="email@gmail.com"        # логин для аутентификации на SMTP сервере (в случае gmail - это сам адрес почты)
     MAIL_PASSWORD="password"            # пароль для аутентификации на SMTP сервере
     MAIL_SMTP="smtp.gmail.com"          # адрес SMTP сервера для отправки сообщения
     MAIL_SMTP_PORT=587                  # порт SMTP сервера
    
  5. Проверить корректность настроек можно отправив тестовое сообщение:

     /opt/usr/bin/smarthtml mailtest
    

Установка скрипта для sendmail, в целом, аналогична (+ необходим openssl). Включение в конфиге: MAILER_SCRIPT="/opt/usr/bin/smarthtml_mailer_sendmail".

Установка и настройка скрипта для телеграм-бота:

Mailer-скрипт для телеграм на основе скрипта из Padavan's wiki.

  1. Установить curl:

     opkg install curl
    
  2. Скачать скрипт в /opt/usr/bin:

     wget --no-check-certificate -O /opt/usr/bin/smarthtml_mailer_tg https://raw.githubusercontent.com/gSpotx2f/smarthtml/master/usr/bin/smarthtml_mailer_tg
     chmod +x /opt/usr/bin/smarthtml_mailer_tg
    
  3. В конфигурационном файле /opt/etc/smarthtml.conf задать путь к mailer-скрипту и включить оповещения:

     MAILER_SCRIPT="/opt/usr/bin/smarthtml_mailer_tg"
     USE_MAIL=1
    
  4. Выполнить шаги из инструкции для создания бота и заполнения переменных API_TOKEN и CHAT_ID в скрипте /opt/usr/bin/smarthtml_mailer_tg.

  5. Проверить корректность работы оповещений можно отправив тестовое сообщение:

     /opt/usr/bin/smarthtml mailtest
    

Можно написать собственный скрипт для оповещений. При запуске, первым аргументом mailer-скрипту передаётся путь к файлу с сообщением (при стандартных настройках: /opt/var/smarthtml/email). Второй, опциональный, аргумент: debug, передаётся при отправке тестового сообщения (при его наличии добавляется аргумент -v в команду запуска msmtp или sendmail) и может применяться как ключ для вывода в консоль отладочной информации и пр.

Установка и настройка в других Linux-дистрибутивах.

Что касается настройки под различные версии Linux, то обычно изменений требует путь к директории с данными скрипта (SCRIPT_DATA_DIR), директории веб-сервера (HTML_DIR), расположение скрипта для email-оповещений (MAILER_SCRIPT), для CGI модуля (smarthtml.cgi) путь к основному скрипту smarthtml (SMARTHTML_CMD) и имя суперюзера (CGI_SUDO_USER="root"). В самом скрипте smarthtml, возможно, понадобится изменить путь к конфигурационному файлу (CONFIG_FILE). Все главные конфигурационные параметры вынесены в начало скрипта (секция "Platform-specific settings"). Также, можно задать мониторинг нескольких дисковых устройств (через пробел) в переменной DEVICES="/dev/sda /dev/sdb /dev/sdc" и т.п. Некоторые дистрибутивы (например Ubuntu) изначально содержат урезанную версию awk (mawk), поэтому для работы скрипта нужно доустановить полноценный awk (gawk), который можно найти в репозитории любого дистрибутива.

Параметры вызова.

smarthtml               # запуск основной процедуры выполнения (запускается cron'ом по расписанию)
smarthtml norrd         # запуск без обновления базы RRD (используется CGI модулем)
smarthtml resetwarn     # сброс предупреждений (красной строки) после изменений критических параметров
smarthtml resetcount    # сброс счётчиков улучшения и ухудшения параметров
smarthtml makerrdgraph  # только отрисовка графиков RRD без проверки SMART и без изменения данных
smarthtml mailtest      # отправка тестового сообщения (в случае использования email-оповещений)
smarthtml -h|--help     # инфо о параметрах вызова

Обновление до версии 2.0.

Базы SMART атрибутов и RRD совместимы с предыдущими версиями, конфигурационные файлы (/opt/etc/smarthtml.conf) не совместимы. В v2.0 код обработки SMART данных полностью переписан под smartctl >= 7.0, более старые версии smartctl не поддерживаются. Также, изменилось имя файла скрипта: smarthtml вместо smarthtml.sh.

Скриншоты