Доброго времени суток. Подскажите пожалуйста возможно ли реализовать данную задачу. Есть логи которые создаются каждый день, у них разные имена, создаются все в одной папке. В логах отображается информация о работе SQL, задача внутри логов искать строчку "SQL Error" и если она есть то оповещать триггером. Возможно ли это и если да, то как это реализовать?
Ad Widget
Collapse
Мониторинг определённой строчки внутри динамически создаваемых логах.
Collapse
X
-
Tags: None
-
Я вижу два подхода к решению этой задачи.
Первый подход - использовать штатного агента 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. -
А возможно ли сделать один элемент данных "logrt" в котором агент будет проверять все новые создаваемые логи в названии которых будет фигурировать имя "dispatcher_test_atol", но числа до названия и после будут изменяться когда будет создаваться новый лог.. Единственные символы которые не меняются в названии лога это "dispatcher_test_atol"Comment
-
Вы же читать умеете? И наверняка "компьютерный" специалист и обладаете алгоритмическим мышлением?
Так прочитайте о всех возможностях logrt вот тут https://www.zabbix.com/documentation...s/zabbix_agent
Других возможностей нет. Если они очень нужны - пишите в ZBXNEXT.Last edited by Hamardaban; 17-03-2021, 14:21.
-
-
-
Если запись в эти логи идёт последовательно, т.е. новый файл создаётся (и запись в него начинается) только после того как закончилась запись во все предыдущие файлы, то проблемы нет: это нормальная ротация логов, и logrt это поддерживает.А возможно ли сделать один элемент данных "logrt" в котором агент будет проверять все новые создаваемые логи в названии которых будет фигурировать имя "dispatcher_test_atol", но числа до названия и после будут изменяться когда будет создаваться новый лог.. Единственные символы которые не меняются в названии лога это "dispatcher_test_atol"
Проблема будет лишь в том случае, когда несколько лог-файлов, попадающих под один шаблон, будут активны одновременно, т.е. либо запись в них будет идти параллельно, либо попеременно: то в один, то в другой, то снова в первый. Дело в том, что для каждого элемента данных logrt на сервере сохраняются некоторые метаданные, которые не видны "снаружи" (такие как время последней модификации файла и его размер). И если эти параметры у реального файла вдруг изменятся в меньшую сторону, то для агента Zabbix это признак того, что файл был пересоздан и его надо перечитать с самого начала. Поэтому в описанной ситуации (когда активны одновременно два файла) у вас гарантированно будут проблемы: агент будет постоянно переключаться между ними и каждый раз перечитывать файл с самого начала.
На приведённом Вами скриншоте я вижу, что у трёх файлов из пяти - одинаковое время последней модификации (15:04), поэтому и предполагаю, что они "активны" одновременно. Если я ошибаюсь (и новый файл создаётся только после закрытия предыдущего), то всё в порядке. Но если же моё предположение верно, то для каждого из них нужен свой элемент данных logrt. Если переменные части имён файлов не статичны (например, включают дату-время или номер процесса, который мы не знаем заранее), то помочь в создании нужных элементов данных и триггеров может технология LLD (ссылка), но для вашего случая готового решения нет и придётся писать свои скрипты для этого.Last edited by Kos; 17-03-2021, 16:44.Comment
Comment