Настройка смарт-мониторинга жесткого диска в zabbix

Обновлено: 21.11.2024

Собранная статистика предназначена только для мониторинга и не подходит для выставления счетов.

Вы можете отслеживать узлы с помощью Virtuozzo Hybrid Server 7.5 и новее, а также запускать на них виртуальные среды через Zabbix.

В этом руководстве описывается, как установить агент Zabbix на узле Virtuozzo Hybrid Server и настроить существующий сервер Zabbix. Подробнее об установке Zabbix см. в его документации.

10.22.1. Установка агента Zabbix¶

Выполните эти шаги на каждом узле Virtuozzo Hybrid Server 7.5, который вы хотите отслеживать.

Установите репозиторий Zabbix. Например:

Установите пакет агента:

Настройте агент Zabbix, отредактировав файл /etc/zabbix/zabbix_agentd.conf следующим образом:

Server и ServerActive — это IP-адрес сервера Zabbix.

ListenIP — это IP-адрес узла, который будет прослушивать входящие соединения с сервера Zabbix.

Имя хоста — это уникальное имя, которое должно совпадать с именем, которое вы будете использовать для регистрации хоста в веб-панели Zabbix. Рекомендуется использовать фактическое имя хоста узла.

Время ожидания увеличено, чтобы у сильно загруженного узла было достаточно времени для отправки данных статистики на сервер Zabbix.

AllowRoot=1 требуется, чтобы пользователь zabbix мог собирать статистику с узла.

Добавьте пользователя zabbix в sudoers. Например:

Настройте брандмауэр узла:

Установите модуль и шаблон Virtuozzo:

Пакет будет содержать следующий XML-шаблон Zabbix:

Вам нужно будет импортировать его в веб-панель Zabbix позже.

Включите и запустите агент Zabbix:

10.22.2. Настройка Zabbix сервера¶

Чтобы просмотреть данные, собранные с узлов, выполните следующие действия в веб-панели Zabbix:

Перейдите в Конфигурация -> Шаблоны. Нажмите «Импорт» и импортируйте файл zbx_virtuozzo_template.xml, полученный в предыдущем разделе.

Перейдите в раздел Конфигурация -> Хосты и нажмите Создать хост. В поле Имя хоста введите то же имя, которое указано в поле Имя хоста в zabbix_agentd.conf. Затем выберите группу и укажите сведения о сетевом интерфейсе агента в интерфейсах. При необходимости укажите другие данные и нажмите «Добавить».

Перейдите к Конфигурация -> Хосты -> -> Шаблоны. Найдите Template Virtuozzo в Link new templates и нажмите Update.

Если вы также хотите использовать S.M.A.R.T. триггеры, предоставляемые Virtuozzo, вместо стандартных или вместе со стандартными также связывают Template Virtuozzo SMART.

Статистика хоста вскоре станет доступна в веб-панели Zabbix.

При желании вы можете отфильтровать ненужные метрики, исключив монтирование ploop из обнаружения смонтированной файловой системы. Zabbix выполняет это каждый час по умолчанию в своем шаблоне сервера Linux. Более того, вы можете безопасно отфильтровывать сетевые интерфейсы vme виртуальных машин. Сделайте следующее:

Перейдите в Конфигурация -> Шаблоны -> Шаблон ОС Linux от агента Zabbix -> Макросы -> Унаследованные макросы и макросы шаблона.

Найдите макрос . Добавьте /vz/root/| к его началу. Например:

Теперь недавно обнаруженные плопы будут отфильтровываться. Статистика уже обнаруженных плопов будет удалена по истечении льготного периода. По умолчанию льготный период составляет 30 дней. Вы можете изменить его в правиле обнаружения файловой системы.

Найдите макрос и добавьте ^vme[0-9a-z]+| к его началу. Например:

Теперь новые обнаруженные интерфейсы vme также будут отфильтровываться.

10.22.3. Поддерживаемые триггеры¶

Для Virtuozzo Hybrid Server поддерживаются следующие триггеры (например, оповещения).

Лицензия не активна.

Проверьте и обновите лицензию.

