Ad Widget

Collapse

Мониторинг папки windows на появление новых файлов

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Aleksandr91
    Junior Member
    • Oct 2019
    • 9

    #1

    Мониторинг папки windows на появление новых файлов

    Всем привет! Я новичок в системе мониторинга Zabbix. Прошу строго не судить, тут уже обсуждалась эта тема, но четкого ответа найти не смог.
    Задача: мониторить папку на сервере windows и если в ней появился файл .xls отправить сообщение на почту. Буду благодарен, если у кого есть в наличии готовый шаблон
  • teddy
    Senior Member
    • Dec 2017
    • 234

    #2
    Originally posted by Aleksandr91
    Всем привет! Я новичок в системе мониторинга Zabbix. Прошу строго не судить, тут уже обсуждалась эта тема, но четкого ответа найти не смог.
    Задача: мониторить папку на сервере windows и если в ней появился файл .xls отправить сообщение на почту. Буду благодарен, если у кого есть в наличии готовый шаблон
    Для Windows. Для Linux чуть подправить item

    Создаем item
    тип Zabbix agent
    ключ vfs.dir.count["PATH_TO_FOLDER_WITH_DISKNAME","(?i)^.+\.xls$",,fi le,,0]

    такой item дает количество файлов по маске.в момент проверки

    И потом на него триггер. если last() <> 0 - то собственно файлы есть и выполнять действия.

    Comment


    • Aleksandr91
      Aleksandr91 commented
      Editing a comment
      Zabbix пишет Unsupported item key. Версия у меня 4.0.13
  • teddy
    Senior Member
    • Dec 2017
    • 234

    #3
    "vfs.dir.count Поддерживается начина с Zabbix 4.0.0." ( https://www.zabbix.com/documentation/4.0/ru/manual/config/items/itemtypes/zabbix_agent?s[]=vfs&s[]=dir&s[]=size)
    Что то у вас не так. возможно надо смотреть версии агентов а не только самого сервера.

    Comment

    • Aleksandr91
      Junior Member
      • Oct 2019
      • 9

      #4
      root@zabbix:~# zabbix_agentd -V
      zabbix_agentd (daemon) (Zabbix) 4.0.13
      Revision 4e383bb6c5 2 October 2019, compilation time: Oct 2 2019 08:54:35

      Comment

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

        #5
        Click image for larger version

Name:	screenshot-2019-10-23-01.PNG
Views:	976
Size:	7.7 KB
ID:	388531
        Zabbix пишет Unsupported item key. Версия у меня 4.0.13
        Если Zabbix в веб-интерфейсе пишет, что элемент данных стал Not supported, то он должен помечать этот элемент данных красной меткой (см. скриншот), при наведении на которую показывать подробности ошибки.

        И версию агента проверьте, пожалуйста, именно на той машине, где работает агент (судя по всему, речь о сервере Windows), а не на той, где крутится сервер Zabbix (как в вашем последнем сообщении - по всей видимости, Linux-машина).

        Comment


        • Aleksandr91
          Aleksandr91 commented
          Editing a comment
          Милый мой человек! Спасибо тебе огромное)))) Поставил на Windows агент 4.2 и всё заработало)) Сидел тупил до этого

        • Aleksandr91
          Aleksandr91 commented
          Editing a comment
          у меня ещё такой вопрос, а как в моем выражении указать два типа файла? .csv и .xlsx

          vfs.dir.count["PATH_TO_FOLDER_WITH_DISKNAME","(?i)^.+\.xls$" ,,fi le,,0]
      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3404

        #6
        у меня ещё такой вопрос, а как в моем выражении указать два типа файла? .csv и .xlsx

        vfs.dir.count["PATH_TO_FOLDER_WITH_DISKNAME","(?i)^.+\.xls$" ,,fi le,,0]
        1) Пожалуйста, не надо добавлять комментарий к чьему-то сообщению - это видит, по сути, только автор комментария. Лучше отвечайте отдельным сообщением.

        2) Например, так:
        Code:
        vfs.dir.count["PATH_TO_FOLDER_WITH_DISKNAME","(?i)^.+\.(xls|csv)$",,file,,0]

        Comment

        • Aleksandr91
          Junior Member
          • Oct 2019
          • 9

          #7
          1) Извиняюсь, учту на будущее
          2) Помогло, спасибо огромное
          И последний вопрос, есть файлы в папке с названием (sp_Contactor_00004444 _2019_05_12__14_15.csv), будут меняться только порядковые номера и даты
          Как прописать в выражении такое?

          Comment

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

            #8
            Originally posted by Aleksandr91
            есть файлы в папке с названием (sp_Contactor_00004444 _2019_05_12__14_15.csv), будут меняться только порядковые номера и даты
            Как прописать в выражении такое?
            В смысле - нужно реагировать только на файлы с такими именами? Или наоборот, их игнорировать и не считать (раз уж они уже "есть")?
            В любом случае - можно разрулить регулярными выражениями в ключе.
            В первом случае - указать вторым параметром, например, так:
            Code:
            "(?i)^sp_Contactor_\d+_\d{4}_\d\d_\d\d_.+\.(xls|csv)$"
            Более точно можно сказать, если знать точнее - что именно в имени файла фиксировано, а что может меняться.
            Во втором случае (если, наоборот, такие файлы надо игнорировать) -- указать то же самое не вторым, а третьим параметром (который сейчас пустой).

            Comment

            • Aleksandr91
              Junior Member
              • Oct 2019
              • 9

              #9
              Ну смотрите, есть папка Contactor в ней появился файл с названием sp_Contactor_00004444 _2019_05_12__14_15 и расширением .csv, соответственно zabbix сразу об этом проинформировал, далее появился предположим файл sp_Contactor_00354674 _2019_06_12__12_15 ну и т.д.
              Тобишь у новых файлов в названии будет совпадать только sp_Contactor_ всё что дальше, будет изменяться
              Надо по начальной маске отслеживать файлы и сообщать о них

              Comment

              • teddy
                Senior Member
                • Dec 2017
                • 234

                #10
                в триггере сравниваете если last() > last(#1) то событие..
                Это не сработает только в ситуации когда за промежуток между проверками появилось несколько файлов и вам надо сделать несколько событий, т.е четко на каждый файл по событию - вот тогда подумать.
                Т.к zabbix не умеет опрашивать чаще чем раз в 1 сек. ( а на самом деле еще реже, т.к он раз в секунду ставит опрос в очередь а когда до него дело дойдет зависит от загруженности системы), скорее всего в такой ситуации надо делать скрипт на клиенской стороне, который постоянно мониторит папку и отправляет через zabbix_send на сервер каждый факт появления файла.

                PS кстати. а есть в заббихе механизм на определенній item поставить опрос жестко раз в 30 секунд например? и чтоб система гарантировала опрос раз в такой промежуток времени. Или такое тоже только через клиентский скрипт и сендер?

                Comment

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

                  #11
                  Aleksandr91 , ставите маску файла
                  Code:
                  (?i)^sp_Contactor[_\d]+\.(xls|csv)$
                  - должно работать (т.е. считать количество таких файлов).
                  Далее остаётся вопрос, что с этим количеством делать. Но это уже зависит от того, что вы сами с этими файлами собираетесь делать - как обрабатывать, как долго они должны в этой папке находиться, и кто и как их оттуда должен убирать. Потому как предлагавшийся изначально триггер с условием "last() > 0" сработает только на первый появившийся файл и будет игнорировать последующие до тех пор, пока вы не почистите эту папку (т.е. очередная проверка покажет, что таких файлов больше нет), и только после этого при появлении файлов будет срабатывать вновь.
                  Если нужно отслеживать любое увеличение количества таких файлов (скажем, было два - стало три), то можно использовать, например, условие "change() > 0". Но в этом случае надо отдавать себе отчёт в том, что в ситуации, когда у вас был один такой файл, вы руками его удалили/переименовали/переместили, но до следующей проверки появился новый (тоже один), то такой триггер тоже не сработает.

                  teddy , я вам больше скажу. При использовании клиентского скрипта и сендера вам тоже никто не гарантирует, что скрипт будет запущен в строго оговоренное время :-)
                  При любом раскладе в лучшем случае он будет в это время поставлен шедулером на выполнение, а остальное зависит от загруженности системы и точности хода её часов.
                  А так - теоретически да, при использовании пассивных проверок можно задать интервалы по расписанию с точностью до секунды.

                  Comment

                  • Aleksandr91
                    Junior Member
                    • Oct 2019
                    • 9

                    #12
                    Получилось так, vfs.dir.count["C:\1C\EXCHANGE_SD\NOT GOOD","(?i)^sp_Contactor[_\d]+\.(xlsx|csv)$",,file,,0]

                    Но не срабатывает, сижу изучаю написание регулярных выражений))

                    Для примера, сейчас в папке лежит файл sp_Contactor_00005307 _2019_7_19__11_01.csv
                    Last edited by Aleksandr91; 24-10-2019, 10:20.

                    Comment

                    • Aleksandr91
                      Junior Member
                      • Oct 2019
                      • 9

                      #13
                      Попробовал сгенерить выражение через https://uiregex.com/ru?test=&match=&exact=&blocked=

                      Получилось вот такое чудище: ^[a-z]{2}[_]{1}[A-Z]{1}[a-z]{8}[_]{1}[0-9]{8} [_]{1}[0-9]{4}[_]{1}[0-9]{1}[_]{1}[0-9]{2}[_]{2}[0-9]{2}[_]{1}[0-9]{2}$

                      Last edited by Aleksandr91; 24-10-2019, 10:04.

                      Comment

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

                        #14
                        Для проверки регулярных выражений есть проверенный временем классический сайт: https://regex101.com/
                        А пробел в имени файла у вас таки на самом деле присутствует, это не опечатка? Если так, то выражение надо подкорректировать.
                        Попробуйте упростить ваше регулярное выражение, скажем, так:
                        Code:
                        (?i)^sp_Contactor.+\.(xlsx|csv)$

                        Comment

                        • Aleksandr91
                          Junior Member
                          • Oct 2019
                          • 9

                          #15
                          Спасибо огромнейшее, заработало!

                          vfs.dir.count["C:\1C\EXCHANGE_SD\NOT GOOD","(?i)^sp_Contactor.+\.(xlsx|csv)$",,file,,0]

                          Comment

                          Working...