Zabbix iops windows disk

Мониторинг дисков с помощью zabbix

Мониторинг производительности дисковых подсистем с помощью zabbix. Мониторятся следующие параметры.

  • утилизация блочного устройства в % — удобная метрика для отслеживания общей нагрузки на устройстве;
  • latency или отзывчивость — доступна как общая отзывчивость, так и отзывчивость на операциях чтения/записи;
  • величина очереди (в запросах) и средний размер запроса (в секторах) — позволяет оценить характер нагрузки и степень загруженности устройства;
  • текущая скорость чтения/записи на устройство в человекопонятных килобайтах;
  • количество запросов чтения/записи (в секунду) объединенных при постановке в очередь на выполнение;
  • iops — величина операций чтения/записи в секунду;

Для работы нам потребуется утилита iostat входящая в пакет sysstat. Устанавливаем sysstat

Создаем директорию для скриптов

Создаем первый скрипт для сбора метрик

Копируем в него следующий текст

Создаем второй скрипт для парсинга

Даем права на запуск

Создаем файл с ключами zabbix агента

Копируем в него следующие ключи

Скачиваем шаблон для zabbix сервера и устанавливаем.

В итоге должны получить красивые графики, например загрузка диска

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Zabbix: Windows IOPS

Сегодня мы попробуем сделать тоже самое, но уже в windows окружении.

Windows в фоновом режиме самостоятельно обсчитывает определенный набор метрик, делается это через «Perfomance Monitor» доступ к которому в zabbix реализуется через функцию «perf_counter».

На вход perf_counter получает «имя» счетчика, и это первый подводный камень.

В Интернете можно найти несколько вариантов обозначения одного и того же счетчика, например:

perf_counter[\PhysicalDisk(_Total)\Disk Reads/sec] perf_counter[\Физический диск(_Total)\Обращений чтения с диска/с] perf_counter[\234(_Total)\214]

Несмотря на различия, это действительно один и тот же счетчик.

Первый два характерны для разных локаций windows и использовать их в мониторинге мы не будем, т.к. под русской windows не будут работать английские счетчики и наоборот.
Третий вариант стоит назвать универсальным, т.к. он работает везде, но «overhead» в интуитивной непонятности обозначений.

Несколько вариантов получить счетчики:

typeperf -qx lodctr /s:perfcount.txt

В «lodctr» мы видим сопоставление цифр и названий счетчиков:

234 — PhysicalDisk 236 — LogicalDisk

В качестве примера, я сделал шаблон для «Disk I/O Operations» и «File I/O Operations» диска «Total». Особенность шаблона, что он не требует никаких изменений конфигурации zabbix на клиентах.

Disk I/O Operations

График показывает общее количество операций ввода\вывода, обработанных (завершенных) диском в течении 1 секунды (Input/Output Operations Per Second, IOPS). Этот счетчик позволяет примерно оценить, насколько нагрузка на диски близка к предельной.

File I/O Operations

Если нужна расшифровка по всем дискам, то уже потребуется изменение конфигурации zabbix, путем добавления нового UserParameter: объявляем переменную windowsdisk.discovery с запуском powershell скрипта:

UserParameter=windowsdisk.discovery, powershell -NoProfile -ExecutionPolicy Bypass -File c:\get_disks.ps1

get_disks.ps1:

$drives = Get-WmiObject win32_PerfFormattedData_PerfDisk_PhysicalDisk | ? <$_.name -ne "_Total">| Select Name $idx = 1 write-host «<" write-host " `"data`":[`n" foreach ($perfDrives in $drives) < if ($idx -lt $drives.Count) < $line= "< `"<#DISKNUMLET>`» : `»» + $perfDrives.Name + «`» >,» write-host $line > elseif ($idx -ge $drives.Count) < $line= "< `"<#DISKNUMLET>`» : `»» + $perfDrives.Name + «`» >» write-host $line > $idx++; > write-host write-host » ]» write-host «>»

Результатом будет json с количеством дисков:

На основе данного discovery можно снимать необходимое вам количество метрик и строить графики, но это тема для отдельного поста.

Zabbix + Iostat: мониторинг дисковой подсистемы

Zabbix + Iostat: мониторинг дисковой подсистемы.

Зачем?
Дисковая подсистема одна из важных подсистем сервера и от уровня нагрузки на дисковую подсистему зачастую зависит очень многое, например скорость отдачи контента или то как быстро будет отвечать база данных. Это в большей степени относится к почтовым или файловым серверам, серверам БД. Вобщем, показатели дисковой производительности отслеживать нужно. На основании графиков производительности дисковой подсистемы мы можем принять решение о необходимости наращивания мощностей задолго до того как петух клюнет. Да и вобще полезно поглядывать от релиза к релизу как работа разработчиков сказывается на уровне нагрузки.

