Ad Widget

Collapse

правило обнаружения не работает

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • djin59
    Member
    • Jul 2023
    • 86

    #1

    правило обнаружения не работает

    Уважаемые коллеги подскажите , а то я с ума сойду уже...
    zabbix 7.0.3
    прописал в конфиге агента UserParameter=subfolder.sizes[*],"C:\GR\sz3.exe" "$1" (вернет json)
    создаю шаблон
    основной элемента данных
    Массив JSON subfolder size
    возвращает плоский json:
    [
    {
    "Folder": "C:\\zabbix\\111111",
    "SizeMB": 2.14
    },
    {
    "Folder": "C:\\zabbix\\123",
    "SizeMB": 32.62
    },
    {
    "Folder": "C:\\zabbix\\bin",
    "SizeMB": 9.39
    },
    {
    "Folder": "C:\\zabbix\\conf",
    "SizeMB": 1.1
    },
    {
    "Folder": "C:\\zabbix\\tmp",
    "SizeMB": 0.01
    }
    ]

    Click image for larger version  Name:	image.png Views:	1 Size:	35.4 KB ID:	494507
    т.е. на этом этапе все нормально дальше делается правило обнаружения

    Click image for larger version  Name:	image.png Views:	1 Size:	27.2 KB ID:	494508 Click image for larger version  Name:	image.png Views:	1 Size:	5.5 KB ID:	494509
    создаю прототип элемента данных
    Click image for larger version  Name:	image.png Views:	1 Size:	31.3 KB ID:	494510
    Click image for larger version  Name:	image.png Views:	1 Size:	18.1 KB ID:	494511


    и на выходе не получаю значения: подпапка размер

    подскажите что не так??​​



    Last edited by djin59; 19-11-2024, 12:44.
  • Answer selected by djin59 at 12-02-2025, 07:04.
    Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    Я когда-то отвечал по другому поводу:
    при работе правила обнаружения (и, в частности, подстановке макросов) указанный JSONPath применяется не ко всему исходному JSON-у, а к каждой строке по отдельности (т.е. к отдельному элементу его массива).
    Т.е. в настройках правила обнаружения на вкладке "LLD макросы" достаточно указать более простое выражение:
    {#FOLDER} $.Folder
    Ну и в прототипе элемента данных можно обойтись одним шагом предобработки, добавив в конце JSONPath-выражения функцию "first()":
    Code:
    $.[?(@.Folder=='{#FOLDER}')].SizeMB.first()
    Last edited by Kos; 19-11-2024, 13:55.

    Comment

    • djin59
      Member
      • Jul 2023
      • 86

      #2
      Click image for larger version

Name:	image.png
Views:	120
Size:	8.0 KB
ID:	494513
      нужно что-то типо этого

      Comment

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

        #3
        Я когда-то отвечал по другому поводу:
        при работе правила обнаружения (и, в частности, подстановке макросов) указанный JSONPath применяется не ко всему исходному JSON-у, а к каждой строке по отдельности (т.е. к отдельному элементу его массива).
        Т.е. в настройках правила обнаружения на вкладке "LLD макросы" достаточно указать более простое выражение:
        {#FOLDER} $.Folder
        Ну и в прототипе элемента данных можно обойтись одним шагом предобработки, добавив в конце JSONPath-выражения функцию "first()":
        Code:
        $.[?(@.Folder=='{#FOLDER}')].SizeMB.first()
        Last edited by Kos; 19-11-2024, 13:55.

        Comment

        • djin59
          Member
          • Jul 2023
          • 86

          #4
          спасибо! {#FOLDER}$.Folder вот уж не подумал бы: "к каждой строке по отдельности "

          Comment

          • Alex_UUU
            Senior Member
            • Dec 2018
            • 541

            #5
            Originally posted by djin59
            спасибо! {#FOLDER}$.Folder вот уж не подумал бы: "к каждой строке по отдельности "
            Нормально, в доках даже пример этот есть

            Да, и основной элемент можно поставить "не хранить значения", если все отлажено. Ибо все его значения уже разберут зависимые, а основной, как правило, тяжелый.

            Comment


            • djin59
              djin59 commented
              Editing a comment
              да в доках видел пример просто не акцентировал внимание что фильтр должен обрабатывать строку в отдельности а не весь массив JSON, по основному элементу история 3 дня выставлена
          • djin59
            Member
            • Jul 2023
            • 86

            #6
            вот скрин-шот основного элемента
            Click image for larger version

Name:	image.png
Views:	96
Size:	29.3 KB
ID:	494931

            Comment

            • Alex_UUU
              Senior Member
              • Dec 2018
              • 541

              #7
              Мвкрос {$FOLDERFORSCAN} определен? Хотя если бы его не было, то json бы не получился.
              Чтобы разобраться, я бы пока просто создал прототипы ЭД без значений используя LLD макросы.
              Если создались - то тогда бы уже вставлял предобработку, тестируя на полученных данных.

              Comment

              • djin59
                Member
                • Jul 2023
                • 86

                #8
                Если можно подскажите что поменяется в случае если JSON будет не плоским? (LLD я правильно понимаю остается прежним?)
                {
                "C:\\zabbix": [
                {
                "Folder": "C:\\zabbix\\111111",
                "SizeMB": 2.14
                },
                {
                "Folder": "C:\\zabbix\\123",
                "SizeMB": 32.62
                },
                {
                "Folder": "C:\\zabbix\\bin",
                "SizeMB": 9.39
                },
                {
                "Folder": "C:\\zabbix\\conf",
                "SizeMB": 1.1
                },
                {
                "Folder": "C:\\zabbix\\tmp",
                "SizeMB": 0.01
                }
                ],
                "C:\\tet tet": [
                {
                "Folder": "C:\\tet tet\\1",
                "SizeMB": 24.05
                }
                ],
                "C:\\GR": []
                }

                Comment

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

                  #9
                  Originally posted by djin59
                  Если можно подскажите что поменяется в случае если JSON будет не плоским? (LLD я правильно понимаю остается прежним?)
                  Очевидно, поменяется то, что он больше не будет плоским. А что именно вы спросить-то хотели на самом деле?

                  LLD работает, анализируя JSON, содержащий список (массив) объектов. В вашем новом JSON-е таких массивов несколько. Вот и решайте, что с ними делать дальше - либо обрабатывать какой-то один из них, либо делать несколько правил LLD (по одному на каждый массив), либо преобразовывать (например, через JavaScript-предобработку) ваш JSON к такому виду, который будет содержать один массив.​​

                  Comment

                  Working...