Итак, мониторинг чего будет производиться:
- S.M.A.R.T. дисков (информация, общее состояние и отдельные показатели)
- Температуры, напряжение, обороты кулеров (на ваш выбор)
А выглядеть это все будет примерно так:
Суммарно понадобятся:
- smartmontools
- OpenHardwareMonitor
- NSSM
- 2 скрипта на PS, приведенные ниже
- шаблон
Шаблон
Под спойлером находится актуальный шаблон. Просто сохраните содержимое в формате xml и импортируйте в свой Zabbix.
Шаблон создан в Zabbix версии 3.2, возможно, будет работать и в более ранних версиях. Ключи стандартны и имеют вид ZScript[имя_скрипта, параметр1,.., параметрN]. Параметры передаются непосредственно в сам скрипт.
Надеюсь, шаблон получился максимально простым и понятным.
Скрипты PS
Ниже приведены необходимые скрипты. Внутри уже находятся и обнаружение, и запрос отдельных элементов. Работа проверена на Windows от 7 SP1 до 2012 R2. Само собой, решение с Execution Policy остается за вами.
Обнаруживаются только диски с задействованным СМАРТом. Параметры запрашиваются из столбца «RAW_VALUE». Хотите мониторить другой параметр? Просто укажите его номер. По умолчанию скобки и их содержимое отбрасываются. Если нужный вам параметр диск не отдает, то возвращается пустое поле.
По умолчанию скрипт не обнаруживает названия датчиков, в которых есть #. Для чего это нужно, смотрите ниже.
Также зарезервировано одно имя датчика — Vbat. Это напряжение аккумулятора БИОС. Его значение вынесено в отдельный элемент для триггера (срабатывает если менее 2,9V).
Значения температур и оборотов кулеров на выходе целочисленные, значения напряжений передаются как есть.
Теоретически, можно обнаруживать и другие показатели (нагрузки, частоты,..). Используйте для этого соответствующий второй параметр в ключе. К примеру: ZScript[hard,discovery,load].
Подготовка Zabbix-агента
Для максимальной унификации я использую следующий и единственный параметр для своих скриптов:
UserParameter=ZScript[*],powershell C:\System\Zabbix\Scripts\windows.$1.ps1 "$2" "$3"
Это дает максимальную гибкость и однообразность. Если нужно будет добавить еще параметров для каких-либо скриптов, можно просто добавить переменных в кавычках. На текущие работающие скрипты это никак не повлияет. Префикс windows я использую на всякий случай, мне так удобно хранить шаблоны для гарантированной идентификации.
smartmontools
Для мониторинга состояния дисков используется smartmontools (версия 6.5 на момент написания статьи). При установке ПО по умолчанию ставится утилита smartctl-nc — именно она используется в скрипте для облегчения жизни вашего сервера. Также потребуется прописать пусть к папке bin в переменных средах.
Путь просто добавляем в конец переменной Path через точку с запятой. По умолчанию — C:\Program Files\smartmontools\bin
OpenHardwareMonitor
Для датчиков же используется OHM. Софт бесплатный с открытым кодом. Установка тривиальна, но для полноценной работы необходимо запускать программу в качестве службы. Для подобных вещей есть NSSM, я бы все же советовал качать последнюю сборку. А здесь можно посмотреть синтаксис.
Обещанный выбор датчиков обеспечивается за счет того, что названия датчиков можно изменять! Изменяете имена на удобочитаемые (они будут использованы в именах элементов), а ненужные датчики комментируете #.
Не забывайте перезапустить программу/службу для применения переименования.
Итого
В итоге получился неплохой инструмент для мониторинга. Желающие могут навесить свои триггеры на нужные прототипы элементов. Или же полностью переработать шаблон.
P.S.: залил шаблон и скрипты на Github.
Комментарии (14)
Delhin
28.02.2017 21:36Есть еще вариант.
Первый, гораздо реже, создает готовый LDD который отдается обычным Write-host, не так уж часто оборудование меняется.
Второй скрипт создает форматированный файл по всем интересующим устройствам раз в N минут.
А в шаблоне при обнаружении формируются итемы с конкретными ИД устройств которые забираются третьим простейшим скриптом из готового файла.
Итог: дергает smartctl(что-то другое) один раз, детали постоянно берем из простого файла, тем самым снижаем паразитную нагрузку на железо, файл влезает в дисковый кеш и не нагружает систему.
Как показывает практика раз в 10 минут готовить файл с интересующими параметрами достаточно что бы отреагировать на проблему, в большинстве случаев вы её всё равно будете дольше решать ;)
Скрипты подготовки вы так же вызываете как item с контролем кода и настраиваете триггер.
Они выкидывают цифровое значение:
0 — всё в норме
<>0 — ваши ошибки для поиска проблемы почему не работает скриптAcidVenom
28.02.2017 21:45Насчет нагрузки: для 3-5 дисков нагрузки ноль или около ноль на очень-очень старом «железе», на последнем скрине видно на каком.
AcidVenom
При должном отклике могу опубликовать LLD-шаблон для служб лицензирования FlexLM под Windows.