Ad Widget

Collapse

Мониторинг параметров smart

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • gospodin.horoshiy
    Senior Member
    • Sep 2008
    • 272

    #106
    Originally posted by Victor Sklyarov
    Ничего не понял. Зачем в обнаружении формируется JSON с кучей параметров?
    {
    "data":[
    {
    "{#DISKSN}":"WD-WMC2E9744207",
    "{#DISKMODEL}":"WDC WD5000AAKX-00ERMA0",
    "{#DISKNAME}":"/dev/sda",
    "{#DISKCMD}":"/dev/sda -data",
    "{#SMART_ENABLED}":"1",
    "{#DISKTYPE}":"0"
    }
    ]
    }
    В прототипах элементов в шаблоне используется только #DISKNAME и #DISKCMD. Разницы в выводе smartctl c ключом -data и без него -нет. Фактически нужен только #DISKNAME. А вот обнаружение #DISKTYPE = 0 ничего не даёт. Элемент с SSD wearout заводится для HDD и, естественно, оказывается неподдерживаемым.

    Посмотрите последнюю (1.4) версию шаблона и скриптов/конфига. В последнем шаблоне как раз два дискавери - один для SSD и другой для HDD. Также появилась поддержка дисков NVMe и SAS.
    Zbx 2.0.4 on Debian and MYSQL5 on Ubuntu Server 64bit 8.04,
    200+ Win Agents, 50+ Linux Agents, 150+ Network Devices

    Comment


    • Victor Sklyarov
      Victor Sklyarov commented
      Editing a comment
      Оператор $smart_scanresults += & $smartctl "--scan-open" "-dnvme" написан с ошибкой, нужно так:
      $smart_scanresults += & $smartctl "--scan-open" "-d nvme"
      Last edited by Victor Sklyarov; 04-05-2020, 20:51.
  • montino66
    Junior Member
    • Sep 2018
    • 4

    #107
    Господа, пытаюсь настроить мониторинг SMART с помощью zbx-smartctl. Делаю по инструкции, но запнулся на этапе проверки работы скрипта smartctl-disks-discovery.ps1.
    Он не выдает результатов.Просто пустой вывод.
    powershell C:\zabbix\smartctl-disks-discovery.ps1
    {
    "data":[

    ]
    }

    При этом smartmontools диск видит и результат выдает (командой к примеру:C:\WINDOWS\system32>"C:\Program Files\smartmontools\bin\smartctl.exe" -a /dev/sda)

    И соответственно zabbix агент ругается:
    PS C:\zabbix> .\zabbix_agentd.exe -c .\zabbix_agentd.conf -t uHDD.discovery
    uHDD.discovery [m|ZBX_NOTSUPPORTED] [Unsupported item key.]

    Подскажите пожалуйста, куда копнуть?

    Comment

    • grenom
      Junior Member
      • Apr 2016
      • 4

      #108
      Привет комрады!
      Хочу рассказать свою историю мониторинга дисков… по крайней мере начну, а если будет интересно — продолжу). Пролистал эту ветку почти всю, и в общем то некоторые решения которые люди здесь описывают испытывал ранее.

      Входные данные:
      1) Начинал с ZBX 2.0, сейчас 4.0
      2) ~200 доменных win (7ки и 10ки) машин.
      3) агенты ставятся политикой powershell скриптом, с минимальным конфигом.

      В моей ситуации добавлять в реальном времени (в течении дня) какие либо параметры в zabbix_agentd.conf — проблематично.
      В общем для меня оказалось самым удобным (но не простым) создать шару и элементы данных system.run которые запускают .exe с шары. Запускать надо smartctl.exe, однако, отфильтровать нужный параметр (relocated sectors, s/n итд) стандартными командами… ну наверное можно что то с find, но то ли я не умею, то ли показалось некрасиво… в общем написал свою программку (c++ и boost) которая фильтрует то что мне нужно… Выглядит это так:

      1) модель диска - system.run[\\{$ZABBIX_SHARE}\public\smart\smregex -d/dev/sda -s\\{$ZABBIX_SHARE}\public\smart\smartctl -o model]
      2) переназначенные сектора - system.run[\\{$ZABBIX_SHARE}\public\smart\smregex -d/dev/sdb -i5 -s\\{$ZABBIX_SHARE}\public\smart\smartctl]
      3) сирийник диска - system.run[\\{$ZABBIX_SHARE}\public\smart\smregex -d/dev/sdb -s\\{$ZABBIX_SHARE}\public\smart\smartctl -o sn]
      3) ну и тд — почти любой параметр со smartctl можно получать

      По итогу получил — все очень быстро, никаких таймаутов, zabbix_agentd.conf не правится, все управление с сервера.
      Кстати по поводу powershell — отказался его применять в мониторинге вообще. Очень долгий запуск. Особенно на ПК с hdd. С ssd еще хоть как то, а вот с обычными дисками отваливается по таймауту в 15 секунд…

      Сейчас тестирую обнаружение дисков, добавил только вот позавчера, работает также:
      system.run[\\{$ZABBIX_SHARE}\public\smart\smregex -s\\{$ZABBIX_SHARE}\public\smart\smartctl -c]
      Обнаружение пока показало себя отлично, еще недельку протестирую и наверное назначу на все наблюдаемые ПК.

      Такое решение интересно вам? Стоит его выложить сюда и объяснить как пользоваться? Не исключаю что подобное уже есть, но вот с ходу не нашел.




      P.S. Есть похожее решение для получения серийников ПК, модели ПК, проца, количество и модель оперативной памяти, мониторы с авто обнаружением (серийник + модель) и прочее что может быть интересно админу чтобы составить инвентарную картину Windows машин в своей конторе. Как думаете стоит это выложить и куда?

      Comment

      • DSV12
        Senior Member
        Zabbix Certified Specialist
        • Nov 2018
        • 156

        #109
        Просто хинт, может, не совсем в тему: в Windows, начиная чуть ли не с Win2000, штатно, "из коробки", присутствует более-менее сопоставимый с никсовским grep-ом эквивалент, гораздо более продвинутый, чем убогий find:
        Code:
        Поиск строк в файлах.
        
        FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:файл]
                [/C:строка] [/G:файл] [/D:список_папок] [/A:цвета] [/OFF[LINE]]
                строки [[диск:][путь]имя_файла[ ...]]
        
          /B              Искать образец только в началах строк.
          /E              Искать образец только в конце строк.
          /L              Поиск строк дословно.
          /R              Поиск строк как регулярных выражений.
          /S              Поиск файлов в текущей папке и всех ее подпапках.
          /I              Определяет, что поиск будет вестись без учета регистра.
          /X              Печатает строки, которые совпадают точно.
          /V              Печатает строки, не содержащие совпадений с искомыми.
          /N              Печатает номер строки, в которой найдено совпадение.
          /M              Печатает только имя файла, в котором найдено совпадение.
          /O              Печатает найденные строки через пустую строку.
          /P              Пропускает строки, содержащие непечатаемые символы.
          /OFF[LINE]      Не пропускает файлы с установленным атрибутом "Автономный".
          /A:цвета        Две шестнадцатеричные цифры - атрибуты цвета. См. "COLOR /?"
          /F:файл         Читает список файлов из заданного файла (/ для консоли).
          /C:строка       Использует заданную строку как искомую фразу поиска.
          /G:файл         Получение строк из заданного файла (/ для консоли).
          /D:список_папок Поиск в списке папок (разделяются точкой с запятой).
          строка          Искомый текст.
          [диск:][путь]имя_файла
                          Задает имя файла или файлов.
        
        Использовать пробелы для разделения нескольких искомых строк, если аргумент не
        имеет префикса /C. Например, 'FINDSTR "Привет мир" a.b' ищет "Привет" или
        "мир" в файле a.b, а команда 'FINDSTR /C:"Привет мир" a.b' ищет строку
        "Привет мир" в  файле a.b.
        
        Краткая сводка по синтаксису регулярных выражений:
          .               Любой символ.
          *               Повтор: ноль или более вхождений предыдущего символа или
                          класса
          ^               Позиция в строке: начало строки
          $               Позиция в строке: конец строки
          [класс]         Класс символов: любой единичный символ из множества
          [^класс]        Обратный класс символов: любой единичный символ из дополнения
          [x-y]           Диапазон: любые символы из указанного диапазона
          \x              Служебный символ: символьное обозначение служебного символа x
          \<xyz           Позиция в слове: в начале слова
          xyz\>           Позиция в слове: в конце слова
        
        За полной информацией о регулярных выражениях FINDSTR обратитесь к доступной
        интерактивной документации.

        Comment

        • Hasper
          Junior Member
          • Jul 2018
          • 4

          #110
          Привет, коллеги.
          С Zabbix работаю совсем недавно. И целью использования было как раз таки мониторинг SMART
          параметров жестких дисков. Пытался настроить по мануалу https://github.com/v-zhuravlev/zbx-smartctl
          однако не прилетает ничего на сервер.
          PS скрипт отрабатывает хорошо данные получаю.
          остальные дефолтные данные с Zabbix монитора то же получаю.
          Таймаут увеличивал до 15.
          Есть подозрение, что это не работает в версии 4.4. шаблон в примере от 3.4
          Или вовсе не работает в случае пассивного клиента.
          Подскажите куда копать ?

          Comment

          • grommir
            Senior Member
            • Mar 2013
            • 134

            #111

            Это проверял?

            Comment

            • grenom
              Junior Member
              • Apr 2016
              • 4

              #112
              Вот - https://github.com/grenom/smregex
              Моё решение по мониторингу дисков с автообнаружением по типу дисков. Обертка на smartctl. Оттестировано, работает норм. Можно создавать свои шаблоны по типу дисков. Если нужно могу выложить шаблоны.
              Ссыль на share - https://share.zabbix.com/storage-dev...ntools/smregex
              Last edited by grenom; 16-09-2020, 07:41. Reason: добавлена ссылка

              Comment

              • shkiper
                Senior Member
                • Mar 2016
                • 123

                #113
                кстати (уже давно) smartctl с ключом -j выводит в json, практически готовое LLD
                Code:
                smartctl --scan -j | sed 's/"name"/"{#DISKNAME}"/g' | sed 's/"devices"/"data"/g'

                Comment

                • Hamardaban
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • May 2019
                  • 2713

                  #114
                  не забывайте, что есть еще windows ... и тащить в него sed..... лучше делать обработку на стороне припроцессинга в LLD

                  Comment

                  • Kos
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • Aug 2015
                    • 3404

                    #115
                    Originally posted by shkiper
                    кстати (уже давно) smartctl с ключом -j выводит в json, практически готовое LLD
                    Code:
                    smartctl --scan -j | sed 's/"name"/"{#DISKNAME}"/g' | sed 's/"devices"/"data"/g'
                    Причём в нынешних версиях Zabbix то, что делается в этой строке sed-ом, можно делать на стороне сервера Zabbix через препроцессинг. А можно и даже этого не делать, если аккуратно настроить LLD

                    Comment

                    • shkiper
                      Senior Member
                      • Mar 2016
                      • 123

                      #116
                      еще вот думал как-бы получать сами данные параметров дисков через json и предобработку, но так и не надумал
                      что-то я хочу много данных по одному диску получать (10 параметров), конечно период опроса разный и некоторые параметры опрашиваются раз в 10 мин и даже раз в час
                      но заббикс не умеет равномерно распределять запросы, а каждый запуск smartctl это скачок iowait time
                      в итоге на серверах где несколько дисков получаем "шум" на графике iowait time с пиками до 6-8 %, который забивает рабочую нагрузку
                      плюс использование smartctl -a -j вызывает заметный такой подвисон
                      исторически обхожу проблему скриптом с кэшированием
                      но время идет, вот скрипт LLD заменился одной строкой, хотелось бы и параметры получать так-же

                      и еще вот мысль (не оформившаяся окончательно), по поводу получения информации по привязке точек монтирования к устройствам (а то при авариях и невозможности зайти в консоль начинаешь вспоминать какой диск каком тому соответствовал)
                      есть например команда:
                      Code:
                      lsblk -Jpo NAME,FSTYPE,MOUNTPOINT
                      вот наверное неплохо было бы эту информацию как-то присоседить к параметрам smartctl
                      а вообще lsblk столько инфы может выдать, что и smartctl частично заменяет

                      Comment

                      • Hamardaban
                        Senior Member
                        Zabbix Certified SpecialistZabbix Certified Professional
                        • May 2019
                        • 2713

                        #117
                        имхо smart немного более про ошибки диска чем про «инвентаризацию»
                        и основная «засада» - жуткий зоопарк форматов вывода параметров.
                        всяк производитель норовит что-то свое выдумать.... как новый диск - так правь regex.

                        Comment


                        • grenom
                          grenom commented
                          Editing a comment
                          В обычных HDD всё +- одинаково. А вот в SSD/NVMe там да, кто во что горазд...
                      Working...