Ad Widget

Collapse

Как передавать текущую дату в определенном формате в параметр ключа элемента данных?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Dron.kh
    Junior Member
    • Apr 2021
    • 7

    #1

    Как передавать текущую дату в определенном формате в параметр ключа элемента данных?

    Добрый день. Zabbix 5.2. Мониторинг windows/linux через активные агенты или пассивные агенты через прокси. Есть задача отслеживать размер папки. Трудности заключаются в том, что каждый день нужно отслеживать разную папку. Например сегодня D:\backup\2021-04-23, завтра D:\backup\2021-04-24 и т.д. Я создаю элемент данных и без проблем получаю размер папки используя ключ vfs.dir.size[D:\backup\2021-04-23]. Но как мне в параметре ключа в пути к папке заменить дату на ее динамическое значение, что бы подставлялась сегодняшняя дата в формате гггг-мм-дд?

    Я пробовал использовать макрос {DATE}, который вроде как должен возвращать дату в формате гггг.мм.дд и с помощью функции regsub вернуть дату в нужном мне формате с помощью такой вот конструкции {DATE}.regsub(^\d{4}\.\d{2}\.\d{2}$, \1-\2-\3), но она не работает ни в формате макроса, ни в самом параметре ключа vfs.dir.size[D:\backup\{{DATE}.regsub(^\d{4}\.\d{2}\.\d{2}$, \1-\2-\3)}] (хотя {DATE} должен работать только в оповещениях, так что я изначально не был уверен в этом подходе).

    Конечно я могу использовать UserParameter или скрипты, но хотелось бы избежать лишних действий если это возможно.
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    вариант с подстановкой даты в имя каталога думаю не сработает...
    можно попробовать мониторить родительский каталог и в эд вторым параметром с регексом учитывать только нужный каталог.
    или более правильно использовать lld и «обнаруживать» каждый день нужный каталог и создавать эд из прототипа.

    Comment

    • Dron.kh
      Junior Member
      • Apr 2021
      • 7

      #3
      Originally posted by Hamardaban
      можно попробовать мониторить родительский каталог и в эд вторым параметром с регексом учитывать только нужный каталог.
      Тоже думал об этом. Но, опять же, в родительском каталоге все папки имеют одинаковый формат в виде описанной выше даты. Под обычную регулярку "четыре числа тире два числа тире две числа" они попадут все. В итоге нужна регулярка в точности равная текущей дате... и мы снова возвращаемся к необходимости ее получения.


      Originally posted by Hamardaban
      или более правильно использовать lld и «обнаруживать» каждый день нужный каталог и создавать эд из прототипа.
      Вот это уже более свежий подход. А можно поподробнее?



      Comment

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

        #4
        концепция простая - делаете правило lld и в нем любым доступным способом (тип - скрипт или припроцессинг - js) создаете json
        [{"#DIRNAME":"D:\backup\yyyy-mm-dd"}] где yyyy mm dd соответственно дата. в этом правиле делаете прототип эд с ключем vfs.dir.size[{#DIRNAME}] и именем содержащим {#DIRNAME}. параметры как вам больше нравиться.
        настраиваете правило чтобы срабатывало когда нужно. Например сработав в 0ч1м правило создаст элемент данных который будет мониторится до завтра. потом он «потеряется» т.е. не будет более обнаруживаться но будет сохранятся в течении заданного времени.
        подробности - в документации https://www.zabbix.com/documentation...evel_discovery
        Last edited by Hamardaban; 23-04-2021, 18:43.

        Comment

        • Dron.kh
          Junior Member
          • Apr 2021
          • 7

          #5
          А что писать в ключе lld скрипта?

          Comment


          • Hamardaban
            Hamardaban commented
            Editing a comment
            а это зависит от того как сделаете lld. если тип скрипт - то это одно.
            если какой-то другой и припроцессинг - то другое.
            главное - поймите суть! остальное - в документации
        • Dron.kh
          Junior Member
          • Apr 2021
          • 7

          #6
          Ну как я понял сначала я создаю шаблон, в нем - правило обнаружения с типом "скрипт" c указанным выше скриптом JS и прототип элементов данных типа "zabbix agent (активный)" с оговоренными Вами именем и ключом. Ну и потом цепляю шаблон к узлу.

          Но я в упор не понимаю что писать в ключе скрипта...

          К тому же как в строке JS брать дату? [{"#DIRNAME":"D:\backup"new Date().format('Y-m-d');}] или типа того?

          Comment

          Working...