Ad Widget

Collapse

Вычисляемый прототип в LLD

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • fractal90
    Senior Member
    • Jun 2019
    • 177

    #1

    Вычисляемый прототип в LLD

    Уважаемые гуру zabbix подскажите почему может не работать вычисляемый элемент данных, я сделал lld правило, в нем два элемента FREE и USED, по ним все находится, далее я подумал, а почему бы не сделать остаток свободной памяти в %, подумал, сделал вычисляемый элемент, но он что то не отрабатывает, пишет "Cannot create item: item with the same key "FreeMemPercent" already exists" хотя он точно нигде не используется больше
    Attached Files
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Правило дискаверинга возвращает сформатированный в виде JSON-а список чего-то.
    Далее на основании прототипов по этому списку создаются соответствующие объекты - как правило, элементы данных (айтемы) и триггеры.
    Для каждого элемента списка создаётся свой набор объектов (в частности, айтемов), поэтому в прототипах айтемов в ключах всегда присутствуют LLD-макросы, при помощи которых обеспечивается уникальность создаваемых объектов.
    В прототипе же вычисляемого элемента данных у вас используется один фиксированный ключ безо всяких LLD-макросов, что при отрабатывании механизма LLD приводит к созданию из этого прототипа нескольких элементов данных с одинаковым ключом - собственно, на это он и ругается.
    В данном конкретном случае решение простое: добавьте в ключ прототипа вычисляемого элемента данных тот же LLD-макрос, что и для остальных прототипов:
    Code:
    FreeMemPercent[{#SNMPINDEX}]

    Comment

    • fractal90
      Senior Member
      • Jun 2019
      • 177

      #3
      Originally posted by Kos
      Правило дискаверинга возвращает сформатированный в виде JSON-а список чего-то.
      Далее на основании прототипов по этому списку создаются соответствующие объекты - как правило, элементы данных (айтемы) и триггеры.
      Для каждого элемента списка создаётся свой набор объектов (в частности, айтемов), поэтому в прототипах айтемов в ключах всегда присутствуют LLD-макросы, при помощи которых обеспечивается уникальность создаваемых объектов.
      В прототипе же вычисляемого элемента данных у вас используется один фиксированный ключ безо всяких LLD-макросов, что при отрабатывании механизма LLD приводит к созданию из этого прототипа нескольких элементов данных с одинаковым ключом - собственно, на это он и ругается.
      В данном конкретном случае решение простое: добавьте в ключ прототипа вычисляемого элемента данных тот же LLD-макрос, что и для остальных прототипов:
      Code:
      FreeMemPercent[{#SNMPINDEX}]
      точно, спасибо!

      Comment

      • fractal90
        Senior Member
        • Jun 2019
        • 177

        #4
        Originally posted by Kos
        Правило дискаверинга возвращает сформатированный в виде JSON-а список чего-то.
        Далее на основании прототипов по этому списку создаются соответствующие объекты - как правило, элементы данных (айтемы) и триггеры.
        Для каждого элемента списка создаётся свой набор объектов (в частности, айтемов), поэтому в прототипах айтемов в ключах всегда присутствуют LLD-макросы, при помощи которых обеспечивается уникальность создаваемых объектов.
        В прототипе же вычисляемого элемента данных у вас используется один фиксированный ключ безо всяких LLD-макросов, что при отрабатывании механизма LLD приводит к созданию из этого прототипа нескольких элементов данных с одинаковым ключом - собственно, на это он и ругается.
        В данном конкретном случае решение простое: добавьте в ключ прототипа вычисляемого элемента данных тот же LLD-макрос, что и для остальных прототипов:
        Code:
        FreeMemPercent[{#SNMPINDEX}]
        а в вычисляемом элементе нельзя сделать суммирование? допустим я обнаружил 20 элементов с snmpvalue=1 и snmpvalue=0, я бы хотел посчитать количество элементов с snmpvalue=1

        Comment

        Working...