Ad Widget

Collapse

Пользовательские правила обнаружения SNMP

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • learning to fly
    Junior Member
    • Dec 2018
    • 6

    #1

    Пользовательские правила обнаружения SNMP



    Доброго времени суток, дорогие форумчане. Прошу совета или помощи куда копать. Ситуация следующая: имеется парк принтеров, который хочется мониторить по SNMP, но данные от них приходят в hex-string. Написал скрипт на питоне, который перевел данные в читаемый формат и в итоге сформировал красивый json (валидацию на спец. сайтах проходит)

    HTML Code:
    {
        "data": [
            "{"{#SUPVALUE}": "Black Cartridge HP CB390A\\u0000"}",
            "{"{#SUPVALUE}": "Cyan Cartridge HP CB381A\\u0000"}",
            "{"{#SUPVALUE}": "Magenta Cartridge HP CB383A\\u0000"}",
            "{"{#SUPVALUE}": "Yellow Cartridge HP CB382A\\u0000"}",
            "{"{#SUPVALUE}": "Black Image Drum HP CB384A\\u0000"}",
            "{"{#SUPVALUE}": "Cyan Image Drum HP CB385A\\u0000"}",
            "{"{#SUPVALUE}": "Magenta Image Drum HP CB387A\\u0000"}",
            "{"{#SUPVALUE}": "Yellow Image Drum HP CB386A\\u0000"}",
            "{"{#SUPVALUE}": "Image Transfer Kit HP CB463A\\u0000"}",
            "{"{#SUPVALUE}": "Image Fuser Kit HP 110V-CB457A, 220V-CB458A\\u0000"}",
            "{"{#SUPVALUE}": "Roller Kit HP CB459A\\u0000"}",
            "{"{#SUPVALUE}": "Document Feeder Kit HP CE487B\\u0000"}"
        ]
    }
    Скрипт запускается от имени zabbix и с доступом к нему все в порядке. Даже тестовый итем создавал, который забирает вывод скрипта в текстовом формате.

    Поместил скрипт в папку externalscript, прописал в ключ printer_supplies_netsnmp.py[{HOST.CONN},public], т.к. скрипт требует два входных аргумента с адресом и коммюнити.


    Click image for larger version

Name:	Без имени-1.jpg
Views:	95
Size:	16.7 KB
ID:	374552

    В фильтре пробовал оставить чистым и вставить туда {#SUPVALUE} с пустым значением макроса

    Создал прототип данных

    Click image for larger version

Name:	Без имени-2.jpg
Views:	78
Size:	31.5 KB
ID:	374553

    В предобработке пусто

    Жду... ничего. Элементов нет, ошибок в вебе нет. В логах с дебагом 4 нет, либо я слепой. Голова от курения гугла и мануалов второй день пухнет. Прошу, объясните, что я делаю не так?

    Заранее спасибо.
  • Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    #2
    Встроенный LLD макрос {#SNMPINDEX} создается стандартным заббиксовским LLD для SNMP. У вас же кастомное LLD, возвращающее только макрос {#SUPVALUE}, и макросу {#SNMPINDEX}, который вы пытаетесь использовать в SNMP OID, тут взяться неоткуда.

    Comment

    • learning to fly
      Junior Member
      • Dec 2018
      • 6

      #3
      Originally posted by Semiadmin
      Встроенный LLD макрос {#SNMPINDEX} создается стандартным заббиксовским LLD для SNMP. У вас же кастомное LLD, возвращающее только макрос {#SUPVALUE}, и макросу {#SNMPINDEX}, который вы пытаетесь использовать в SNMP OID, тут взяться неоткуда.
      Спасибо большое. Это была бы вторая проблема, с которой бы я столкнулся.

      Проблему которую я обозначил - решил. Дело оказалось в том, что в Python3.7 в модуле json функция dumps выводит данные массива data в формате строк. Т.е. "{"{#SUPVALUE}": "Black Cartridge HP CB390A\\u0000"}" считается не элементом словаря, а строкой-элементом (наглядно видно в утилите jq). После удаления кавычек и приведения в следующий вид {"{#SUPVALUE}": "Black Cartridge HP CB390A\\u0000"}, переменная {#SUPVALUE} нормально подхватилась заббиксом. По совету Semiadmin включил в json также элемент {#SNMPINDEX}. Итого вывод json выглядит так:

      HTML Code:
      {
          "data": [
              {"{#SNMPINDEX}": 1, "{#SUPVALUE}": "Black Cartridge HP CB390A"},
              {"{#SNMPINDEX}": 2, "{#SUPVALUE}": "Cyan Cartridge HP CB381A"},
              {"{#SNMPINDEX}": 3, "{#SUPVALUE}": "Magenta Cartridge HP CB383A"},
              {"{#SNMPINDEX}": 4, "{#SUPVALUE}": "Yellow Cartridge HP CB382A"},
              {"{#SNMPINDEX}": 5, "{#SUPVALUE}": "Black Image Drum HP CB384A"},
              {"{#SNMPINDEX}": 6, "{#SUPVALUE}": "Cyan Image Drum HP CB385A"},
              {"{#SNMPINDEX}": 7, "{#SUPVALUE}": "Magenta Image Drum HP CB387A"},
              {"{#SNMPINDEX}": 8, "{#SUPVALUE}": "Yellow Image Drum HP CB386A"},
              {"{#SNMPINDEX}": 9, "{#SUPVALUE}": "Image Transfer Kit HP CB463A"},
              {"{#SNMPINDEX}": 10, "{#SUPVALUE}": "Image Fuser Kit HP 110V-CB457A, 220V-CB458A"},
              {"{#SNMPINDEX}": 11, "{#SUPVALUE}": "Roller Kit HP CB459A"},
              {"{#SNMPINDEX}": 12, "{#SUPVALUE}": "Document Feeder Kit HP CE487B"}
          ]
      }
      Все переменные передаются. Все работает.

      Comment

      Working...