Под катом, о мониторинге и о том как настроить.

Зависимости:
Мониторинг реализован через zabbix агента и две утилиты: awk и iostat (пакет sysstat). Если awk идет в дистрибутивах по умолчанию, то iostat требуется установить с пакетом sysstat (тут отдельное спасибо Sebastien Godard и сотоварищи).

Известные ограничения:
Для мониторинга нужен sysstat начиная с версии 9.1.2, т.к. там есть очень важное изменение: «Added r_await and w_await fields to iostat’s extended statistics». Так что следует быть внимательным, в некоторых дистрибутивах, например в CentOS немного «стабильная» и менее фичастая версия sysstat.
Если же отталкиваться от версии zabbix (2.0 или 2.2) то тут вопрос не принципиален, работает на обоих версиях. На 1.8 не заработает т.к. используется Low level discovery.

Возможности (чисто субъективно, по мере убывания полезности):

  • Low level discovery (далее просто LLD) для автоматического обнаружения блочных устройств на наблюдаемом узле;
  • утилизация блочного устройства в % — удобная метрика для отслеживания общей нагрузки на устройстве;
  • latency или отзывчивость — доступна как общая отзывчивость, так и отзывчивость на операциях чтения/записи;
  • величина очереди (в запросах) и средний размер запроса (в секторах) — позволяет оценить характер нагрузки и степень загруженности устройства;
  • текущая скорость чтения/записи на устройство в человекопонятных килобайтах;
  • количество запросов чтения/записи (в секунду) объединенных при постановке в очередь на выполнение;
  • iops — величина операций чтения/записи в секунду;
  • усредненное время обслуживания запросов (svctm). Вообще она deprecated, разработчики обещают ее давно спилить, но все никак руки не доходят.

Вобщем как видно, здесь доступны все те метрики которые есть в iostat (кто незнаком с этой утилитой настоятельно рекомендую заглянуть в man iostat).

Доступные графики:
Графики рисуются per-device, LLD обнаруживает устройства которые попадают под регулярное выражение «(xvd|sd|hd|vd)[a-z]», так что если ваши диски имеют другие имена, можно легко внести соответствующие изменения. Такая регулярка сделана чтобы обнаруживать устройства которые будут родительскими по отношению к прочим разделам, LVM томам, MDRAID массивам и т.п. Вобщем чтобы не собирать лишнего. Немного отвлеклись, итак список графиков:

  • Disk await — отзывчивость устройства (r_await, w_await);
  • Disk merges — операции слияния в очереди (rrqm/s, wrqm/s);
  • Disk queue — состояние очереди (avgrq-sz, avgqu-sz);
  • Disk read and write — текущие значения чтения/записи на устройство (rkB/s, wkB/s);
  • Disk utilization — утилизация диска и значение IOPS (%util, r/s, w/s) — позволяет неплохо отслеживать скачки в утилизации и чем, чтением или записью они были вызваны.

Аналоги и отличия:
В заббиксе есть коробочные варианты для похожего мониторинга, это ключи vfs.dev.read и vfs.dev.write. Они хороши и прекрасно работают, но менее информативны чем iostat. Например в iostat есть такие метрики как latency и utilization.
Также есть аналогичный шаблон от Michael Noman на мой взгляд отличие только одно, она заточена на старые версии iostat, ну и + небольшие синтаксические изменения.

Где взять:
Итак, мониторинг состоит из файла конфигурации для агента, двух скриптов для сбора/получения данных и шаблон для веб-интерфейса. Все это доступно в репозитории на Github, поэтому любым доступным способом (git clone, wget, curl, etc. ) скачиваем их на машины которые хотим замониторить и переходим к следующему пункту.

Как настроить:

  • iostat.conf — содержимое этого файла следует поместить в файл конфигурации zabbix агента, либо положить в каталог конфигурации который указан в Include опции основной конфигурации агента. Вобщем зависит от политики партии. Я использую второй вариант, для кастомных конфигов у меня отдельная директория.
  • scripts/iostat-collect.sh и scripts/iostat-parse.sh — эта два рабочих скрипта следует скопировать в /usr/libexec/zabbix-extensions/scripts/. Тут также можно использовать удобное вам размещение, однако в таком случае не забудьте поправить пути в параметрах определенных в iostat.conf. Не забудьте проверить что они исполняемы (mode=755).