Аспект S.M.A.R.T. показатель критически низкий. Диск вот-вот выйдет из строя.

S.M.A.R.T. просмотренные показатели:

Диск узла вот-вот выйдет из строя. Замените его как можно скорее.

Аспект S.M.A.R.T. показатель больше нуля. Состояние диска ухудшается.

S.M.A.R.T. просмотренные показатели:

Проверьте состояние диска узла. Возможно, вам придется заменить его в ближайшее время.

Использование памяти виртуальной машиной или контейнером превысило 95 % за последний час.

Проверьте виртуальную среду на наличие проблем, включая проблемы с программным обеспечением или вредоносное ПО.

Сбой гостевой ОС на виртуальной машине.

Выясните причины сбоя, почините виртуальную машину и перезапустите все службы, которые не будут делать это автоматически.

Драйвер шара виртуальной машины не отвечает. ВМ перестала сообщать статистику использования памяти и не освобождает память узла автоматически.

Узнайте, что случилось с модулем ядра virtio_balloon внутри виртуальной машины. Перезагрузите модуль.

В своем предыдущем посте я настроил свое устройство pogoplug в качестве сервера резервного копирования. Поскольку он содержал важную информацию, я хотел следить за диском, который я подключил к устройству pogoplug, чтобы убедиться, что он не выйдет из строя. Здесь в игру вступает программное обеспечение smartmontools.С пакетом smartmontools поставляется утилита под названием smartctl, которая позволяет запрашивать атрибуты SMART жесткого диска (если диск поддерживает это).

Скомпилируйте Zabbix Agentd на Pogoplug

Прежде чем я проверил атрибуты SMART, мне нужно было убедиться, что я могу запустить агент zabbix на устройстве. Я наткнулся на сообщение под названием «Установка агента Zabbix на Synology», и кажется, что это возможно. Следуя инструкциям, изложенным в этом посте, я сделал следующее, чтобы скомпилировать zabbix на устройстве pogoplug. Сначала установите необходимые пакеты, которые потребуются для выполнения компиляции:

Затем создайте символическую ссылку на /opt/include в /usr. Если этого не сделать, скрипт configure не сможет найти заголовочный файл iconv.h. Вот команды для этого:

После этого давайте скачаем исходники zabbix:

Теперь давайте извлечем исходный код:

Далее настройте источник:

После этого скомпилируйте и установите пакет:

Вот и все, теперь у вас есть агент zabbix, установленный в /opt/zabbix.

Настроить Zabbix Agentd на Pogoplug

Теперь, когда он установлен, давайте запустим его. Сначала отредактируйте файл /opt/zabbix/zabbix_agentd.conf и добавьте/измените следующие параметры:

Если вы не хотите запускать приложение от имени пользователя root, вы можете добавить пользователя zabbix и разрешить ему писать в каталогах /opt/var/run и /opt/var/log. На самом деле это не было многопользовательской платформой, поэтому я решил не идти по этому пути. Кроме того, мне нужно было разрешить пользователю, работающему с zabbix, выполнять команду smartctl. В обычных системах вы можете сделать это с помощью sudo, но я не хотел его устанавливать. Для запуска sudo требуется установленный бит suid, а это значит, что мне придется монтировать файловую систему с флагом suid, по умолчанию она монтируется с флагом nosuid. Назовите меня ленивым, но я просто не чувствовал, что это стоит усилий.

После того, как конфигурация будет готова, выполните следующее:

Процесс должен запуститься. Вы можете проверить, используя ps:

Вы также можете подтвердить, что он прослушивает 10050 с помощью netstat:

Последнее, что нужно сделать, это настроить скрипт init. Я просто скопировал скрипт запуска dropbear и изменил его под свои нужды:

Я действительно не сильно изменился, но просто для справки вот скрипт. Наконец, чтобы убедиться, что он запускается автоматически при загрузке, добавьте его в файл /etc/init.d/rcS:

Вы можете убедиться, что агент zabbix запускается без проблем, перезагрузив устройство pogoplug.

Добавить Swap в Pogoplug

