Ad Widget

Collapse

Динамические элементы данных узла

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • r0mk
    Junior Member
    • Feb 2015
    • 6

    #1

    Динамические элементы данных узла

    Добрый день!
    Для мониторинга технологической сети хотел бы сделать следующее:

    Узел сети существует.
    При наличии Description на порту маршрутизатора автоматически создавать два элемена данных по ifIndex и строить по ним график. Соответственно имена ЭД и графика формируются из Description интнерфейса.

    Такое вообще возможно?
  • r0mk
    Junior Member
    • Feb 2015
    • 6

    #2
    Сам же отвечу на свой вопрос.
    Все оказалось очень легко, хотя и не очевидно.

    Нужно создать новый шаблон, внутри которого создать правило обнаружения, которое будет сканировать snmp ветку с description. В результате я получаю две глобальных переменных {#SNMPINDEX} и {#SNMPVALUE}, которые можно дальше использовать для создания новых переменных и графиков.

    Попутно выявил особенность:
    Нельзя писать description на русском и нельзя его делать длинней 128 символов. Иначе данные не влазят в базу

    В документации раздел называется "Низкоуровневое обнаружение"

    Comment

    • r0mk
      Junior Member
      • Feb 2015
      • 6

      #3
      При эксплуатации выяснилось, что для кажного Item и triger нужно в название указывать не только description интерфейса, а еще и его alias.

      Оказалось, что нужно использовать Внешнюю проверку.

      В конфигурации заббикса добавл директорию для внешних команд из /usr/local/bin

      Написал скрипт, может кому пригодится:

      Code:
      #!/bin/sh
      ip=$1
      echo "{"
      echo "\"data\":["
      
      output=`snmpwalk -v2c -c public $ip 1.3.6.1.2.1.31.1.1.1.18 | \
      gawk ' { if (match($0,/^iso.3.6.1.2.1.31.1.1.1.18.([[:digit:]]+) = STRING: (.*)/,inde)) {printf("%s %s\n",inde[1],inde[2]);};}' | \
      while read index descr; do \
              snmpget -c public -v2c $ip 1.3.6.1.2.1.2.2.1.2.$index | cut -d ' ' -f4 | \
      gawk -v gawkindex="$index" -v gawkdescr="$descr" '{ match($0,/^(.*)/intname) ;printf("{ \"{#SNMPINDEX}\":\"%s\",\t \"{#SNMPNAME}\":%s,\t \"{#SNMPVALUE}\":%s\t},\n",gawkindex,$0, gawkdescr); };'
      done
      `
      echo output | sed s'/.$//'
      
      echo "]"
      echo "}"

      Все же awk не так здорово подходит для JSON.


      Осталось создать новое правило обнаружения с внешней проверкой и ключом zabbix.net.discovery.sh[ "{HOST.CONN}"]

      Теперь доступны макросы {#SNMPINDEX},{#SNMPNAME},{#SNMPVALUE}

      Comment

      • Jimson
        Senior Member
        • Jan 2008
        • 1327

        #4
        Оно https://www.zabbix.com/forum/showthread.php?t=28870 ?

        Comment

        • r0mk
          Junior Member
          • Feb 2015
          • 6

          #5
          Originally posted by Jimson
          Почти. Ситуация похожая, только мне именно на этапе LLD нужно было и description и alias собирать, чтобы в названиях использовать.

          В случае падения линка нужно знать и название интерфейса и дескрипшен, разумеется остальные прототипы элементов данных я тоже создал. Они так выглядят:

          {#SNMPVALUE} ifDescr[{#SNMPVALUE}]
          AdminState {#SNMPNAME} {#SNMPVALUE}
          bandwidth {#SNMPNAME} {#SNMPVALUE}
          Input errors {#SNMPNAME} {#SNMPVALUE}
          Input {#SNMPNAME} {#SNMPVALUE}
          OperState {#SNMPNAME} {#SNMPVALUE}
          Output errors {#SNMPNAME} {#SNMPVALUE}
          output {#SNMPNAME} {#SNMPVALUE}

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #6
            Originally posted by r0mk
            Осталось создать новое правило обнаружения с внешней проверкой и ключом zabbix.net.discovery.sh[ "{HOST.CONN}"]

            Теперь доступны макросы {#SNMPINDEX},{#SNMPNAME},{#SNMPVALUE}
            Тоже писал генератор SNMP-LLD на bash

            Comment

            • Jimson
              Senior Member
              • Jan 2008
              • 1327

              #7
              Originally posted by r0mk
              Почти. Ситуация похожая, только мне именно на этапе LLD нужно было и description и alias собирать, чтобы в названиях использовать.
              Никто не мешает в названии использовать 2+ макроса, главное что бы они были в JSON, для этого и придумывался этот скрипт. Кстати, Alias (ifAlias), если мы про название SNMP датчика говорим, и есть description, а вот ifDescr это не description, а полное название интерфейса.

              Comment

              • probeerka
                Junior Member
                • Dec 2015
                • 1

                #8
                Здравствуйте!
                Хочу сделать добавление элемента данных в шаблоне, опираясь на значения данных OperStatus и ifAlias: создавать элемент данных только в случае, если operstatus=1 и ifAlias не содержит в своем значении "rif,vlan,aux" и т.п. Пока не получается, я пытаюсь отфильтровать по индексу порта (ненужные порты располагаются за 100-ыми индексом).
                Скриншоты:

                Предложенные в треде решения интересны, но хотелось бы использовать встроенные средства. Zabbix 2.4.6, SNMP v3.

                Comment

                Working...