Ad Widget

Collapse

Проблема с проверкой наличия файла

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Nychary
    Junior Member
    • Sep 2020
    • 13

    #1

    Проблема с проверкой наличия файла

    Добрый день. Гуру заббикса, нужна ваша помощь.

    Задача состоит в следующем. Есть папка, в которую каждую ночь в одно и то же время загружается несколько файлов. Заббикс должен проверять, что файл в папку загрузился.

    Реализовала я это так, как и советует большинство мануалов:

    Элемент данных: vfs.file.time[/mnt/1/Accounts1C.txt,modify]
    Возвращает последнее изменение файла в Unix Timestamp.

    Триггер: change(/Zabbix server/vfs.file.time[/mnt/1/Accounts1C.txt,modify])>86400
    Берет разницу между последним и предыдущим значением и сравнивает, не больше ли она она, чем 86400, то есть, сутки по Unix Timestamp.

    Теперь в чем, собственно, проблема.

    Файл каждую ночь создается в 00-20. И примерно в 01-16 я получаю сообщение о срабатывании триггера. Через час проблема решается. Другими словами, некоторое время после перезаписи триггер почему-то считает, что файл не обновился. Уже в следующую проверку все Ок и проблема решается.

    Я пыталась понять, где ошибка, и считала формулу вручную - брала значение по Unix Timestamp на то время и сравнивала руками. Потом думала, ну ок, раз тебе не нравится что-то именно в этот интервал, проверяй только в два часа ночи и добавляла пользовательские интервалы элементу данных. Но ошибка все равно вылезала, хоть опрос элемента данных и игнорировался.

    Может ли кто-то подсказать, что я делаю не так? Потому что собственные мысли кончились.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Originally posted by Nychary
    Есть папка, в которую каждую ночь в одно и то же время загружается несколько файлов. Заббикс должен проверять, что файл в папку загрузился.
    Что будет происходить в ситуации "файл в папку не загрузился"?
    Например:
    • останется предыдущая версия файла (со вчерашней датой);
    • файла не будет вообще;
    • файл будет пересоздан, но толком не записан (с новой датой создания, но неполным содержимым - например, пустым);
    ?

    Чтобы точнее ответить на Ваш вопрос, нужно видеть, с каким интервалом делается опрос и когда и какие значения приходили.

    Но мне почему-то кажется, что тут дело не в Zabbix-е, а в особенностях работы операционной системы с подмонтированными файловыми системами.
    Судя по пути к файлу (который начинается с папки "/mnt"), файл расположен не на локальной файловой системе, а на удалённой, которая подмонтирована куда-то вглубь "/mnt".
    Вполне допускаю, что в этом случае операционка может при обращении к файлу быстро отдавать закэшированное (предыдущее) значение таймстэмпа файла, в то же время обновляя этот кэш для того, чтобы в следующий раз вернуть уже правильное (обновлённое) значение.
    Если так, то достаточно просто увеличить пороговое значение (86400) на час-другой. В этом случае при наличии проблем триггер будет срабатывать чуть позже (не в начале второго, а в начале третьего или начале четвёртого), но не думаю, что для данной задачи это принципиально.

    Comment


    • Nychary
      Nychary commented
      Editing a comment
      Ваш совет помог. Огромнейшее спасибо!
  • Nychary
    Junior Member
    • Sep 2020
    • 13

    #3
    Originally posted by Kos
    Что будет происходить в ситуации "файл в папку не загрузился"?
    Например:
    • останется предыдущая версия файла (со вчерашней датой);
    • файла не будет вообще;
    • файл будет пересоздан, но толком не записан (с новой датой создания, но неполным содержимым - например, пустым);
    ?

    Чтобы точнее ответить на Ваш вопрос, нужно видеть, с каким интервалом делается опрос и когда и какие значения приходили.

    Но мне почему-то кажется, что тут дело не в Zabbix-е, а в особенностях работы операционной системы с подмонтированными файловыми системами.
    Судя по пути к файлу (который начинается с папки "/mnt"), файл расположен не на локальной файловой системе, а на удалённой, которая подмонтирована куда-то вглубь "/mnt".
    Вполне допускаю, что в этом случае операционка может при обращении к файлу быстро отдавать закэшированное (предыдущее) значение таймстэмпа файла, в то же время обновляя этот кэш для того, чтобы в следующий раз вернуть уже правильное (обновлённое) значение.
    Если так, то достаточно просто увеличить пороговое значение (86400) на час-другой. В этом случае при наличии проблем триггер будет срабатывать чуть позже (не в начале второго, а в начале третьего или начале четвёртого), но не думаю, что для данной задачи это принципиально.
    Если файл в папку не загрузится, останется файл со вчерашней датой.
    Я увеличивала пороговое значение, но на полчаса. Попробую сдвинуть чуть вперед, отпишусь по результату. Спасибо!

    Comment

    Working...