Ad Widget

Collapse

Мониторинг записи в файл.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • gerasimowigor
    Junior Member
    • Apr 2012
    • 4

    #1

    Мониторинг записи в файл.

    Добрый день - есть такая цель - проверять пишутся ли логи в файл.
    Файл имеет имя вида service.log.2018-02-20, соответственно vfs.file.size тут не подходит, так как просит имя статичного файла. Посматриваю на log item, но он больше предназначен для поиска ошибок в самом файле и не ясно будет ли он читать все файлы под регулярным выражением или только последний ( именно это и нужно ).
    Прошу совета - как лучше сделать.

    Заранее мерси.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Увы, такие метрики как vfs.file.size или vfs.file.time (она даже больше подходит к Вашей задаче, удобно применять в сочетании с триггерной функцией fuzzytime() ) требуют статичного имени файла.
    Существует старый enhancement request на эту тему; но, судя по его возрасту (8,5 лет), приоритет у него небольшой. Можно сходить по ссылке и проголосовать за него (нужно только зарегистрироваться на сайте support.zabbix.com), тогда есть надежда, что когда-нибудь данная возможность будет реализована.

    Ну, а пока единственный вариант для Вас - это через UserParameter запускать свой собственный скрипт, который будет делать нужную Вам работу и возвращать интересующие данные.

    Как вариант - можно, конечно, возиться с метрикой logrt (там можно задавать маску имени файла при помощи регулярного выражения), но это менее эффективно: на Zabbix-сервер будет передаваться содержимое файла (что для Вашей задачи некоторый перебор). Тогда уж лучше использовать logrt.count (появилось в агентах версии 3.2.0), но я бы делал через UserParameter.

    Comment

    • gerasimowigor
      Junior Member
      • Apr 2012
      • 4

      #3
      Kos - спасибо. Я так примерно и думал.
      Нет ли примера как это сделать из баша ?

      Comment

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

        #4
        Originally posted by gerasimowigor
        Kos - спасибо. Я так примерно и думал.
        Нет ли примера как это сделать из баша ?
        Да пожалуйста

        В zabbix_agentd.conf:
        Code:
        UserParameter=stat.mtime[*],stat -c '%Y' $1.$$(date '+%Y-%m-%d')
        В определении элемента данных:
        Code:
        Name: File $1 modification time
        Key: stat.mtime[/var/log/service.log] (или где он там будет лежать)
        Type of information: Numeric (unsigned)
        Data type: Decimal
        Units: unixtime
        Триггер, срабатывающий, когда файл не обновлялся более 10 минут:
        Code:
        {Host:stat.mtime[/var/log/service.log].fuzzytime(600)}=0

        Comment

        • manst
          Junior Member
          • Feb 2018
          • 10

          #5
          хм..... а если лог допустим виндошный Eventlog , то как с ним впринципе аналогично поступать?

          Comment

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

            #6
            Originally posted by manst
            хм..... а если лог допустим виндошный eventlog , то как с ним впринципе аналогично поступать?
            Чего Вы хотите от виндового лога - реагировать, если туда долго ничего не пишется? По мне, так какое-то странное желание...

            Comment

            • manst
              Junior Member
              • Feb 2018
              • 10

              #7
              Originally posted by Kos
              Чего Вы хотите от виндового лога - реагировать, если туда долго ничего не пишется? По мне, так какое-то странное желание...
              да, абсолютно верно, например iregexp отлично помогает отслеживать разницу между событиями , а вот как быть если долго нет событий, такое к сожалению возможно, как на это реагировать?


              зы nodata как один из вариантов, но его не очень хотелось бы рассматривать

              Comment

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

                #8
                Originally posted by manst
                как быть если долго нет событий, такое к сожалению возможно, как на это реагировать?
                Боюсь, что только через функцию nodata(). А чем она не устраивает Вас? (чем она не устраивает меня, я уже не раз писал)

                Comment

                • manst
                  Junior Member
                  • Feb 2018
                  • 10

                  #9
                  да устраивает впринципе, но если можно было такой типа фенькой решить проблему {HOST:eventlog[xezapplication,,..,].noevents(optionalevents/anydata,600)} , было бы тоже интересно

                  зы просьба не пинать )

                  Comment

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

                    #10
                    Originally posted by manst
                    да устраивает впринципе, но если можно было такой типа фенькой решить проблему {HOST:eventlog[xezapplication,,..,].noevents(optionalevents/anydata,600)} , было бы тоже интересно

                    зы просьба не пинать )
                    Близкое к тому, что Вы хотите, делает функция count(). Посмотрите её описание, найдёте много интересного

                    Но надо понимать одну важную вещь (которую я на этом форуме уже повторял несколько раз). Наверное, это надо написать большими буквами и повесить куда-нибудь на стену:
                    Триггер пересчитывается всякий раз, когда приходит новое значение для любого элемента данных, входящих в его формулу.

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

                    Кроме того, при использовании временнЫх триггерных функций (nodata(), date(), time(), dayofmonth(), dayofweek() и now()) триггер пересчитывается ещё и каждые 30 секунд отдельным серверным процессом timer.

                    Таким образом, если Вы в триггере напишете, например:
                    Code:
                    {HOST:eventlog[xezapplication,,..,].count(600,"optionalevents/anydata",like)}=0
                    то такой триггер будет срабатывать в том случае, когда в Windows Event Log по имени "xezapplication" в последние 10 минут не было записано ни одного события, в тексте которого фигурирует строка "optionalevents/anydata", НО(!) только при условии, что приходят другие события (без этой строки). Если же в лог не пишется совсем ничего, то триггер не сработает, т.к. не будет повода для его пересчёта (не поступает новых данных). Для того, чтобы это обойти, нужно в условие триггера добавить ещё фразу, например:
                    Code:
                    ... or {HOST:eventlog[xezapplication,,..,].nodata(600)}=1
                    Наличие функции nodata() будет приводить к дополнительному пересчёту триггера дважды в минуту - независимо от того, были новые данные или нет.

                    Comment

                    • manst
                      Junior Member
                      • Feb 2018
                      • 10

                      #11
                      Originally posted by Kos
                      Наверное, это надо написать большими буквами и повесить куда-нибудь на стену:
                      .
                      да это очень часто встречается в Ваших мессагах

                      сделал пока через nodata и *zabbix_sender*, а за Ваши задумки отдельное спасибо *биир*, тоже поэкспериментирую
                      Last edited by manst; 22-02-2018, 16:14.

                      Comment

                      • tutunak
                        Member
                        • Mar 2016
                        • 32

                        #12
                        Решла аналогичную проблему с динамическими именами логов формируемых по дате:
                        Отлично подошло lld. На питоне скрипт, который каждый день засылает имя файла для текущего дня.

                        Comment

                        • cru5ader
                          Member
                          • Mar 2012
                          • 72

                          #13
                          Originally posted by Kos
                          . Тогда уж лучше использовать logrt.count (появилось в агентах версии 3.2.0), но я бы делал через UserParameter.
                          Прошу прощения что влез в тему, а как будет выглядеть триггер для этих (logrt.count) проверок, я так понимаю счетчик не будет сбрасываться, даже при ротации лога

                          Comment

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

                            #14
                            Originally posted by cru5ader
                            Прошу прощения что влез в тему, а как будет выглядеть триггер для этих (logrt.count) проверок, я так понимаю счетчик не будет сбрасываться, даже при ротации лога
                            Вот, если честно, то я этим logrt.count сам ещё не пользовался. Мы используем LTS-версию Zabbix-а, которая на данный момент версии 3.0.x, а эта метрика появилась в 3.2.

                            К сожалению, в документации написано несколько невнятно, но я понимаю так, что метрика должна показывать количество совпадающих с регулярным выражением строк, которые были добавлены в лог-файл за период опроса. Возможно, что я понимаю неправильно, и это работает как-то по-другому. Надо тестировать.

                            Comment

                            • Semiadmin
                              Senior Member
                              • Oct 2014
                              • 1625

                              #15
                              Originally posted by Kos
                              Вот, если честно, то я этим logrt.count сам ещё не пользовался. Мы используем LTS-версию Zabbix-а, которая на данный момент версии 3.0.x, а эта метрика появилась в 3.2.

                              К сожалению, в документации написано несколько невнятно, но я понимаю так, что метрика должна показывать количество совпадающих с регулярным выражением строк, которые были добавлены в лог-файл за период опроса. Возможно, что я понимаю неправильно, и это работает как-то по-другому. Надо тестировать.
                              Именно так, надо только не забывать про параметр skip. Кстати, вполне себе работает и в 3.0 при наличии агента 3.2 или 3.4.

                              Comment

                              Working...