Ad Widget

Collapse

Обнаружение устройств по SNMP

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Samurof
    Junior Member
    • May 2018
    • 10

    #1

    Обнаружение устройств по SNMP

    Здравствуйте.
    Имеются кондиционеры в количестве 4-х штук. С них приходят данные по SNMP в систему мониторинга (температура, давление, состояние вентиляторов, триггеры и прочее). С этим проблем нет.
    Вопрос следующий, при обнаружении имена устройств распознаются в таком виде: D0 A3 D1 81 D1 82 D0 B0 D0 BD D0 BE D0 B2 D0 BA D0 B0 20 31 2D 31, при конвертировании должно быть: Установка 1-1, к примеру.
    Что было сделано: создано правило обнаружения discovery[{#MODULE_NAME},1.3.6.1.4.1.29462.10.1.1.6.1.1.3932 21.1]
    Создана предобработка с помощью JavaScript которая конвертирует hex в string.
    При тестировании все отрабатывает как нужно, имя устройства пишется на русском.
    Но после создания узла сети и при обнаружении имена устройств выводятся в следующем виде: D0 A3 D1 81 D1 82 D0 B0 D0 BD D0 BE D0 B2 D0 BA D0 B0 20 31 2D 31
    В чем может быть проблема?
    Attached Files
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Originally posted by Samurof
    В чем может быть проблема?
    У вас предобработка рассчитана на то, что на вход подаётся одна строка (в том виде, как пример для тестирования на вашем скриншоте).
    В реальности при работе LLD результатом будет JSON, в котором таких строк будет целый массив. Попробуйте при тестировании отметить галочку "Получить значение с узла сети", и сравните сами.
    Т.е. для предобработки в правилах LLD нужно добавлять дополнительный цикл, который с помощью используемой вами функции пройдётся по всем элементам массива и сконвертирует там нужные строки.

    Правда, для меня осталось неясным, зачем в данном случае вообще использовать LLD. На одном устройстве имён может быть несколько, что ли? Или может не быть вообще?

    Comment

    • Samurof
      Junior Member
      • May 2018
      • 10

      #3
      Originally posted by Kos
      У вас предобработка рассчитана на то, что на вход подаётся одна строка (в том виде, как пример для тестирования на вашем скриншоте).
      В реальности при работе LLD результатом будет JSON, в котором таких строк будет целый массив. Попробуйте при тестировании отметить галочку "Получить значение с узла сети", и сравните сами.
      Т.е. для предобработки в правилах LLD нужно добавлять дополнительный цикл, который с помощью используемой вами функции пройдётся по всем элементам массива и сконвертирует там нужные строки.

      Правда, для меня осталось неясным, зачем в данном случае вообще использовать LLD. На одном устройстве имён может быть несколько, что ли? Или может не быть вообще?
      Пробовал отметить "Получить значение с узла сети". Ответ не приходит. Отнес это к особенности контроллера wib8000. Долго отправляет ответы.

      У каждого устройства только одно имя. Всего устройств 4. Хотелось облегчить процесс создания узлов сети и элементов данных к ним.

      Comment

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

        #4
        Originally posted by Samurof
        У каждого устройства только одно имя. Всего устройств 4. Хотелось облегчить процесс создания узлов сети и элементов данных к ним.
        Для создания узлов сети используется сетевое обнаружение, а не низкоуровневое (которое LLD).

        LLD имет смысл тогда, когда на хосте (узле сети) есть множество однотипных объектов в неизвестном заранее количестве - например, логические диски, подмонтированные файловые системы или сетевые интерфейсы, - тогда для них по одному шаблону можно из прототипов насоздавать элементы данных и триггеры.

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

        Я бы в такой ситуации отказался бы от использования LLD для имени устройства (раз оно всегда одно) и настраивал бы для его получения обычный элемент данных. Кстати, в этом случае и найденный вами код для препроцессинга должен отрабатывать нормально.

        Про долгие ответы мне комментировать трудно; но если они будут первышать заданный на уровне сервера Zabbix тайм-аут, то с мониторингом будут проблемы.

        Comment

        • Samurof
          Junior Member
          • May 2018
          • 10

          #5
          Originally posted by Kos
          Для создания узлов сети используется сетевое обнаружение, а не низкоуровневое (которое LLD).

          LLD имет смысл тогда, когда на хосте (узле сети) есть множество однотипных объектов в неизвестном заранее количестве - например, логические диски, подмонтированные файловые системы или сетевые интерфейсы, - тогда для них по одному шаблону можно из прототипов насоздавать элементы данных и триггеры.

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

          Я бы в такой ситуации отказался бы от использования LLD для имени устройства (раз оно всегда одно) и настраивал бы для его получения обычный элемент данных. Кстати, в этом случае и найденный вами код для препроцессинга должен отрабатывать нормально.

          Про долгие ответы мне комментировать трудно; но если они будут первышать заданный на уровне сервера Zabbix тайм-аут, то с мониторингом будут проблемы.
          Да, вы правы. Проще и быстрее будет сделать все вручную.

          С долгим ответом разобрался. В результате нажатия "Получить значение с узла сети" появилось следующее:
          [{"{#SNMPINDEX}":"1","{#MODULE_NAME}":"D0 A3 D1 81 D1 82 D0 B0 D0 BD D0 BE D0 B2 D0 BA D0 B0 20 31 2D 31 "},
          {"{#SNMPINDEX}":"2","{#MODULE_NAME}":"D0 A3 D1 81 D1 82 D0 B0 D0 BD D0 BE D0 B2 D0 BA D0 B0 20 31 2D 32 "},
          {"{#SNMPINDEX}":"3","{#MODULE_NAME}":"D0 A3 D1 81 D1 82 D0 B0 D0 BD D0 BE D0 B2 D0 BA D0 B0 20 31 2D 33 "},
          {"{#SNMPINDEX}":"4","{#MODULE_NAME}":"D0 A3 D1 81 D1 82 D0 B0 D0 BD D0 BE D0 B2 D0 BA D0 B0 20 31 2D 34 "}]

          В принципе получилось добавив еще один шаг предобработки. Но извлечение нескольких значений не поддерживается.
          Attached Files

          Comment


          • ayugubanov
            ayugubanov commented
            Editing a comment
            Добрый день!

            Как можно с Вами связаться насчёт шаблона мониторинга кондиционеров Stulz (WIB-8000) ?
        Working...