Теперь все готово, запускаем агента и переходим на сервер мониторинга и выполняем команду (не забываем подменить agent_ip):

Таким образом, проверяем с сервера мониторинга что iostat.conf подгрузился и отдает информацию, заодно смотрим что LLD работает. В качестве ответа вернется JSON с именами обнаруженных устройств. Если ответа не пришло, значит что-то сделали не так.

Также есть такой момент, что zabbix server не дожидается выполнения некоторых item’ов со стороны агентов (iostat.collect). Для этого следует увеличить значения Timeout.

Как настроить в web интейрфейс:
Теперь остался шаблон iostat-disk-utilization-template.xml. Через веб интерфейс импортируем его в раздел шаблонов и назначем на наш хост. Тут все просто. Теперь остается ждать примерно один час, такое время установлено в LLD правиле (тоже настраивается). Или можно поглядывать в Latest Data наблюдаемого хоста, в раздел Iostat. Как только там появились значения, можно перейти в раздел графиков и понаблюдать за первыми данными.

Читайте также:  Nginx mac os install

И напоследок тройка скринов графиков c локалхоста))):
Непосредственно данные в Latest Data:

Графики отзывчивости (Latency):

График утилизации и IOPS:

Вот и собственно и все, спасибо за внимание.
Ну и по традиции, пользуясь случаем передаю привет Федорову Сергею (Алексеевичу) 🙂

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

Я рассмотрел на своем сайте много вариантов использования заббикс для наблюдения за различными метриками. Сейчас хочу рассказать, как настроить мониторинг SMART параметров жесткого диска с помощью Zabbix. Я давно использую это решение, но не писал статью, так как информация полностью мной заимствована. Но для полноты картины решил все же опубликовать на своем сайте.

Введение

Когда мне понадобилось настроить мониторинг жестких дисков, в частности, SMART параметров в Zabbix, я сразу же нашел готовое решение на share.zabbix.com. Рекомендую туда заглядывать периодически в поисках интересных приемов для мониторинга.

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

Я буду работать на сервере CentOS 7, но в данном случае, как обычно с заббиксом, это не имеет принципиального значения. Все скрипты и шаблоны подойдут для практически любого дистрибутива linux. Если у вас еще нет своего сервера для мониторинга, то рекомендую свои материалы на эту тему:

То же самое на Debian 9, если предпочитаете его:

Настраивать будем по этапам:

  1. Сначала настроим агент и все необходимые скрипты.
  2. Импортируем шаблон на сервер и применим к нужному хосту.
  3. Проверим полученные данные.

Приступим к настройке zabbix для наблюдения за смартом дисков.

Подготовка zabbix agent

Мониторинг значений SMART жесткого диска будет выполняться с помощью smartmontools. Установить их можно следующей командой для CentOS:

Либо аналогично в Debian/Ubuntu

Далее нам понадобится скрипт на perl для автообнаружения дисков и вывода информации о них в JSON формате, который понимает заббикс. Создадим такой скрипт.

Сохраняем скрипт и делаем исполняемым.

Выполняем скрипт и проверяем вывод. Должно быть примерно так с двумя дисками.

В данном случае у меня 2 физических диска — sda и sdb. Их мы и будем мониторить.

Настроим разрешение для пользователя zabbix на запуск этого скрипта, а заодно и smartctl, который нам понадобится дальше. Для этого запускаем утилиту для редактирования /etc/sudoers.

Добавляем в самый конец еще одну строку:

Сохраняем, выходим 🙂 Это если вы умеете работать с vi. Если нет, то загуглите, как работать с этим редактором. Именно он запускается командой visudo.

Проверим, что пользователь zabbix нормально исполняет скрипт.

Вывод должен быть такой же, как от root. Если вам не хочется разбираться с этими разрешениями, либо что-то не получается, можете просто запустить zabbix-agent от пользователя root и проверить работу в таком режиме. Сделать это не трудно, данный параметр закомментирован в конфигурации агента. Вам достаточно просто снять комментарий и перезапустить агент.

После настройки скрипта автообнаружения, добавим необходимые UserParameters для мониторинга SMART. Для этого создадим отдельный конфигурационный файл. Для версии 3.2 и ниже он будет выглядеть вот так.

Версия настроек для агента 3.4

Сохраняем файл и перезапускаем zabbix-agent.

Проверяем, как наш агент будет отдавать данные. Ключ uHDD.discovery будет одинаковый для обоих версий агента.

Вы должны увидеть полный JSON вывод с информацией о ваших диска. Теперь посмотрим, как передаются информация о smart. Запросим температуру дисков для версии 3.2.

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