Как только вы добавите устройство на свой сервер zabbix, вы получите предупреждение о том, что на устройстве отсутствует пространство подкачки, поэтому давайте добавим его. Нам понадобится команда mkswap, чтобы отформатировать наш файл как файл подкачки, поэтому давайте сначала установим ее. Эта утилита является частью пакета util-linux:

После его установки давайте создадим каталог, в котором мы будем хранить файл подкачки:

Теперь давайте создадим файл размером 256 МБ:

Теперь отформатируем файл как файл подкачки:

Наконец включите файл подкачки:

Вы можете подтвердить с помощью бесплатной команды, что файл подкачки используется:

Кстати, команда free исходит из пакета procps. Последнее, что нужно сделать, это включить подкачку при загрузке, поэтому отредактируйте файл /etc/init.d/rcS и добавьте в него следующее:

Перезагрузите устройство, чтобы убедиться, что подкачка добавлена ​​при загрузке.

Настроить агент Zabbix для извлечения атрибутов SMART с жесткого диска

От Zabbix есть действительно хорошее руководство по его настройке: S.M.A.R.T. Мониторинг жестких дисков с помощью Zabbix. Вот суть установки. Сначала создайте сценарий, который будет получать значения в зависимости от диска и атрибута, которые вы ему передаете. Вот скрипт:

Если smartmontools не установлен, установите его:

Подтвердите, что ваш диск возвращает атрибуты SMART:

Далее разрешите пользователю zabbix выполнять smartctl с помощью sudo без пароля. Выполните следующую команду:

и добавьте/измените следующее в файле /etc/sudoers:

Затем запустите команду вручную, чтобы убедиться, что она работает:

Выглядит неплохо. Теперь давайте добавим соответствующие сценарии UserParameter в конфигурацию agentd (я выбрал только два, но вы можете выбрать любой желаемый атрибут, на этом сайте рассказывается о всех различных значениях). Отредактируйте файл /etc/zabbix/zabbix_agentd.conf и добавьте в него следующее:

Я буду следовать моему предыдущему сообщению (Мониторинг статистики дискового ввода-вывода с помощью Zabbix), чтобы настроить автоматическое обнаружение дисков, а затем построить значения из обнаруженных значений. Чтобы применить указанные выше пользовательские параметры, перезапустите процесс агента zabbix и попробуйте запросить вышеуказанные значения с сервера Zabbix. Итак, на клиенте выполните следующее:

Затем на сервере Zabbix выполните следующее:

Если значение возвращается, все в порядке. На этом этапе вы можете следовать моему предыдущему сообщению, чтобы добавить следующее во внешний интерфейс zabbix:

  • Регулярное выражение (нам нужны только /dev/sd* или /dev/hd*, в моем предыдущем посте я также использовал SD-карты /dev/mmcblk1)
  • Шаблон
  • Правило обнаружения (здесь добавьте custom.disks.discovery_perl2 в качестве ключа, поскольку у вас не может быть дубликатов)
  • Прототипы элементов (для температуры и количества перераспределенных секторов)
  • Прототип графика (только для температуры)
  • Прототип триггера (только для smart.reallocated_sec_cnt)

Добавить прототип триггера в правило обнаружения Zabbix

Единственной новой вещью, которую я добавил, был прототип триггера. Атрибут Reallocated_Sector_Ct всегда должен быть нулевым, если только диск не вышел из строя. Поэтому вместо того, чтобы строить график, полный нулей, я решил добавить триггер, который будет отправлять предупреждающее сообщение, если значение больше 0. Чтобы сделать это из внешнего интерфейса Zabbix, перейдите в «Шаблоны» -> выберите шаблон, который у вас есть. created -> «Правила обнаружения» -> Щелкните созданное правило обнаружения -> «Прототипы триггеров» -> «Создать прототип триггера», а затем настройте его следующим образом:

Теперь мы будем получать уведомления, если это значение больше нуля.

Установите Smartmontools на Pogoplug

Существует готовый пакет smartmontools:

Но когда я попытался запустить его, он выдал ошибку. Я наткнулся на отчет об ошибке здесь. Следуя инструкциям, изложенным в этом отчете, я смог скомпилировать smartmontools на pogoplug. Вот команды, которые я выполнил для этого. Сначала загрузите последнюю версию:

