В современной ИТ-инфраструктуре принято считать основными ресурсами производительность процессора и оперативной памяти. Но не стоит забывать, что все программы, будь то платформа 1С Предприятие или ОС Windows, устанавливаются на диски. Их состояние напрямую отражается на производительности системы.
В данной статье рассмотрим возможности мониторинга средствами ПО SMARTTOOLS с использованием системы мониторинга Zabbix.
В статье используется ОС Windows Server 2022.
Для начала нужно установить SMARTTOOLS.
Скачать можно по ссылке.
После скачивания запускаем установщик и нажимаем “Далее”, не меняя настроек.
Теперь нам потребуется провести первое сканирование, чтобы данные могли корректно отправляться агентом на Zabbix-сервер.
Для этого откройте CMD с правами администратора и перейдите в папку с программой, выполнив команду:
C:\Program Files\smartmontools\bin
А затем обратитесь к самой программе:
smartctl.exe --scan
Если программа смогла вывести информацию о всех дисках, значит всё работает корректно. Если нет, обратите внимание на состояние системы и критические ошибки в ней.
Теперь нужно установить Zabbix-agent 2. Именно второй, т.к. в него встроена работа со smart-данными из SMARTTOOLS.
Скачать можно с официального сайта Zabbix. Лучше использовать .MSI-формат — во время установки можно указать все данные для подключения и выбрать путь установки. Не забудьте исключить порт из Firewall, который указали при установке.
Далее нужно открыть конфиг Zabbix и добавить в него строку:
Plugins.Smart.Path="C:\Program Files\smartmontools\bin\smartctl.exe"
Сохраните файл, выйдите из него и перезапустите службу агента.
Основные настройки со стороны сервера с агентом Zabbix завершены.
Теперь нужно добавить шаблоны в сам Zabbix сервер. Их можно найти на том же сайте, где и агент. Как его установить, описывает инструкция на странице с этим шаблоном.
В интерфейсе Zabbix создайте узел для мониторинга и добавьте к нему шаблон SMART by Zabbix agent 2 active или SMART by Zabbix agent 2. Подключение соответствующего шаблона зависит от вида соединения между агентом и сервером — об этом можно прочитать в инструкции к шаблону.
Теперь нужно подождать некоторое время, т.к. данные приходят не сразу, и при этом в этом шаблоне нет предустановленных элементов данных, они появятся вместе с полученными данными.
Как понять, что данные вообще отправляются? Для этого выполните две команды в CMD с правами администратора:
Перейдите в папку с Zabbix агентом.
В моём случае команда выглядит так (замените путь на свой):
cd "C:\Program Files\Zabbix Agent 2"
Затем выполните команду для агента Zabbix:
zabbix_agent2.exe -t smart.disk.discovery
Если команда вывела ошибку, значит агент настроен неправильно.
Если вывела строку, начинающуюся со smart.disk.discovery и множеством слов и символов — значит данные на сервер отправляются.
Рисунок 1 – Полученные данные
Рисунок 2 – Отключение ненужных элементов
Краткое описание элементов мониторинга SMART
| Название элемента | Ключ | Описание |
| SMART [#NAME]: Device model | smart.disk.model[{#NAME}] | Модель устройства. Извлекается из SMART-данных диска. |
| SMART [#NAME]: Serial number | smart.disk.sn[{#NAME}] | Серийный номер устройства. |
| SMART [#NAME]: Exit status | smart.disk.es[{#NAME}] | Код выхода утилиты smartctl. Битовый флаг: бит 0 — команда выполнена, бит 1 — ошибка ввода-вывода, бит 2 — ошибка синтаксиса, бит 3 — диск отказывает, бит 4 — атрибуты ниже порога. |
| SMART [#NAME]: Smartctl error | smart.disk.error[{#NAME}] | Текст ошибки при выполнении smartctl. |
| SMART [#NAME]: Critical warning | smart.disk.critical_warning[{#NAME}] | Критические предупреждения NVMe-контроллера. Битовое поле: 0 — перегрев, 1 — деградация, 2 — резервная область, 3 — ошибка контроллера, 4 — перегрев в зоне. |
| SMART [#NAME]: Percentage used | smart.disk.percentage_used[{#NAME}] | Процент израсходованного ресурса NVMe-накопителя. |
| SMART [#NAME]: Media errors | smart.disk.media_errors[{#NAME}] | Количество неисправимых ошибок данных, обнаруженных контроллером NVMe. |
| SMART [#NAME]: Temperature | smart.disk.temperature[{#NAME}] | Текущая температура диска в градусах Цельсия. |
| SMART [#NAME]: Power on hours | smart.disk.hours[{#NAME}] | Общее количество часов наработки (power-on hours). |
| SMART [#NAME]: Self-test passed | smart.disk.test[{#NAME}] | Результат самотестирования SMART. Возвращает 1, если тест пройден, иначе 0. |
| SMART [#NAME]: Raw_Read_Error_Rate | smart.disk.attribute.raw_read_error_rate[{#NAME}] | Частота ошибок чтения с поверхности диска. Сырое значение зависит от производителя. |
| SMART [#NAME]: Reallocated_Sector_Ct | smart.disk.attribute.reallocated_sector_ct[{#NAME}] | Количество переназначенных секторов. Увеличение указывает на деградацию диска. |
| SMART [#NAME]: Spin_Up_Time | smart.disk.attribute.spin_up_time[{#NAME}] | Среднее время раскрутки шпинделя (для HDD). |
| SMART [#NAME]: Start_Stop_Count | smart.disk.attribute.start_stop_count[{#NAME}] | Количество циклов запуска/остановки шпинделя. |
| SMART [#NAME]: Power_Cycle_Count | smart.disk.attribute.power_cycle_count[{#NAME}] | Количество полных циклов включения/выключения питания. |
| SMART [#NAME]: Reported_Uncorrect | smart.disk.attribute.reported_uncorrect[{#NAME}] | Количество ошибок, которые не удалось исправить аппаратным ECC. |
| SMART [#NAME]: Seek_Error_Rate | smart.disk.attribute.seek_error_rate[{#NAME}] | Частота ошибок позиционирования головок (для HDD). |
| SMART [#NAME]: Program_Fail_Chip_Ct | smart.disk.attribute.program_fail_count_chip[{#NAME}] | Количество сбоев записи в чип флеш-памяти (для SSD). |
| SMART [#NAME]: Bad_Block_Rate | smart.disk.attribute.bad_block_rate[{#NAME}] | Частота появления плохих блоков (для SSD). |
| SMART [#NAME]: Get disk attributes | smart.disk.get[{#PATH},{#RAIDTYPE}] | Основной элемент, выполняющий сбор SMART-данных через smartctl. Зависимые элементы используют его вывод. |