Настройка мониторинга SMART параметров диска

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

Шаблон можно взять у меня — zabbix-smart-template.xml. Я уже точно не помню, изменял ли я что-нибудь в нем, по сравнению с оригинальным или нет. Но даже если и изменял, то незначительно, скорее всего только интервалы обновления итемов. Это шаблон я экспортировал со своего сервера версии 3.2. Оригинальные шаблоны вы можете взять у авторов по ссылке в начале поста.

Для сервера zabbix версии 3.4 используйте обновленный шаблон автора.

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

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

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

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

Мониторинг SMART и температуры диска в Windows

Изначально в статье было рассказано только о мониторинге в системах linux. Со временем появилась необходимость настроить то же самое, только в Windows, поэтому решил не начинать новую статью, а дополнить текущую. Смысл дальнейших действий точно такой же, как и на linux. Для мониторинга за жесткими дисками, в том числе за температурой в windows, будем использовать smartmontools под windows. Скрипт для автообнаружения и формирования выдачи в zabbix будет работать на powershell.

Устанавливаем smartmontools. После установки рекомендую сразу проверить работу. Для этого открываем командную строку, переходим в директорию C:\Program Files\smartmontools\bin и выполняем:

Вы должны увидеть список всех дисков в системе. Дальше можете посмотреть информацию о дисках, например так:

Если все в порядке, информация о дисках выводится, продолжаем. Нам нужен скрипт для парсинга вывода. Я не стал придумывать свой, к тому же на powershell писать практически не умею, взял за основу готовый, который реализует тот же функционал, что описанный выше для linux.

Я немного изменил оригинал скрипта, автор почему-то использует smartctl-nc.exe. У меня он вообще ничего не выводит, я не понял, что это за экзешник. Я использовал обычный smartctl.exe. Сохраните скрипт и проверьте его работу. Для того, чтобы система разрешила выполнять неподписанные powershell скрипты, необходимо запустить консоль powershell от администратора и выполнить команду:

Если этого не сделать, будете получать ошибку при запуске скрипта на тему того, что выполнение скриптов запрещены для данной системы. Я сохранил скрипт в директорию C:\zabbix\windows.hdd.ps1. Проверим его работу. Запускаем консоль powershell и сам скрипт с разными параметрами.

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

Не забудьте увеличить таймаут получения данных. По-умолчанию в zabbix стоит 3 секунды. Этого может не хватать. Я обычно ставлю 15 секунд.

Перезапускаем службу агента и идем на сервер.

На сервере делать ничего не надо, так как все сделал за вас я 🙂 Предлагаю готовый шаблон — zabbix-smart-win-template.xml. Скачиваете и импортируете в свой сервер. У меня он работает на версии сервера 3.4.6. В шаблоне настроено автообнаружение дисков, создание итемов и триггеров. Все немного похоже на то, что есть для линукса, но тем не менее отличается, так как делалось в разное время и с разным настроением. В линуксе все более заморочено — сложные триггеры и итемы, которые добавил автор шаблона. Со временем понял, что это не особо надо и не стал заморачиваться с виндой, сделал все по проще, но тем не менее весь основной функционал присутствует.

Более того, в версию с windows я добавил триггер, который срабатывает, если диск исчезает из системы. У меня был один такой диск, который мог просто пропасть. Пришлось сделать оповещение. В linux у меня диски никогда не пропадали просто так, поэтому не догадался с свое время до такого триггера. Ниже список items шаблона.

Читайте также:  Червячки армагеддон для windows 10

И тут же триггеры.

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

В общем и целом ничего сложного. Настроить мониторинг SMART и температуры дисков в windows не на много сложнее, чем в linux. Хорошо, что есть одинаковый интерфейс с одним и тем же синтаксисом для обоих дисков. В windows 10 ко всему прочему, есть полноценная система ubuntu, можно было бы и без powershell обойтись, но получилось бы не универсальное решение. Данный способ работает на всех версиях windows, начиная с XP.

Заключение

Мониторинг smart значений жесткого диска достаточно полезная штука, но не стоит ей слепо доверять. У меня были ситуации, когда диски с Bad Sector Count работали годами. Тут важно смотреть на динамику и на статус сервера. Если он критичный, то при малейших признаках неисправности, я бы менял диск. Если это обычая файлопомойка с рейдом, то если диск не деградирует со временем, можно его не трогать.

Еще важный нюанс — подобный мониторинг жестких дисков возможен только если вы не используете raid контроллер. Если же он у вас есть, то чаще всего вы не сможете увидеть параметры smart дисков. Нужно будет использовать утилиты производителя raid контроллера и настраивать мониторинг через них.