Ветка обсуждения официального мониторинга Zabbix SMART Disk

Эта ветка предназначена для обсуждения предстоящего официального шаблона Zabbix для мониторинга SMART Disk.
Шаблон и детали шаблона будут доступны в репозитории GIT.

Zabbix всегда ищет способы улучшить наши услуги и сделать наших пользователей счастливее.
Мы гордимся тем, что делаем все возможное каждый день, но мы знаем, что всегда есть чему поучиться.
Мы хотели бы услышать от вас ответ, чтобы узнать, что вам понравилось и что вы хотели бы улучшить в шаблоне.

Здравствуйте!
zabbix_server (Zabbix) 5.4.0beta1
Редакция 2d05a56dbb 1 марта 2021 г., время компиляции: 1 марта 2021 г., 09:09:06

zabbix_agent2 (Zabbix) 5.4.0beta1
Редакция 2d05a56dbb 1 марта 2021 г., время компиляции: 1 марта 2021 г., 12:04:58

smartmontools:
smartctl -V
smartctl 7.1 05.04.2020 r5049 [x86_64-linux-4.18.0-240.15.1.el8_3.x86_64] (локальная сборка)

ОС:
Centos 8
Linux centos8 4.18.0-240.15.1.el8_3.x86_64

С сервера Zabbix:
zabbix_get -s 192.168.20.141 -p 10050 -k smart.disk.discovery

Комментарий

Я добавил в /etc/sudoers
zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl
и это работает

С сервера Zabbix
zabbix_get -s 192.168.20.141 -p 10050 -k smart.disk.discovery

Но в последнем значении отображается VALUE, а не RAW_VALUE.

Комментарий

Это по-прежнему ПРОБЛЕМА. Я использовал шаблон по состоянию на 5 июля 2021 г., и в Zabbix он получает неправильное значение, как описано выше, вот вывод smartctl, и он принимает первое значение. ЭТО НЕПРАВИЛЬНО, должно принимать необработанное значение: значение
"id": 231,
"name": "SSD_Life_Left",
"value": 100,
"худшее": 100,
"thresh": 0, < br />"when_failed": "",
"flags": "value": 19,
"string": "PO--C- ",
"prefailure": true,
"updated_online": true,
"performance": false,
"error_rate": false,
"event_count": true,
"auto_keep": false < br />>,
"raw": "value": 82,
"string": "82"
>
>,

Очень чистое решение для сбора S.M.A.R.T. атрибуты и пороги настройки с учетом большого разнообразия дисков производителя. Однако есть некоторые атрибуты, которые я (и другие) могут захотеть активировать для любого измененного значения, а не ждать, пока диск «откажет», превысив пороговое значение. т.е. атрибут 5.

Комментарий

Я добавил в /etc/sudoers
zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl
и это работает

С сервера Zabbix
zabbix_get -s 192.168.20.141 -p 10050 -k smart.disk.discovery

Но в последнем значении отображается VALUE, а не RAW_VALUE.

Я постараюсь разобраться в этом подробнее. Продолжайте делиться такой информативной публикацией, продолжайте предлагать такую ​​публикацию.

Комментарий

Во-первых, спасибо за работу по улучшению показателей данных SMART!

Я решил попробовать Zabbix на моей последней установке сервера Zabbix 5.2 и оставить отзыв. Я прикрепил 4 снимка экрана: один из данных шаблона Zabbix, один из триггеров шаблона Zabbix, один из данных шаблона Nobodysu и один из триггеров шаблона Nobodysu.К сожалению, в моей тестовой системе есть только твердотельные накопители, поэтому некоторые полезные элементы пусты.

Я перечисляю несколько различий между ними и то, что мне действительно хотелось бы улучшить в шаблоне Zabbix.


Данные:
Версия прошивки: в 99% случаев меня это не волнует, но это полезно, когда обнаруживается проблема, приводящая к преждевременному блокированию дисков. Я фильтрую эти данные, чтобы понять, как нацеливать/планировать обновления встроенного ПО.

