Ad Widget

Collapse

Как создать один item из 2-x OIDов?

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Astar
    Member
    • Jul 2022
    • 36

    #1

    Как создать один item из 2-x OIDов?

    железка возвращает данные о себе и соседней станции и далее все параметры с индексом станции.

    создал LLD rule:
    Code:
    discovery[{#STATIONINDEX}], .1.3.6.1.4.1.46056.1.1.1.1]
    snmp возвращает версию firmware 2-мя OIDами MXVERSIONMAJOR - 1.3.6.1.4.1.46056.1.2.1.2. и MXVERSIONMINOR - .1.3.6.1.4.1.46056.1.2.1.3.

    создаю item prototypes в этом LLD mxVersion и хочу чтобы он имел вид MXVERSIONMAJOR.MXVERSIONMINOR
    делаю item calculated и прописываю формулу:

    Code:
    concat(last(".1.3.6.1.4.1.46056.1.2.1.2.{#STATIONINDEX}", ".", last(".1.3.6.1.4.1.46056.1.2.1.3.{#STATIONINDEX}"))
    выдает ошибку что формула неверна. ( incorrect expression starting from concat....) Исправить не знаю как, поиск по форуму и чтение доков не помогли. Скорее всего не должны присутсвовать #STATIONINDEX}

    или как вообще это сделать по другому не плодя не нужных отдельных items?​
  • Answer selected by Astar at 27-01-2023, 12:12.
    Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    А в вашем случае "CCTM ES-100" (с пробелом, но без кавычек) - это имя хоста или имя шаблона?
    На том хосте элемент данных с таким именем реально создался?

    Если оно относится к текущему хосту, то я бы имя из формулы вообще бы убрал:
    Code:
    concat(last(//cctm.mxTable.mxVersionMajor[{#SNMPINDEX}]),".",last(//cctm.mxTable.mxVersionMinor[{#SNMPINDEX}]))​
    Только когда будете редактировать прототипы в правилах LLD, не забудьте, что проверять надо не сразу:
    • сначала подождать минуту, чтобы сервер обновил свой кэш конфигурации;
    • затем дождаться очередной итерации работы правила LLD (ну тут для SNMP-правил можно дёрнуть вручную через "Execute now");
    • убедиться, что правило отработало и в порождённых им вычисляемых элементах данных формула реально поменялась;
    • дождаться очередного цикла обновления этих элементов данных (не помню, можно ли их принудительно выполнить через "Execute now" для вычисляемых элементов данных - наверное, тоже можно).

    Comment

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

      #2
      В формулах вычисляемых элементов данных используются ключи других элементов данных. Ключи, а не OID-ы.

      Comment

      • Astar
        Member
        • Jul 2022
        • 36

        #3
        Originally posted by Kos
        В формулах вычисляемых элементов данных используются ключи других элементов данных. Ключи, а не OID-ы.
        Спасибо! понял.
        сделал как понял, пока тоже выдает ошибку (уже при выполнении LLD) но вопрос еще не сформулировал, надо поэкспериментировать

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #4
          Можно, думаю, сделать тестовый айтем с SNMP OID вроде discovery[{#SNMPVALUE},.1.3.6.1.4.1.46056.1.2.1] (могу ошибаться в OID'е) и получить в него JSON с обеими версиями, а потом в препроцессинге обработать по вкусу..

          Comment

          • Astar
            Member
            • Jul 2022
            • 36

            #5
            Всё-таки необходима помощь. Сформулировал вопрос.
            создал LLD
            name = station discovery
            key = cctm.discovery.station
            snmpoid = discovery[{#STATIONINDEX}, .1.3.6.1.4.1.46056.1.1.1.1]​

            возвращает он [{"{#SNMPINDEX}":"1","{#STATIONINDEX}":"1"},{"{# SNM PINDEX}":"2","{#STATIONINDEX}":"2"}]
            из него мне нужен {#SNMPINDEX}, но его нельзя указывать в выражении discovery

            в этом LLD создал 3 item prototype

            item prototype 1
            Code:
            name = MX VersionMajor {#SNMPINDEX}
            key = cctm.mxTable.mxVersionMajor[{#SNMPINDEX}]
            snmpoid = .1.3.6.1.4.1.46056.1.2.1.2.{#SNMPINDEX}
            type_of_information = numeric(unsigned)
            item prototype 2
            Code:
            name = MX VersionMinor {#SNMPINDEX}
            key = cctm.mxTable.mxVersionMinor[{#SNMPINDEX}]
            snmpoid = .1.3.6.1.4.1.46056.1.2.1.3.{#SNMPINDEX}
            type_of_information = numeric(unsigned)
            item prototype 3
            Code:
            name = MX block Version {#SNMPINDEX}
            key = cctm.mxTable.mxVersion[{#SNMPINDEX}]
            formula = concat(last(/CCTM ES-100/cctm.mxTable.mxVersionMajor[{#SNMPINDEX}]), ".",
                                          last(/CCTM ES-100/cctm.mxTable.mxVersionMinor[{#SNMPINDEX}]))
            type_of_information = character​
            Сразу вопрос - можно ли calculated items создавать как item prototype in LLD?

            первые 2 item'a и создаются и получают значения

            Click image for larger version

Name:	mx_version.png
Views:	107
Size:	6.9 KB
ID:	458331

            а вот вычисляемый, последний элемент выдает ошибку

            Cannot evaluate function: item "/CCTM ES-100/cctm.mxTable.mxVersionMajor[1]" does not exist at "last(/CCTM ES-100/cctm.mxTable.mxVersionMajor[1]), ".", last(/CCTM ES-100/cctm.mxTable.mxVersionMinor[1]))".

            Что я делаю не так, где ошибаюсь?

            Comment

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

              #6
              А в вашем случае "CCTM ES-100" (с пробелом, но без кавычек) - это имя хоста или имя шаблона?
              На том хосте элемент данных с таким именем реально создался?

              Если оно относится к текущему хосту, то я бы имя из формулы вообще бы убрал:
              Code:
              concat(last(//cctm.mxTable.mxVersionMajor[{#SNMPINDEX}]),".",last(//cctm.mxTable.mxVersionMinor[{#SNMPINDEX}]))​
              Только когда будете редактировать прототипы в правилах LLD, не забудьте, что проверять надо не сразу:
              • сначала подождать минуту, чтобы сервер обновил свой кэш конфигурации;
              • затем дождаться очередной итерации работы правила LLD (ну тут для SNMP-правил можно дёрнуть вручную через "Execute now");
              • убедиться, что правило отработало и в порождённых им вычисляемых элементах данных формула реально поменялась;
              • дождаться очередного цикла обновления этих элементов данных (не помню, можно ли их принудительно выполнить через "Execute now" для вычисляемых элементов данных - наверное, тоже можно).

              Comment

              • Astar
                Member
                • Jul 2022
                • 36

                #7
                Kos спасибо! "CCTM ES-100" - это имя шаблона, я смотрел стандартные шаблоны, которые идут с Zabbix там в формулах прямо так, с пробелами. Для начала я изменил имя шаблона на "CCTM_ES-100" и поменял на такое в формулах. Все равно давал ошибку. поменял на //cctm.......... и наконец заработало!
                осталось проэкспериментировать могу ли я элементы cctm.mxTable.mxVersionMajor[{#SNMPINDEX}]) и cctm.mxTable.mxVersionMinor[{#SNMPINDEX}] "дискаверить" но не создавать и обращаться к ним в формуле третьего элемента, потому что отдельно они мне не нужны по большому счету. но тут уже, точно зная что формула рабочая я проверю!

                Comment

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

                  #8
                  Originally posted by Astar
                  могу ли я элементы cctm.mxTable.mxVersionMajor[{#SNMPINDEX}]) и cctm.mxTable.mxVersionMinor[{#SNMPINDEX}] "дискаверить" но не создавать и обращаться к ним в формуле третьего элемента, потому что отдельно они мне не нужны по большому счету.
                  Нет, так не выйдет. Вычисляемый элемент данных при своей работе берёт данные из истории других элементов данных, куда они должны сначала каким-то образом попасть.
                  Но можно эту историю сократить до минимума (т.е. сделать чуть больше, чем интервал опроса, заданный для вычисляемого элемента данных).

                  Comment

                  • Astar
                    Member
                    • Jul 2022
                    • 36

                    #9
                    Originally posted by Kos
                    Нет, так не выйдет. Вычисляемый элемент данных при своей работе берёт данные из истории других элементов данных, куда они должны сначала каким-то образом попасть.
                    Но можно эту историю сократить до минимума (т.е. сделать чуть больше, чем интервал опроса, заданный для вычисляемого элемента данных).
                    да, это я уже проверил и убедился. А еще увидел что запись в шаблоне //some_formula при создании хоста превращается в /имя_хоста/some_formula

                    Comment

                    Working...