Онлайн курс по Linux

Помогла статья? Подписывайся на telegram канал автора

Автор Zerox

95 комментариев

В zabbix_agentd.conf
1. Добавляем строчку Timeout=15
2. Добавляем строчку UserParameter=ZScript[*],powershell -File C:\zabbix\windows.hdd.ps1 «$1» «$2»
( У меня c:\Program Files\Zabbix Agent\script_smartctl.ps1)

Для windows информация полностью актуальна. Только что настроил мониторинг обычных дисков по ней.

Все пункты появились, но данные не получает. Последний скрин это же с Monitoring>Latest Data ? Вообще всё по нулям.

Привет, попробовал на 4.2 и на 4.4 и откатился до 3.4 но везде одно и то же

# zabbix_agentd -t uHDD[sda,Temperature_Celsius]
uHDD[sda,Temperature_Celsius] [m|ZBX_NOTSUPPORTED] [Unsupported item key.]

и соответственно в логах сервера
«Comp:uHDD.discovery[«<$SMARTCTL_STATIC_DISKS>«]» became not supported: Item does not allow parameters.

в вэб интерфейсе Item does not allow parameters

может есть какие то идеи?

Я конечно поздновато, но вдруг кто-то будет искать. У меня была точно такая же ошибка на версии агента 4.0.4

Решилось просто тем, что я прописал в настройках заббикс агента параметр:

UserParameter=uHDD[*],sudo smartctl -A /dev/$1| grep -i «$2″| tail -1| cut -c 88-|cut -f1 -d’ ‘

Просто в этой статье для zabbix_agent 3.4 этот параметр не прописан и я слепо следовал инструкции, думая, что так и надо 🙂

возрадуемся же милости высших сил, ибо озарило нас лучами небесными, развеяло тьму и увидели мы свет
хотя может об этом уже всем известно, но вдруг кто не в курсе 🙂
в общем сегодня ставил smartmontools и вот, там появился параметр -j, выводит все в json, и вместо перлового скрипта
можно использовать строку:
smartctl —scan -j | sed ‘s/»name»/»<#DISKNAME>«/g’ | sed ‘s/»devices»/»data»/g’

надо в Windows попробовать

День добрый.
Делаю всё как описано выше, работает.
Но когда повторяю тоже самое на серверах где стоит NVME диск (OS WinS 2019), при выполнении .\windows.hdd.ps1 discovery получаю ответ

Хотя когда проверяю в cmd
C:\Program Files\smartmontools\bin>smartctl —scan-open /dev/sda -d nvme # /dev/sda, NVMe device /dev/sdb -d nvme # /dev/sdb, NVMe device

софт их видит.
Вопрос, в чем может быть проблема и куда копать?
На всех остальных серверах с той же OS, но не NVME — всё ок!

Вывод для nvme дисков наверно другой немного, вот он и не парсится скриптом так, как надо. Посмотрите скрипт и подредактируйте под вывод информации со своих дисков.