Форм-фактор: меня не волнует это поле

Семейство моделей: это действительно полезно в больших системах хранения. Я не использую его так много, но я использую его. Особенно, когда мне нужно взять новый диск для замены вышедшего из строя диска в RAID-массиве.

Скорость вращения: я никогда не использую ее, если только не пытаюсь определить производительность диска. В этот момент я мог просто перейти в командную строку. У меня есть диски между 5400 и 15K и многие между ними. Приятно иметь, но можно было бы и без.

Версия SATA: ОЧЕНЬ ВАЖНО для меня. Для большинства дисков в этом поле есть такие данные, как: «SATA 3.2, 6,0 Гбит/с (текущий: 3,0 Гбит/с)». Это действительно помогает узнать, является ли диск старым устройством SATA, SATA II или более новым устройством SATA III. Редакция пригодилась мне в прошлом. Но самое главное — знать, что это устройство со скоростью 6 Гбит/с, а в настоящее время — только 3 Гбит/с. Это потому, что компьютер SATA более старой версии (в данном случае да) или это потому, что диск выходит из строя? Изменение скорости часто является индикатором предварительного отказа; Прямо сейчас у меня на столе есть диск, который проходит проверку SMART, но при интенсивной записи скорость падает до 1,5 Гбит/с примерно за час до того, как компьютер зависает!

Статус SMART: это уже подразумевается. Я не использую это поле.

Емкость пользователя: это очень полезно, когда диск выходит из строя, и он вообще не дает мне никаких данных, но мне нужно знать, диск какого размера его заменить, прежде чем ехать в центр обработки данных.

Коды выхода из диска БЕЗУМНО полезны. Коды выхода для smartctl (все задокументированы на странице руководства) очень полны и очень полезны для меня. Одни только эти триггерные события — отличная причина для использования шаблона Nobodysu.

SMART доступен, но отключен: очень полезно для моих старых дисков SCSI

SMART недоступен — устройству не хватает емкости: при подключении старых серверов я нацеливаю эти диски на удаление. Я использую это как одну из своих первых проверок сервера.

Текущая пропускная способность меньше максимальной, поддерживаемой диском: я считаю это очень полезным.

"Изменено за последние 5 дней" ОЧЕНЬ полезно. Если Reallocated_Sector_Ct начинает резко расти, хорошо, что я знаю, что мне нужно начать планировать замену до того, как диск выйдет из строя. Все эти триггеры «изменилось» полезны.

Этого не видно на изображении, но сообщение "Шаблон назначен, но данные не получены" тоже очень полезно. Обычно указывает на проблему с smartctl или разрешениями.

Преимущества этого шаблона:
Он намного быстрее. Я не тестировал свои серверы с большими дисками, где обычно >32 диска, но я впечатлен тем, насколько быстрее он собирает данные.

Требуется гораздо меньше накладных расходов на пакет. Мне не нужно было развертывать пакет python и сценарии python, а также устанавливать кучу разрешений SELinux и разрешений sudoer, как я делаю с версией Nobodysu. Версии Zabbix нужна была всего одна строка в sudoers.

Это мой отзыв. Спасибо за работу над интегрированной проверкой SMART! Я СУПЕР благодарен всем, кто внес свой вклад в мониторинг SMART-метрик в Zabbix!

Примечание: основным является WiP. Пока используйте последнюю версию.

Кроссплатформенные сценарии мониторинга SMART с двумя режимами отображения: устройство и последовательный. LLD обнаруживает и отправляет данные за один проход, используя минимальное количество утилит. Поддерживает любое имя SMART и отображает его как есть.

  • Использует коды возврата ошибок smartctl
  • Низкоуровневое обнаружение
  • Поддержка SAS
  • Мониторинг износа SSD (только SAS)
  • поддержка csmi
  • Эффективность: не создаются ненужные процессы
  • Массовая загрузка элементов с помощью zabbix-sender
  • Конфигурация с защитой от ошибок: различные триггеры безопасности
  • Автоматическое прохождение RAID (когда smartctl обнаруживает диски)

