Ad Widget

Collapse

Мониторинг наличия папки неизвестного имени

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • VlKu
    Junior Member
    • Apr 2023
    • 4

    #1

    Мониторинг наличия папки неизвестного имени

    Нужна помощь

    Существует папка, в которую присылаются отчеты, находящиеся в папках(имена папок разные, но определенной длины)
    И если папка с отчетами существует больше 15 минут, необходимо отправить алерт на почту
    Просьба расписать решение подробнее

    ОС Debian 11
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Чтобы расписать подробное решение, нужно иметь не менее подробную постановку задачи.
    Из Вашего описания мне, извините, понятно мало:
    • есть папка, отчёты присылаются тоже в папках... как это понимать? Или отчёты - это файлы, которые появятся в подпапках исходной папки?
    • почему проверять нужно именно папку, а не файлы в ней?
    • таймстэмпы (время последней модификации) файлов и папок в вашей системе соответствуют реальности, т.е. тому моменту, когда файл реально появился?
    • почему надо ждать 15 минут, что за это время может произойти с папкой и/или файлом в ней?
    • упомянутые вами папки и файлы как-то чистятся?
    • в Zabbix-е алерт (т.е. оповещение на почту) - это реакция на событие "возникновение проблемы". Т.е. сначала нужно определить, какие метрики собирать и какие условия будут обозначать наличие проблемы. Например, "появление новой подпапки в такой-то папке". Но если таких подпапок появится несколько - это будет одна проблема или нужно генерировать по проблеме на каждую подпапку? Когда и по какому критерию эти проблемы закрывать?
    • какие данные Вы хотите видеть в уведомлении?
    • наконец, традиционный вопрос, о котором почему-то забывают: с какой версией Zabbix Вы работаете?
    Без этого могу дать только какие-то общие рекомендации - например, посмотреть на эту тему (ссылка).

    Comment


    • VlKu
      VlKu commented
      Editing a comment
      1) 1С формирует отчет для каждого отправленного документа в определенной директории - 2 файла, появляющиеся в подпапках исходной папки
      2) Есть вероятность, что сами отчетные файлы могут меняться, в отличие от папки(а нужно мониторить файл с момента создания)
      3) Не всегда время создания файла совпадает со временем изменения
      4) Насчет 15 минут - подпапка с отчетом должна быть удалена(если по истечении 15 минут она всё еще существует - проблема)
      5) В уведомлении необходимо увидеть имя подпапки, которая всё еще не была удалена
      6) Версия Zabbix - 4.4
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #3
    VlKu, не надо комментировать чужие реплики - лучше отвечать отдельной репликой. Комментарии не обновляют ветку обсуждения, и при просмотре списка тем на форуме не видно, что кто-то где-то прокомментировал.

    Спасибо, что предоставили подробности.
    Code:
    Версия Zabbix - 4.4
    Надеюсь, Вы в курсе, что эта версия не поддерживается уже с лета 2020 года? (на всякий случай, ссылка)

    В уведомлении необходимо увидеть имя подпапки, которая всё еще не была удалена
    Если бы не это требование, то я бы рекомендовал установить на эту машину агента Zabbix и использовать метрику vfs.dir.count​, в параметрах которой можно задать все критерии поиска - исходную папку, глубину вложенности, тип (например, искать только поддиректории) и возраст (только те, у которых возраст больше 15 минут). Запускать раз в несколько минут (допустим, каждые 5 минут), триггер - когда что-то по заданным критериям нашли (т.е. вернулось значение больше нуля). Эта метрика доступна в агентах, начиная с версии 4.0, так что должно работать; но тогда не будет видно имя подпапки.

    Если таки очень надо иметь в уведомлении имя подпапки, то нужно собирать не только количество поддиректорий, удовлетворяющих нужному условию, но и их список, который потом как-то обрабатывать. Тут я вижу два варианта:
    • писать свои скрипты, которые запускать, например, через UserParameter (ссылка);
    • использовать встроенную метрику vfs.dir.get​ (ссылка), но она появилась лишь в агенте версии 6.0. Зато возвращаемый ею результат (в виде JSON) можно использовать и для создания нужных объектов через низкоуровневое обнаружение (LLD), и для присвоения значений созданным объектам (в шестой версии всё это можно делать через предобработку). В версии 4.4 какие-то возможности предобработки уже появились (и, на первый взгляд, даже есть всё необходимое), но ввиду её давности я бы не стал там с этим ковыряться сейчас.

    Comment

    • Semiadmin
      Senior Member
      • Oct 2014
      • 1625

      #4
      Поддержу коллегу Kos​ насчет vfs.dir.get​​ и добавлю, что агент 6.2 и тем более 6.0 вполне корректно работает с сервером 4.4.
      Да и с препроцессингом в 4.4 все ок.

      Comment

      • VlKu
        Junior Member
        • Apr 2023
        • 4

        #5
        Что ж
        Пришлось перейти на версию заббикса 6.0

        Я переосмыслил задачу и решил сделать следующую вещь:
        Написал скрипт на питоне, который записывает в текстовый файл имена папок, которые были которые существуют больше 15 минут(скрипт запускается автоматически через cron)
        Теперь идея заключается в том, чтобы мониторить изменение одного файла(как я понимаю, для этого больше всего подходит итем vfs.file.size)
        А дальше возникла проблема с выбором правильного триггера(попробовал change, повозился с его параметрами, но результата никакого)
        Можете помочь с выбором и настройкой правильного триггера?
        Или подсказать, вдруг я ошибся в выборе итема?

        Comment

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

          #6
          Вы пытаетесь мониторить изменение того файла, в который свои результаты складывает питоновский скрипт?
          Если так, то вряд ли полезно следить за изменением его размера: ведь если одна папка появится, а другая исчезнет, и имена этих папок одинаковы по длине, по размер вашего файла не поменяется. Можно следить, например, за изменением его контрольной суммы; но в любом случае - мне неясно, каким образом при таком подходе вы собираетесь формировать уведомления, чтобы в них попадали имена нужных папок. Можно следить просто за изменением содержимого этого файла, но в этом случае нет смысла писать эти данные в файл - можно отсылать их сразу в Zabbix (например, как одно многострочное значение), и сделать триггер, который будет срабатывать, когда последнее значение непустое и отличается от предыдущего, а закрываться - когда последнее значение строго пустое (т.е. имеет нулевую длину).

          Comment

          • VlKu
            Junior Member
            • Apr 2023
            • 4

            #7
            Документ с именами папок не пересоздается, а дополняется новыми значениями
            Т.е. новые имена папок записываются к уже записанным ранее с указанием даты и времени их создания
            Соответственно размер файла увеличивается
            Если папка была удалена - она останется в данном файле
            И я хочу следить не за изменением веса файла, а именно за его увеличением(т.к. в какой-то момент я всё равно решу зачистить данный файл и удалить ненужные мне записи)
            В уведомлениях я не планирую указывать имена папок(если мне это понадобится, я загляну в файл, который создает скрипт)

            Comment

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

              #8
              Originally posted by VlKu
              Документ с именами папок не пересоздается, а дополняется новыми значениями
              Т.е. новые имена папок записываются к уже записанным ранее с указанием даты и времени их создания
              Соответственно размер файла увеличивается
              Если папка была удалена - она останется в данном файле
              В таком случае ваш файл будет расти всё время, пока есть какая-то "залипшая" папка.
              Code:
              change(/ваш_хост/vfs.file.size[/ваш/файл])>0
              Файл перестал расти - условие больше не выполнится, триггер закроется.

              Главное - чтобы данные поступали корректно, т.е.: 1) у пользователя zabbix были бы права на чтение директории, в которой этот файл находится (на сам файл необязательно); 2) ваш скрипт по cron-у бы исправно работал (ибо если что-то залипнет, то данные будут некорректными).

              Comment

              • VlKu
                Junior Member
                • Apr 2023
                • 4

                #9
                Коллеги, такой вопрос
                При настройке рассылки на email в заббиксе(версии 4.0.3) необходимо указать snmp сервер
                Но сервер с заббиксом находится во внутренней сети(и прямого подключения к интернету не имеет)

                Вопрос заключается в следующем:
                Какой использовать snmp сервер и нужно ли открывать какие-то порты, чтобы все письма об ошибках уходили куда нужно?

                Comment

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

                  #10
                  Вы что-то путаете, протокол SNMP к отсылке почты никакого отношения не имеет. Вероятно, имелся в виду сервер SMTP (два быка, одна корова ).

                  Чтобы почта уходила наружу - разумеется, нужен какой-то канал отсылки уведомлений. SMTP штатно работает по TCP, порт 25.
                  Если у вас есть свой внутренний почтовый сервер, то можно отсылать на него; если у конторы есть подключение к Интернету, то, скорее всего, услуги почтового сервера предоставляет провайдер (в этом случае на фаерволе нужен проброс по tcp:25 до првайдерского почтового сервера). Поскольку Zabbix работает на платформе UNIX/Linux, то как один из вариантов - можно настроить почтовый сервер на той же машине, что и сервер Zabbix (все дистрибутивы Linux включают в себя какой-то из почтовых серверов), тогда в настройках Zabbix-а можно указать отсылать на 127.0.0.1:25 (но тогда нужно будет открывать наружу tcp:25 и DNS - udp:53). Ну и ещё (независимо от всего остального) не мешало бы иметь синхронизацию времени (как правило, NTP - udp:123).

                  Comment

                  Working...