я не силён в powershell(((
но с того что я понимаю суть тут
$items = c:\»Program Files»\smartmontools\bin\smartctl —scan-open | where <$_ -match "/dev/sd">

write-host -NoNewline » <"
write-host -NoNewline «»data»:[«

форма где всё работает
/dev/sda -d ata # /dev/sda, ATA device
/dev/sdb -d ata # /dev/sdb, ATA device

форма где не работает
/dev/sda -d nvme # /dev/sda, NVMe device
/dev/sdb -d nvme # /dev/sdb, NVMe device

со скрипта вижу, что идёт поиск совпадений <$_ -match "/dev/sd">
что в обычных, что в NVME глобально начало одинаковое
что именно нужно подправить?
подскажите, если есть возможность, буду ооочень благодарен

Вот тут https://github.com/v-zhuravlev/zbx-smartctl свежая версия шаблона и скриптов под мониторинг всех современных дисков. Советую попробовать, может получится настроить.

Разобрался.
Суть:
В скрипте идет поиск девайсов, потом проверка на включенный смарт, а потом только он отдает список девайсов.
По скольку в NVME нет смарта, то и ответа нет, и совершенно другой метод сбора инфы.
Я поправил скрипт и темплейт под NVME, всё чудно заработало.
Кому если нужно, могу без проблем поделиться!

не могли бы вы поделиться сценарием?
Я не знаю, правильно ли это написано, я бразилец ..

Если можно, поделитесь скриптом, а то Samsun 970 evo + никак не отдаётся, а в скриптах я не силён ((
Заранее благодарен.

PS: В идеале нужен скрипт для всех винтов сразу HDD + SSD nVME + SAS

А под ESXi есть скрипт собирающий состояние nvme ??

Скрип не экспортировался на сервер пока не поменял в нем версию скрипта на свою. Стоит 3.0, но при экспорте вылетает ошибка Invalid tag «/zabbix_export/templates/template(1)»: unexpected tag «httptests». Что это может быть, как поправить ? Или этот скрипт не работает и его надо переделывать для 3.0?

Не могу нормально импортировать шаблон в 4.4, ошибок нет, шаблон появляется, но элементы данных и триггеры пусты

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

Добрый день! Всё настроил, за исключением финального этапа. данные не попадают в базу. версия 4.0
zabbix_get всё принимает и показывает. А на этом же сервере находится заббикс сервер. вот он данные полученные из скрипта просто не принимает в свою базу. Пустота.
Пинг и прочие стандартные параметры в базу заббикса попадают

Сам отвечу. 3 дня мудохался. Но нашел то, что мешало. Прочитал логи сервера заббикса и увидел что действительно не получает данные заббикс, хотя команды выполняются. Был небольшой таймаут в логах сервера. Поставил на максимум. Перезапустил сервер. И заработало.

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

Доброго времени суток.
А есть возможность мониторить смарт на хосте VMWARE ESX(i)? Единственное что нашел это некое решение для серверов HP с их контроллерами, а у меня все на SuperMicro ..

Не знаю, не разбирался. С учетом того, что обычно ESXI ставят на железные рейды, инфу надо брать с них ту, что они могут отдавать. По идее, надо ставить драйвер контроллера для VMWARE, тогда вся информация по дискам будет в панели управления гипервизором. Оттуда уже ее можно забирать. ESXI вроде по snmp умеет отдавать информацию. Точно не знаю, я очень мало знаком с ESXI, надо разбираться.

В целом статья рабочая. Только что настроил по ней пачку windows серверов. Причем мониторятся диски, собранные в intel raid на материнской плате. Их имена не /dev/sda, /dev/sdb, а /dev/csmi0,0 /dev/csmi0,1 и т.д. Из-за запятой в названии, добавляется неудобство, но я в итоге все настроил, изменив скрипт на клиенте. Если кому-то нужно, обращайтесь, дам измененный скрипт.

Содержимое этого файла /etc/zabbix/zabbix_agentd.d/smart.conf для zabbix-agent 4.2.3 есть у кого?
Никак не могу настроить 🙁

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

Здравствуйте. Настраивал zabbix почти весь по Вашей статье, дошел до установки скрипта мониторинга на сервере у меня такой расклад- C:\Program Files\smartmontools\bin>smartctl —scan-open
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/csmi0,2 -d ata # /dev/csmi0,2, ATA device
/dev/csmi0,3 -d ata # /dev/csmi0,3, ATA device
Подскажите, что нужно подправить в Вашем скрипте, я так понял, там проблемы с запятыми в диcках? Спасибо!

Вот он с работающего сервера — https://yadi.sk/d/SlseG8AM32iqQA
Единственное, только не понимаю, почему с одного компьютера при открытии в файле нормальное форматирование, а с другого куча лишних пустых строк появляются.

zabbix_get -s 192.168.1.78 -k ZScript[sda,capacity]
Получаю вот такое.
Не удается загрузить файл C:\asu\smart_hdd.ps1, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.
строка:1 знак:21
+ C:\asu\smart_hdd.ps1 Zerox

Какие тут еще идеи нужны, если прямым текстом написано: «Не удается загрузить файл C:\asu\smart_hdd.ps1, так как выполнение скриптов запрещено для данной системы.» Нужно решать эту проблему.

Читайте также:  Oracle linux ssh server

а если напрямую писать?

UserParameter=ZScript[*],powershell -NoProfile -ExecutionPolicy UnRestricted -File C:\zabbix\scripts\windows.hdd.ps1 $1 $2

Alex, спасибо. Так заработало!

Более простое и элегантное решение этой задачи тут:
«Zabbix: LLD-мониторинг дисков без UserParameter и скриптов на агентах»
https://habr.com/post/344548/

Да, на вид все гораздо проще и удобнее. Надо будет проверить при случае.

Добрый день Владимир. Проверяли ли вы работоспособность решения, описанного в этой статье: «Zabbix: LLD-мониторинг дисков без UserParameter и скриптов на агентах» https://habr.com/post/344548/ и если да то поделитесь Вашей оценкой. Дело в том, что данный способ мне подходит больше поскольку ПК агентов имеют слабые характеристики. При применении это способа мониторинга смарта шаблон активный но не создает itemы. Ваше решение работает отлично.

прошу прощения за «Аноним»

Да, я проверил и постоянно использую, но немного для других метрик, хотя принцип тот же. Мне понравился метод без агентов.

Для того чтобы ошибка «Value should be a JSON object» исчезла и данные по «Windows-дискам» начали поступать в систему мониторинга, прошу автора данной статьи внести следующие коррективы в раздел «Мониторинг SMART и температуры диска в Windows».

1. После слов «Timeout=15» добавить текст:
«Теперь нужно внести коррективы в строку «PATH» системных переменных. Для этого открываем «Панель управления – Система и безопасность – Система – Дополнительные параметры – Переменные среды» и переходим в «Системные переменные» (нижняя часть). Далее ищем там строку под названием «PATH» и добавляем (двойной щелчок или нажимаем кнопку «Изменить») в конец следующие параметры «%systemroot%\System32\WindowsPowerShell\v1.0\;» и «C:\Program Files\smartmontools\bin» разделяя их (без пробелов. ) точкой с запятой!

В итоге у нас ВСЯ строка будет выглядеть так:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%systemroot%\System32\WindowsPowerShell\v1.0\;C:\Program Files\smartmontools\bin

Для того чтобы изменения вступили в силу – нужно перезагрузить «машину» (компьютер/ноутбук).

Далее идем на сервер Zabbix и проверяем предоставление Zabbix-агентом результатов работы нашего PowerShell-скрипта. Для этого запускаем терминал и вводим следующие команды:

sudo zabbix_get -s «192.168.25.11» -k ZScript[sda,status]

sudo zabbix_get -s «192.168.25.11» -k ZScript[sda,capacity]

где 192.168.25.11 – адрес нашего клиентского компьютера под ОС «Windows», на котором мы только что настроили Zabbix-агент.

Результатом успешного выполнения приведённых выше команд будет отображение статуса и объёма Вашего диска клиентского компьютера.

2. Далее заменяем предложение «На сервере делать ничего не надо, так как все сделал за вас я.» на «После этого заходим в веб-интерфейс управления Zabbix-сервера и импортируем нужный нам шаблон.»

Сам бился над этой проблемой не одну неделю. Потом ввёл в терминале Zabbix-сервера команды:
sudo zabbix_get -s «192.168.25.11» -k ZScript[sda,status]

sudo zabbix_get -s «192.168.25.11» -k ZScript[sda,capacity]

В результате они постоянно выдавали мне непонятные «крякозябры». Чтобы понять, в чём же дело, перенаправил их вывод в отдельный текстовый файл. Затем скопировал его на компьютер с ОС «Windows» и с помощью программы «AkelPad» подобрал правильную кодировку – ею оказалась кодировка «OEM-866». В итоге получил такой текст «»powershell» не является внутренней или внешней командой, исполняемой программой или пакетным файлом.»

Так что НИКАКИХ изменений ни в шаблон и ни PowerShell-скрипт для «мониторинга SMART и температуры диска в Windows» вносить НЕ НУЖНО, Необходимо лишь добавить только два параметра в строку «PATH» «Системных переменных» (см. выше).

Спасибо за понимание!

Спасибо, была такая же ошибка, помогло ваше решение

Спасибо всем за отличную статью.
Использую скрипт уважаемого SnowBars

При запуске скрипта ошибки такого вида:
\SmartScanZabbixAgent.ps1:7 char:22
+ $items = $smartctl —scan-open | where <$_ -match "/dev/sd">
+

Unexpected token ‘scan-open’ in expression or statement.
At SmartScanZabbixAgent.ps1:14 char:17
+ if (($smartctl -i -d sat $obj.substring(0,8) | where <$_ -match "SMART support .
+

Unexpected token ‘-i’ in expression or statement.
At SmartScanZabbixAgent.ps1:14 char:20
+ if (($smartctl -i -d sat $obj.substring(0,8) | where <$_ -match "SMART support .
+

Unexpected token ‘-d’ in expression or statement.
At SmartScanZabbixAgent.ps1:14 char:19
+ if (($smartctl -i -d sat $obj.substring(0,8) | where <$_ -match "SMART support .
+

Missing closing ‘)’ in expression.
At SmartScanZabbixAgent.ps1:14 char:23
+ if (($smartctl -i -d sat $obj.substring(0,8) | where <$_ -match "SMART support .
+

Unexpected token ‘sat’ in expression or statement.
At SmartScanZabbixAgent.ps1:14 char:23
+ if (($smartctl -i -d sat $obj.substring(0,8) | where <$_ -match "SMART support .
+

Missing closing ‘)’ after expression in ‘if’ statement.
At SmartScanZabbixAgent.ps1:13 char:26
+ foreach ($obj in $items) <
+

Missing closing ‘>’ in statement block.
At SmartScanZabbixAgent.ps1:6 char:5
+ try <
+

Missing closing ‘>’ in statement block.
At SmartScanZabbixAgent.ps1:14 char:94
+ . t is: Enabled»>) -ne $null) <
+

The Try statement is missing its Catch or Finally block.
At SmartScanZabbixAgent.ps1:5 char:25
+ if ($1 -eq «discovery») <
+

Missing closing ‘>’ in statement block.
Not all parse errors were reported. Correct the reported errors and try again.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken

Кто-нибудь с таким ?

Скорее всего что-то с путями, потому что эти ошибки говорят о том, что Posh не может запустить утилиту samrtctl. Соответственно, все ее ключи так же вызывают ошибки. Смотрите, откуда запускается smartmontools и куда обращается скрипт powershell.

Спасибо за отличную статью!

Внес немного правок
1) Поскольку в пути к з\а есть пробел, моя строка в userparameter файле выглядит так:
UserParameter=ZScript[*],powershell.exe -file «C:\Program Files\Zabbix_Agent\scripts\windows.hdd.ps1» «$1» «$2»

2) Дабы всё работало, когда агент запущен под «local system», чуть поправил ps1 файл:
в начале объявим «$smartctl=’C:\Program Files\smartmontools\bin\smartctl.exe'»
а после заменим все вхождеия «smartctl» на «& smartctl»
ИМХО это сделало скрипт чуть более универсальным.

Ну и для удобства дебагинга в отловке ошибок «catch » вместо «catch «.
Тогда и стало понятно, что local system не видит systemctl.

Отлично, спасибо за замечания по существу.

После примерно недели танцев с бубном я-таки запустил это. Но:
1) в userparameter файла zabbix_agetnd.cinf надо вписывать не ту строку, как указано, а
ZScript[*],powershell -File [путь к файлу-скрипту *.ps1] «$1» «$2»
Иначе это не работает.
2) одного скрипта мне было недостаточно, так как он не может работать не с ata дисками, чтобы он умел работать с sat дисками, его надо скопировать, и добавить в команды к smartctl ключ -d sat, иначе он их просто не найдет. Так же можно сделать еще и для scsi дисков, но скорее всего они будут в raid, и до них все равно не достучаться, так что это избыточность. После чего надо добавить в userparameter еще один скрипт новой строкой и рестартануть службу zabbix agent. У себя я использовал для всего этого Kix.
3) переменная path не нужна, если: в скрипте поменять smartctl на полный путь к файлу c:\smartmontools\smartctl.exe к примеру. И в этом случае можно просто скриптом раскидать на все нужные ПК папку с дистрибутивом smartmontools x32 версии и обращаться к ней в скрипте. у меня в сети есть как х32 так и х64 ОСи, так что я взял распакованную х32 прогу и стартовым скриптом рассовал ее по всем машинам.
4) шаблон так же надо скопировать, переименовать и переделать для sat дисков. Для этого можно открыть его блокнотом и автозаменой пройтись по ZScript заменив на ZScript_sat к примеру. Так же в шаблоне косяк с триггерами, у них нет выражения восстановления. То есть если они сработали, то они не исчезнут до тех пор, пока не будет отключен хост и не будут удалены его данные по таймауту, указанному в прототипе элемента данных. Прототипы триггреов независимы, даже на один и тот же элемент данных. Это все тоже пришлось править. Мелочи, но когда из прототипов будут делаться элементы и триггеры их придется править вручную, а если хостов, как у меня в сети, 700 штук — это уже проблема.
5) чтобы диски начали обнаруживаться, надо хосты прицепить к шаблонам (это и так понятно, но мало ли). В виртуалках это не будет работать по понятным причинам отсутствия raid в виртуальных дисках. С raid-контроллерами smartmontools так же работать не умеет, что логично. У меня она даже статус smart не смогла считать. Тут можно прикрутить к Заббиксу мониторинг ssh, но это совершенно другая история

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

Конечно! Я потому и отписал все свои злоключения, чтобы кому-то помочь и упростить жизнь.
BTW, спасибо за статью.

Уважаемый SnowBars!
Поделитесь, пожалуйста своими рабочими (модифицированными) скриптами и шаблоном!

Оцените статью