Ad Widget

Collapse

zabbix,LLD,Json

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Snake20
    Junior Member
    • Apr 2018
    • 14

    #1

    zabbix,LLD,Json

    2.PNG Добрый день.Прошу помощи в решении проблемы(бьюсь над проблемой не первый день).Хочу сделать Discovery rule которое бы обнаруживало имя приложения из скрипта PowerShell (который формирует результат в формате json).На основе этого Discovery rule создать Item prototype в котором было бы название этого приложение и в значении (last data этого Item) процессорное время.И на основе этого ITEM сделать тригер. Как пример это как автообноружение интерфейсов на сетевых устройствах по SNMP и снятие с них значений (скорость,статус и тд)
    Итак .Есть скрипт.на PS
    '{ "data": ' + (Get-WMIObject Win32_Process | Group-Object -Property Caption|select @{Label="NAME" ; E={($_.Name)}}, @{Label="WORKINGSET"; Expression={($_.group.WorkingSetSize|Measure-Object -Sum).Sum}} |Sort-Object '#WorkingSet' -Descending |select -First 30|ConvertTo-Json) + '}'

    Есть агент забикса на винде который запускает этот скрипт и отправляет результат на сервак забикса

    UserParameter=test,powershell -NoProfile -ExecutionPolicy Bypass -File C:\distr\zabbix\conf\ps1.ps1

    1.Создал ITEM который собирает в себя результат скрипта в json.
    2.Далее создаю зависимый Discovery rule
    3.Далее пытаюсь создать Item prototype
    4.В Item prototype задаю препроцессинг
    5.Появляется такая ошибка.
    Attached Files
  • Snake20
    Junior Member
    • Apr 2018
    • 14

    #2
    Вывод JSON
    Attached Files

    Comment

    • Snake20
      Junior Member
      • Apr 2018
      • 14

      #3
      Надеюсь на Вашу помощь и наставление.

      Comment

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

        #4
        Какая версия сервера Zabbix?

        Comment

        • Snake20
          Junior Member
          • Apr 2018
          • 14

          #5
          Версия 4.4

          Comment

          • Hamardaban
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • May 2019
            • 2713

            #6
            Мне кажется, что нужно убрать точки после $ в определении припроцессинга.

            Comment


            • Snake20
              Snake20 commented
              Editing a comment
              Если его убрать,то не будет проходить Тест.
          • Hamardaban
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • May 2019
            • 2713

            #7
            Т.е. тест всё таки проходит? С показанным json и опредленным {#NAME} ?
            Нужно взять {#NAME} в одинарные кавычки в определении pproc - у меня так срабатывает с пользовательскими макросами.
            А если их убрать - именно такое сообщение об ошибке.
            Last edited by Hamardaban; 17-12-2019, 14:09.

            Comment

            • Snake20
              Junior Member
              • Apr 2018
              • 14

              #8
              Вот скрины, где тест проходит
              Attached Files

              Comment


              • Hamardaban
                Hamardaban commented
                Editing a comment
                решение в предыдущем посте помогло?
            • Snake20
              Junior Member
              • Apr 2018
              • 14

              #9
              $..[?(@.NAME =="{#NAME}")].WORKINGSET.first()
              Так написать?

              Comment

              • Hamardaban
                Senior Member
                Zabbix Certified SpecialistZabbix Certified Professional
                • May 2019
                • 2713

                #10
                написал же : в одинарные кавычки

                Comment

                • Snake20
                  Junior Member
                  • Apr 2018
                  • 14

                  #11
                  Originally posted by Hamardaban
                  написал же : в одинарные кавычки
                  Простите,опечатался.Itemы создались,но в Last Data ошибки.
                  Attached Files

                  Comment

                  • Hamardaban
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • May 2019
                    • 2713

                    #12
                    Естественно ошибка! в фильтре должно быть имя поля в одиночных кавычках `bla-bla.exe` - а у вас `[“bla-bla.exe”]`. смотрите что в макросе {#NAME}

                    Comment


                    • Snake20
                      Snake20 commented
                      Editing a comment
                      Это я уже увидел.Единственное место где задается {#NAME} - это в Discovery rule(LLD macros(второй скрин их первого поста)).Не совсем понимаю с чего вдруг он добавляет скобки.
                      Last edited by Snake20; 18-12-2019, 10:09. Reason: add

                    • Mugz
                      Mugz commented
                      Editing a comment
                      Это вот такая вот фича Заббикса. Если Макрос в LLD задавать явно - то он добавляет ["значение"]. В случае с именем айтема его можно поправить через {{#LLDMACRO}.regsub(pattern, output)}, но в LLD и в JSONPath такая конструкция уже не работает. Забавно, но если в при задании значения в строке убрать одну точку - то обрабатывается корректно.

                      {#NAME} = $..NAME (даст ["значение"])
                      {#NAME} = $.NAME (даст значение)
                      Last edited by Mugz; 22-04-2020, 22:12.
                  • Hamardaban
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • May 2019
                    • 2713

                    #13
                    попробуй не создавать LLD макрос явно (убрать), а просто используй {#NAME} где нужно.

                    Comment


                    • Snake20
                      Snake20 commented
                      Editing a comment
                      Тогда надо что бы в скрипте вместо "NAME": "GameBarFT.exe" было {#NAME}: "GameBarFT.exe", Я же верно понимаю?
                  • Hamardaban
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • May 2019
                    • 2713

                    #14
                    Да, верно... извиняюсь - я как-то это упустил... ( В практике только такие json для LLD и использую - вот и путаюсь) И в случае использования {#NAME} в json поплывет фильтр...

                    Comment


                    • Snake20
                      Snake20 commented
                      Editing a comment
                      А как тогда фильтр будет выглядеть?
                  • Snake20
                    Junior Member
                    • Apr 2018
                    • 14

                    #15
                    Hamardaban А можете подсказать как будет выглядеть фильтр,если я в скрипте буду теперь использовать такой вариант "{#NAME}": "System Idle Process",
                    "WORKINGSET": 8192

                    Comment

                    Working...