Ad Widget

Collapse

Правило обнаружения vfs.dir.get

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • maslonax
    Junior Member
    • Nov 2022
    • 26

    #1

    Правило обнаружения vfs.dir.get

    Всем привет, пытаюсь сделать шаблон который ищет определенные папки на диске через vfs.dir.get, и после к найденным папкам применяется зависимый элемент vfs.dir.count.
    Застопорился после получения значений через vfs.dir.get, не могу понять как каждую папку вывести отдельно. Может кто подсказать?
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Этот ключ в основном используется в LLD
    см https://www.zabbix.com/documentation...ed_filesystems
    В правиле создаете прототип ЭД с vfs.dir.count

    Comment

    • maslonax
      Junior Member
      • Nov 2022
      • 26

      #3
      Originally posted by Hamardaban
      Этот ключ в основном используется в LLD
      см https://www.zabbix.com/documentation...ed_filesystems
      В правиле создаете прототип ЭД с vfs.dir.count
      спасибо, все получилось

      Comment

      • maslonax
        Junior Member
        • Nov 2022
        • 26

        #4
        возникла еще проблемка как путь если присутствуют папки на русском языке? к примеру vfs.dir.get[G:\Dir\папка1\папка_тест2] ?

        Comment


        • Hamardaban
          Hamardaban commented
          Editing a comment
          путь - в двойные кавычки
      • maslonax
        Junior Member
        • Nov 2022
        • 26

        #5
        vfs.dir.get["G:\Dir\папка1\папка_тест2"] так? уже пробовал, результат тот же, ругается что не существует такого каталога. Пробовал на заббиксе 6.0 и 6.2

        Comment

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

          #6
          У меня сервер 6.2.0 и агент 6.2.4 - работает.
          Для дальнейших "раскопок" увеличивайте уровень логирования (может чего выпадет интересного), обновляйтесь до последнего и в техподдержку.

          Comment

          • maslonax
            Junior Member
            • Nov 2022
            • 26

            #7
            Originally posted by Hamardaban
            У меня сервер 6.2.0 и агент 6.2.4 - работает.
            Для дальнейших "раскопок" увеличивайте уровень логирования (может чего выпадет интересного), обновляйтесь до последнего и в техподдержку.
            Можете скрин показать как сделано? у меня на данный момент такая ошибка с ключом vfs.dir.get[{$PATCH},,,file,,-1,,,,,]

            Click image for larger version

Name:	image.png
Views:	458
Size:	30.8 KB
ID:	456401
            Attached Files

            Comment

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

              #8
              Originally posted by maslonax
              у меня на данный момент такая ошибка с ключом vfs.dir.get[{$PATCH},,,file,,-1,,,,,]
              Мне кажется, что кавычки нужно перенести из значения макроса в ключ:

              Code:
              vfs.dir.get["{$PATCH}",,,file,,-1,,,,,]
              Code:
              {$PATCH}=G:\DFS\ДИС\Розница_Логи

              Comment

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

                #9
                Вот как догадаться что в ключе - макрос? :-)
                кстати попробовал с макросом - в обоих вариантах не работает.

                Comment

                • maslonax
                  Junior Member
                  • Nov 2022
                  • 26

                  #10
                  Originally posted by Kos
                  Мне кажется, что кавычки нужно перенести из значения макроса в ключ:

                  Code:
                  vfs.dir.get["{$PATCH}",,,file,,-1,,,,,]
                  Code:
                  {$PATCH}=G:\DFS\ДИС\Розница_Логи
                  попробовал и макрос заключить в ковычки и без макроса vfs.dir.get["G:\DFS\ДИС\Розница_Логи",,,file,,0,,,,,] - результат тот же "Cannot obtain directory information: [2] No such file or directory​". Если не использовать в пути русские буквы работает. если сделать vfs.dir.get[G:\DFS\,,,,,-1,,,,,] json возвращает путь к папке с русскими буквами, но проблема в том что если делать нужную глубину слишком много лишней инфы тянет и в основном по time out не проходит. А переделать в другую папку не дают много стороннего затрагивает=(

                  Comment

                  • Victor Sklyarov
                    Senior Member
                    • Apr 2016
                    • 184

                    #11
                    Почему бы не использовать UserParameter? Вот пример. На компьютере несколько дисков. Каталог логов некой прикладной программы может быть на любом диске. Мало того, может быть ситуация, когда диск заполнился и каталог переместили на другой диск. Простенький скрипт находит диск на котором расположен файл лога с текущей датой, формирует JSON и отправляет его на сервер. Конечно, приходится положить этот скрипт на целевой компьютер, но решение очень гибкое, всем занимается агент. LLD может выполнять хоть пассивный, хоть активный агент. Можно передать в скрип, имя файла или каталога который вы ищете, можно выполнитm DIR /S и найти все файлы или каталоги на всё глубину просмотра по вашей маске в команде FINDSTR
                    @ echo off
                    SetLocal EnableDelayedExpansion
                    set find=0
                    for /F "usebackq tokens=1,2 delims= " %%i in (`WMIC LogicalDisk Get Name^,DriveType ^|findstr /B "3"`) do (
                    set dirlog=%%j\log\Log.txt
                    set disk=%%j
                    for /f "usebackq tokens=1,2* delims= " %%a in (`dir !dirlog! 2^>nul^| findstr /I /C:"Log.txt"`) do (
                    if %%a EQU %DATE% (
                    set LIST=[{"{#LOGDISK}":"!disk:~0,-1!"}]
                    set find=1
                    )
                    )
                    )
                    if %find%==1 (
                    echo %LIST%
                    )
                    EndLocal
                    exit​

                    Comment

                    • Semiadmin
                      Senior Member
                      • Oct 2014
                      • 1625

                      #12
                      Создание symlink на эту папку не поможет?

                      Comment

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

                        #13
                        Проверяю у себя. Создал на Windows-машине в папке C:\INSTALL папку с именем "тестовая папка" (через пробел, но без кавычек), а в ней - несколько подпапок (названных и кириллицей, и латинницей).
                        Создал на хосте макрос:
                        {$TEST} C:\INSTALL\тестовая папка
                        Проверяю:
                        • vfs.dir.get["C:\INSTALL\тестовая папка"] - работает
                        • vfs.dir.get[C:\INSTALL\тестовая папка] - работает
                        • vfs.dir.get["{$TEST}"] - работает
                        • vfs.dir.get[{$TEST}] - работает
                        Меняю значение макроса, обрамляя его кавычками - не работает.
                        Zabbix server v6.0.9, агент v6.0.4.

                        Comment

                        • maslonax
                          Junior Member
                          • Nov 2022
                          • 26

                          #14
                          получилось сделать через symlink с ключом /D.

                          Comment

                          Working...