Примечание: температура диска отслеживается другим способом.

Триггеры, содержащие delta(5d)>0 и last()>0, будут срабатывать при любом изменении, если последнее значение не равно нулю. Например. при замене диска на нулевые значения триггер не сработает, а если значение меньше или больше - сработает. Таким образом, замена неисправного диска неисправным все равно вызовет проблему, которая сохраняется в течение 5 дней (по умолчанию).

В качестве предварительных условий вам потребуются пакеты python3 , smartmontools , sudo и zabbix-sender.Для тестирования также требуется zabbix-get.
Посмотрите на первые строки скрипта и при необходимости укажите пути. Если у вас есть конфигурация RAID, также предоставьте ее вручную. Выберите устройство или последовательный режим. Импортируйте Template_App_smartmontools.xml в веб-интерфейс zabbix.

Размещение файлов

Установите python3 для всех пользователей, добавив его в PATH во время установки. Установите smartmontools и добавьте его папку bin в PATH в переменных среды (или укажите абсолютный путь к двоичному файлу smartctl в zabbix-smartctl.exe ).
Примечание: в настоящее время версия Windows не отсоединяется, и данные могут быть собраны только при втором запуске.

Затем вам нужно включить папку zabbix conf в zabbix_agentd.conf, например так:

Это все для Windows. Для других выполните следующее, чтобы завершить настройку:

Режим работы по умолчанию. Отображает json, который должен получить сервер, отсоединяется, затем ждет и отправляет данные с помощью zabbix-sender. Пример хоста — это ваше поле имени хоста в zabbix.

Подробный режим. Не отсоединяется и не печатает LLD. Список всех элементов, отправленных zabbix-sender, также в этом режиме можно увидеть вывод отправителя.

Примечание: прежде чем скрипты заработают, сервер zabbix должен сначала обнаружить доступные элементы. По умолчанию это делается в 12-часовых циклах. Вы можете временно уменьшить этот параметр для тестирования в шаблоне -> Обнаружение -> Обнаружение SMART disk -> Интервал обновления. В данном решении для мониторинга интервал обновления должен быть не менее 80 секунд.

Эти скрипты были протестированы на работу со следующими конфигурациями:

  • Centos 7 / Zabbix 3.0 / Python 3.6
  • Debian 9 / Zabbix 3.0 / Python 3.5
  • Ubuntu 17.10 / Zabbix 3.0 / Python 3.6
  • FreeBSD 12.1 / Zabbix 4.2 / Python 3.7
  • Windows XP / Zabbix 3.0 / Python 3.4
  • Windows 7 / Zabbix 3.0 / Python (3.4, 3.7, 3.8)
  • Windows Server 2012 / Zabbix 3.0 / Python 3.7

Перезаписать сценарии и пользовательские параметры. Если UserParameters были изменены - требуется перезапуск агента. Если шаблон изменился по сравнению с предыдущей версией - обновите его в веб-интерфейсе zabbix, отметив все галочками Удалить отсутствующие.

В: Триггер срабатывает, хотя явно не должен.
В: Макрос триггера не раскрывается.
В: Срок действия триггеров из старой версии не истекает после обновления.
A: Переназначьте шаблон с помощью Unlink и очистите хост для индивидуального разрешения. Или повторно загрузите шаблон, отметив все флажки Удалить отсутствующие.

В: Можно ли отслеживать определенные диски или исключать некоторые из них?
В: Диск SCSI возвращает пустые результаты, когда опция -A работает корректно.
A: Укажите [Диски] в zabbix-smartmontools.conf:

В: Старые триггеры после замены диска вводят в заблуждение.
A: Подождите 24 часа (по умолчанию) или выполните Unlink and Clear на хосте. Вы также можете настроить интервал в шаблоне -> Обнаружение -> Обнаружение диска SMART -> Период сохранения потерянных ресурсов.

В: Командная строка триггеров не анализируется, а ошибка открытия устройства служит одинаковой цели в zabbix-smartmontools и zabbix-mini-IPMI.
A: Отключите ненужную пару в любом из шаблонов.

Читайте также: