Ad Widget

Collapse

Поиск файлов с помощью Discovery rules

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Shiro
    Junior Member
    • Oct 2023
    • 19

    #1

    Поиск файлов с помощью Discovery rules

    Добрый день.

    По статье https://www.zabbix.com/documentation...ar_expressions пробовал сделать следующее:
    1. Создать Discovery rules
    2. В нём создать Item prototypes который будет искать файлы старше определённого времени.

    /etc/zabbix/zabbix_agent2.d/test.conf
    UserParameter=vfs.getfile[*],sudo find /home -maxdepth 2 -type f

    Но проблема идёт на стадии preprocess

    Правила:
    (?:.(?!//))+/ ["{#PATH}":"\0"]
    Click image for larger version

Name:	image.png
Views:	102
Size:	19.2 KB
ID:	481109




    Выдаёт то что нужно:
    /home/ansible/l
    /home/ansible/r.yml
    /home/ansible/bond0.yml
    /home/ansible/grep_information​

    Click image for larger version

Name:	image.png
Views:	99
Size:	51.1 KB
ID:	481110

    Но идёт ошибка
    Click image for larger version

Name:	image.png
Views:	160
Size:	16.6 KB
ID:	481108

    Invalid discovery rule value: cannot parse as a valid JSON object: invalid array format, expected closing character ']' at: ':"/home/ansible/"]'

    [root@testpbx zabbix_agent2.d]# sudo -u zabbix zabbix_agent2 -t vfs.getfile
    vfs.getfile [s|/home/ansible/l
    /home/ansible/r.yml
    /home/ansible/bond0.yml
    /home/ansible/grep_information]

    Понимаю что в ["{#PATH}":"\0"] есть ошибка
    если делаю так "{#PATH}":"\0" то ругается на
    Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: '/

    Подскажите, пожалуйста, что можно сделать? В какую сторону смотреть? Не используя перл или баш
    Last edited by Shiro; 20-03-2024, 14:37.
  • Answer selected by Shiro at 20-03-2024, 17:36.
    Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    А зачем все эти юзерпараметры и регулярки, когда уже придуман vfs.dir.get?

    Comment

    • Shiro
      Junior Member
      • Oct 2023
      • 19

      #2
      Если исправить на {"#PATH":["\0"]} то будет Cannot find the "data" array in the received JSON object.

      Comment

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

        #3
        Для работы правила LLD должна быть корректная текстовая строка, содержащая JSON. Этот JSON, в свою очередь, должен содержать массив неких объектов, желательно с LLD-макросами (впрочем, последнее в текущих версиях Zabbix уже не является обязательным - подстановку LLD-макросов можно делать в настройках самого правила на отдельной вкладке).

        Результат выполнения команды "sudo find ..." не является JSON-ом и в качестве входного значения для правила LLD не годится.
        Теоретически, его можно привести к нужному виду с помощью предобработки (что вы и пытаетесь делать), только вот способ предобработки для этого выбран неудачный.
        Дело в том, что шаг предобработки "Регулярное выражение" предназначен немного для других целей и имеет слегка другую логику, которая для вашей задачи не подходит. Он предназначен для того, чтобы слегка "подрихтовать" формат исходной строки - например, выдернуть из неё отдельный фрагмент или поменять местами какие-то части (например, номер числа и месяца в дате). Этот шаг предобработки имеет две неочевидных особенности, на которых не особо акцентируется внимание в документации:
        • подразумевается, что входное значение всегда соответствует регулярному выражению. Если это не так, возникает ошибка (и элемент данных переходит в неподдерживаемое состояние);
        • замена производится только один раз (на первое совпадение); т.е. если нужно сделать глобальную замену (заменить все совпадающие подстроки), то этот вариант не работает.

        Однако, это всё довольно просто делается с помощью предобработки JavaScript.

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #4
          А зачем все эти юзерпараметры и регулярки, когда уже придуман vfs.dir.get?

          Comment

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

            #5
            Originally posted by Semiadmin
            А зачем все эти юзерпараметры и регулярки, когда уже придуман vfs.dir.get?
            Возможно, у автора темы какая-то древняя версия сервера Zabbix; по крайней мере - в "лучших" традициях этого форума он её скрывает.

            Comment

            • Semiadmin
              Senior Member
              • Oct 2014
              • 1625

              #6
              Originally posted by Kos
              Возможно, у автора темы какая-то древняя версия сервера Zabbix; по крайней мере - в "лучших" традициях этого форума он её скрывает.
              Его ссылка на "статью" ведет на доку по 6.4. А вообще - агент 6.0 подойдет к любому серверу не ниже 4.2

              Comment

              • Shiro
                Junior Member
                • Oct 2023
                • 19

                #7
                Спасибо большое, проблема решена - vfs.dir.get.
                Версия 6.4

                Comment

                Working...