Ad Widget

Collapse

Динамическое правило с данными из json LLD

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • flexxus
    Junior Member
    • Oct 2023
    • 3

    #1

    Динамическое правило с данными из json LLD

    Добрый день.
    Прошу помощи в настройке динамического правила.

    Задача: на удаленном сервере я получаю файл json следующего содержания (на самом деле в нем 130 строк, а может и больше. это динамический файл)
    Code:
    [
    {
    "name": "upload_seo",
    "size": 0
    },
    {
    "name": "auth_sms",
    "size": 0
    },
    {
    "name": "elasticsearch_add_offer",
    "size": 0
    }
    ]
    Мне нужно в Zabbix7 получить графики, где name из json это название графика, а size его это значение с опросом каждый 30 секунд, например.

    Я сделал следующее:
    На самом сервере в доп конфиге прописана команда получения для json как UserParameter=queues.size[*],php8.3.........
    Discovery rules - create discovery rule (здесь я получаю json)
    Name - Queue
    Type - zabbix agent
    Key - queues.size
    LLD Macros: {#QUEUE.PHP}=$..name
    {#QUEUE.SIZE}=$..size

    Далее создал Item Prototype
    Name - Queue - {#QUEUE.PHP}
    Type - zabbix agent
    Key - queues.size[{#QUEUE.SIZE}]
    Type of information - Numeric (unsigned)
    Update - 30s

    В итоге работает почему-то совсем не так как предполагается. Создается айтемы с корректными названиями, но кривыми ключами, и данные не собираются.
    Item Queue - ["upload_seo"], Key queues.size["[0]"]
    В latest data следующая информация
    Click image for larger version

Name:	Снимок экрана 2025-03-19 в 11.18.15.png
Views:	88
Size:	82.0 KB
ID:	500764

    Помогите, пожалуйста, правильно построить item prototype, чтобы корректно собирались данные
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Посмотрите, пожалуйста, эту тему (ссылка), я там отвечал на очень похожий вопрос.

    Comment

    • flexxus
      Junior Member
      • Oct 2023
      • 3

      #3
      раскурил.
      Discovery rule правильное
      В Item Prototype:
      key должен быть queues.size[{#QUEUE.PHP}]
      и три препроцессинга
      Jsonpath - $.[?(@.name=='{#QUEUE.PHP}')].size
      trim left - [
      trim right - ]
      (тримы - потому что почему то значение отдавалось в квадратных скобках. может это можно сразу в джейсонпасе сделать, но я у не умею)

      Click image for larger version

Name:	Снимок экрана 2025-03-20 в 07.42.28.png
Views:	54
Size:	43.0 KB
ID:	500804

      Comment

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

        #4
        Originally posted by flexxus
        (тримы - потому что почему то значение отдавалось в квадратных скобках. может это можно сразу в джейсонпасе сделать, но я у не умею)
        Не только можно, но и нужно:
        Code:
        $.[?(@.name=='{#QUEUE.PHP}')].size.first()

        Comment

        Working...