Ad Widget

Collapse

Мониторинг определённой строчки внутри динамически создаваемых логах.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • beginner_mon
    Junior Member
    • Jan 2021
    • 13

    #1

    Мониторинг определённой строчки внутри динамически создаваемых логах.

    Доброго времени суток. Подскажите пожалуйста возможно ли реализовать данную задачу. Есть логи которые создаются каждый день, у них разные имена, создаются все в одной папке. В логах отображается информация о работе SQL, задача внутри логов искать строчку "SQL Error" и если она есть то оповещать триггером. Возможно ли это и если да, то как это реализовать?Click image for larger version

Name:	SQL ERROR.jpg
Views:	165
Size:	105.0 KB
ID:	420717
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Я вижу два подхода к решению этой задачи.

    Первый подход - использовать штатного агента Zabbix и метрики logrt[...] или logrt.count[...].
    В обеих можно задать шаблон для динамических имён файлов, но важно иметь в виду, что каждый элемент данных с такой метрикой должен мониторить свой собственный файл.
    Т.е. нормально, когда для имени файла используется шаблон, например, "^.*_dispatcher_.*_atol_2_1_7112.log$" и под этот шаблон попадает несколько файлов - тогда агентом будет контролироваться последний из них, а после ротации логов агент сам переключится на новый файл.
    Но ненормально, если задать, скажем, шаблон "^.*_dispatcher_.*_atol_2_5272$" - судя по скриншоту, под него попадут первые два файла, в которые запись идёт одновременно (если только скриншот не был сделан сразу же после ротации логов).
    Другими словами, нужен отдельный элемент данных со своим шаблоном для каждого из файлов, в которые идёт одновременная запись.
    Далее в настройках каждого из элементов данных настраивается регулярное выражение, определяющее искомую строку (т.е. "SQL ERROR"), а затем - на каждый из них навешивается соответствующий триггер.

    Другой подход (в том случае, если затруднительно реализовать первый вариант) заключается в том, чтобы всю нужную логику реализовать в каком-либо скрипте, а затем вызывать этот скрипт через UserParameter.
    Last edited by Kos; 16-03-2021, 13:35.

    Comment

    • beginner_mon
      Junior Member
      • Jan 2021
      • 13

      #3
      А возможно ли сделать один элемент данных "logrt" в котором агент будет проверять все новые создаваемые логи в названии которых будет фигурировать имя "dispatcher_test_atol", но числа до названия и после будут изменяться когда будет создаваться новый лог.. Единственные символы которые не меняются в названии лога это "dispatcher_test_atol"Click image for larger version

Name:	Screenshot_4.jpg
Views:	139
Size:	36.8 KB
ID:	420819

      Comment


      • Hamardaban
        Hamardaban commented
        Editing a comment
        Вы же читать умеете? И наверняка "компьютерный" специалист и обладаете алгоритмическим мышлением?
        Так прочитайте о всех возможностях logrt вот тут https://www.zabbix.com/documentation...s/zabbix_agent
        Других возможностей нет. Если они очень нужны - пишите в ZBXNEXT.
        Last edited by Hamardaban; 17-03-2021, 14:21.
    • beginner_mon
      Junior Member
      • Jan 2021
      • 13

      #4
      Спасибо Большое за помощь!

      Comment

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

        #5
        Originally posted by beginner_mon
        А возможно ли сделать один элемент данных "logrt" в котором агент будет проверять все новые создаваемые логи в названии которых будет фигурировать имя "dispatcher_test_atol", но числа до названия и после будут изменяться когда будет создаваться новый лог.. Единственные символы которые не меняются в названии лога это "dispatcher_test_atol"
        Если запись в эти логи идёт последовательно, т.е. новый файл создаётся (и запись в него начинается) только после того как закончилась запись во все предыдущие файлы, то проблемы нет: это нормальная ротация логов, и logrt это поддерживает.

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

        На приведённом Вами скриншоте я вижу, что у трёх файлов из пяти - одинаковое время последней модификации (15:04), поэтому и предполагаю, что они "активны" одновременно. Если я ошибаюсь (и новый файл создаётся только после закрытия предыдущего), то всё в порядке. Но если же моё предположение верно, то для каждого из них нужен свой элемент данных logrt. Если переменные части имён файлов не статичны (например, включают дату-время или номер процесса, который мы не знаем заранее), то помочь в создании нужных элементов данных и триггеров может технология LLD (ссылка), но для вашего случая готового решения нет и придётся писать свои скрипты для этого.
        Last edited by Kos; 17-03-2021, 16:44.

        Comment

        Working...