Ad Widget

Collapse

Мониторинг времени файла

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • aleksey.ishchenko
    Senior Member
    • May 2020
    • 187

    #1

    Мониторинг времени файла

    Есть лог файл, который создается каждый час, если прошло больше часа и новый файл не появился, то алерт.
    Пробовал так
    vfs.dir.count["E:\Backup","(?i)^.+\.trn$",,file,,0,,,3600] и вот так vfs.file.time[E:\Backup\elma_base_*.trn] и триггер {Template Backup fixed file check TRN1:vfs.file.time[E:\Backup\elma_base_*.trn].last()}>3600
    Но, заббикс сразу алертит, что файл не менялся больше часа
  • Answer selected by aleksey.ishchenko at 05-12-2022, 06:22.
    Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    Метрика vfs.file.time[E:\Backup\elma_base_*.trn] работать не будет, т.к. параметром для неё должен быть полный путь к файлу, вайлдкарды там не поддерживаются.
    Если уж хочется отслеживать время последней модификации, то не файла, а директории, в которую он пишется (и сравнивать с текущем временем сервера, используя триггерную функцию fuzzytime()). Но это не будет работать в ситуации, когда в данную директорию, кроме этих логов, пишется что-то ещё.

    Поэтому я согласен с коллегой Hamardaban - можно отслеживать количество логов нужного вида (по шаблону) с папке с помощью метрики vfs.dir.count[...], а дальше анализировать изменения. Я бы, например, воспользовался функцией changecount(/host/key,1h,inc)​ - если в течение часа не было ни одного увеличения, то алерт. Интервал опроса при этом задать явно меньше часа (допустим, 10 минут) - тогда можно спокойно пару раз в час подтирать старые логи, не боясь срабатывания мониторинга.

    А ещё лучше подправить ваш изначальный элемент данных таким образом:
    Code:
    vfs.dir.count["E:\Backup","(?i)^.+\.trn$",,file,,0,,,,1h]
    чтобы он считал количество подпадающих под заданный шаблон файлов, имеющих возраст меньше часа (дополнительная запятая перед последним параметром, чтобы он ограничивал возраст не снизу, а сверху). И тупо сравнивать его с нулём.

    Comment


    • aleksey.ishchenko
      aleksey.ishchenko commented
      Editing a comment
      Спасибо, все получилось
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    А что если элементом vfs.dir.count каждый час собирать общее количество файлов в каталоге и алертить если это значение не изменилось?
    или используя припроцессинг сразу хранить "простое изменение" и если оно равно 0 - то ахтунг?

    Comment

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

      #3
      Метрика vfs.file.time[E:\Backup\elma_base_*.trn] работать не будет, т.к. параметром для неё должен быть полный путь к файлу, вайлдкарды там не поддерживаются.
      Если уж хочется отслеживать время последней модификации, то не файла, а директории, в которую он пишется (и сравнивать с текущем временем сервера, используя триггерную функцию fuzzytime()). Но это не будет работать в ситуации, когда в данную директорию, кроме этих логов, пишется что-то ещё.

      Поэтому я согласен с коллегой Hamardaban - можно отслеживать количество логов нужного вида (по шаблону) с папке с помощью метрики vfs.dir.count[...], а дальше анализировать изменения. Я бы, например, воспользовался функцией changecount(/host/key,1h,inc)​ - если в течение часа не было ни одного увеличения, то алерт. Интервал опроса при этом задать явно меньше часа (допустим, 10 минут) - тогда можно спокойно пару раз в час подтирать старые логи, не боясь срабатывания мониторинга.

      А ещё лучше подправить ваш изначальный элемент данных таким образом:
      Code:
      vfs.dir.count["E:\Backup","(?i)^.+\.trn$",,file,,0,,,,1h]
      чтобы он считал количество подпадающих под заданный шаблон файлов, имеющих возраст меньше часа (дополнительная запятая перед последним параметром, чтобы он ограничивал возраст не снизу, а сверху). И тупо сравнивать его с нулём.

      Comment


      • aleksey.ishchenko
        aleksey.ishchenko commented
        Editing a comment
        Спасибо, все получилось
    • CrashXRu
      Junior Member
      • Nov 2022
      • 8

      #4
      Все логично вы везде берете не 1 фаил и файлы по маске
      первые из них будут устаревшими

      если уже цель в 100% попадание

      то введем точную маску файла, допустим
      BackupName_YYYY.MM.DD.HH
      в данном формате будет создавать бекап ваше приложение

      в zabbix тоже есть функции получения текущего дня, месяца, года

      далее определяете время необходимое для создание бекапа, допустим 10 минут
      добавляем 10-15% к времени и создаем запуск триггера в указанный интервал
      например каждую 12 минуту часа, если файл не обнаружен то алерт


      если же фаил перезаписывается, то дата создания в некоторых случаях может быть той же самой, а вот дата модификации будет обновлена, так же есть дата последнего доступа в к файлу


      Comment

      • CrashXRu
        Junior Member
        • Nov 2022
        • 8

        #5
        технически тут есть все необходимое для решения https://diyit.ru/viewtopic.php?t=1938

        Comment

        • aleksey.ishchenko
          Senior Member
          • May 2020
          • 187

          #6
          Originally posted by Kos
          Метрика vfs.file.time[E:\Backup\elma_base_*.trn] работать не будет, т.к. параметром для неё должен быть полный путь к файлу, вайлдкарды там не поддерживаются.
          Если уж хочется отслеживать время последней модификации, то не файла, а директории, в которую он пишется (и сравнивать с текущем временем сервера, используя триггерную функцию fuzzytime()). Но это не будет работать в ситуации, когда в данную директорию, кроме этих логов, пишется что-то ещё.

          Поэтому я согласен с коллегой Hamardaban - можно отслеживать количество логов нужного вида (по шаблону) с папке с помощью метрики vfs.dir.count[...], а дальше анализировать изменения. Я бы, например, воспользовался функцией changecount(/host/key,1h,inc)​ - если в течение часа не было ни одного увеличения, то алерт. Интервал опроса при этом задать явно меньше часа (допустим, 10 минут) - тогда можно спокойно пару раз в час подтирать старые логи, не боясь срабатывания мониторинга.

          А ещё лучше подправить ваш изначальный элемент данных таким образом:
          Code:
          vfs.dir.count["E:\Backup","(?i)^.+\.trn$",,file,,0,,,,1h]
          чтобы он считал количество подпадающих под заданный шаблон файлов, имеющих возраст меньше часа (дополнительная запятая перед последним параметром, чтобы он ограничивал возраст не снизу, а сверху). И тупо сравнивать его с нулём.
          Ошибка Cannot obtain file information: [2] No such file or directory

          Находил ваш комментарий https://www.zabbix.com/forum/in-russ...049#post421049
          Там вы рекомендуете использовать
          {host_name:vfs.file.time[C:\webstore\,modify].time()}>030000
          Версия 4,4 заббикс

          Comment

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

            #7
            Originally posted by aleksey.ishchenko

            Ошибка Cannot obtain file information: [2] No such file or directory

            Находил ваш комментарий https://www.zabbix.com/forum/in-russ...049#post421049
            Там вы рекомендуете использовать
            {host_name:vfs.file.time[C:\webstore\,modify].time()}>030000
            Версия 4,4 заббикс
            Эмм... Нет, выражение
            Code:
            {host_name:vfs.file.time[C:\webstore\,modify].time()}>030000
            в той моей реплике - это не условие, а только его часть, причём не самая существенная. Существенная - это именно использование метрики vfs.file.time для получения времени последней модификации директории (не файла в ней!), в сочетании с триггерной функцией fuzzytime().
            Т.е. именно то, с чего я начал свою реплику в этой ветке.

            Версия 4.4 - это у вас сейчас? Если да, то это важно, поскольку данная версия давно уже не поддерживается, и с тех пор много поменялось (например, синтаксис триггерных выражений - начиная с 5.4).
            Какие у вас сейчас версии Zabbix-сервера и агента?

            Но важнее понять, почему у вас не работает метрика
            Code:
            vfs.dir.count["E:\Backup","(?i)^.+\.trn$",,file,,0,,,,1h]
            Попробуйте поменять последний параметр на 3600 (возможно, в старых версиях агента ещё не поддерживались значения с суффиксами времени вроде "1h").
            Вроде бы, эта метрика должна работать, начиная с агента версии 4.0.
            В моих тестах подобная ошибка возникает при неверном указании имени директории первым параметром (т.е. если директории с таким именем вообще нет), но у меня агент версии 6.0.4.​

            Comment

            • Semiadmin
              Senior Member
              • Oct 2014
              • 1625

              #8
              Сервер 4.4 без проблем работает с любой версией агента. Ставьте агент 6.* и vfs.dir.get​ даст исчерпывающую информацию)

              Comment

              Working...