Ad Widget

Collapse

Разный JSONPath Preprocessing для discovered items

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Potap
    Junior Member
    • Dec 2024
    • 7

    #1

    Разный JSONPath Preprocessing для discovered items

    Добрый день!
    Есть JSON на входе такого вида: [{"counter": "Packets", "value": "1234"}, {"counter": "Connections", "value": "5"}]
    Счетчик Packets накопительный, а счетчик Connections ненакопительный
    items создаются автоматически с помощью LLD и макроса {#COUNTER}
    Правила Preprocessing:
    1. JSONPath $.[?(@.counter == '{#COUNTER}')].value.first()
    2. Change per second
    Если второе правило добавить, то оба счетчика становятся накопительными, считается разница между значениями в секунду. А если не добавить, то оба счетчика будут ненакопительными. Как сделать чтобы оба работали?
  • Answer selected by Potap at 20-01-2025, 15:28.
    Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    А JSON на входе состоит только из двух элементов? Если да, то, на мой взгляд, тут не смысла городить LLD - проще создать три айтема (основной и два зависимых от него) вручную. Иначе (например, десятки элементов, и из них какие-то - накопительные счётчики, а какие-то - нет) можно использовать LLD overrides (замещения, ссылка): создаёте один прототип для накопительных счётчиков, другой - для обычных (только у них имена должны отличаться), с соответствующими шагами предобработки для каждого из них; при этом один из них с отмеченным флажком "Discover" (Обнаружение), а другой - нет. А в настройках правила LLD создаёте замещение: если макрос {#COUNTER} соответствует такому-то регулярному выражению, то айтем, содержащий в своём имени такое-то ключевое слово, дискаверить, а не содержащий - наоборот, не дискаверить.

    Comment

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

      #2
      А JSON на входе состоит только из двух элементов? Если да, то, на мой взгляд, тут не смысла городить LLD - проще создать три айтема (основной и два зависимых от него) вручную. Иначе (например, десятки элементов, и из них какие-то - накопительные счётчики, а какие-то - нет) можно использовать LLD overrides (замещения, ссылка): создаёте один прототип для накопительных счётчиков, другой - для обычных (только у них имена должны отличаться), с соответствующими шагами предобработки для каждого из них; при этом один из них с отмеченным флажком "Discover" (Обнаружение), а другой - нет. А в настройках правила LLD создаёте замещение: если макрос {#COUNTER} соответствует такому-то регулярному выражению, то айтем, содержащий в своём имени такое-то ключевое слово, дискаверить, а не содержащий - наоборот, не дискаверить.

      Comment

      • Potap
        Junior Member
        • Dec 2024
        • 7

        #3
        Сделал как Вы написали, все работает именно так, как и требовалось. Спасибо огромное за пояснения, очень помогли и сэкономили кучу времени!

        Comment

        Working...