LINUX.ORG.RU
ФорумAdmin

Анализировать лог файл и выполнять действия при нахождении определенных строк?

 


0

2

А есть готовое решение под подобную задачу? Надо делать регексп по строке в лог файле, получать последнее значение, сравнивать его с предыдущим сохраненным и исходя из результата выполнять команды...при выполнении команд надо следить чтобы в исходном лог файле новых ошибок не появилось.

Начал писать «простой костыль на bash», но он разросся до 100 строк и имеет в своем составе вложенные циклы, что как по мне уже «плохой костыль на bash».

P.S. Не предлагайте переписать на perl/python/lua/c++/etc чукча не программист.

UDP: Пока остановился на том что есть...


monit, как вариант. Разве что дополнить скрипт логикой сравнения с прошлым значением.

YAR ★★★★★ ()

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

А так выглядит как

tail -f logfile |egrep ‘regexp’| while read; do
  if [ “$REPLY” -neq “$PREV_REPLY” ]; then
    do_something &;
  fi;
  PREV_REPLY=“$REPLY”
done
cobold ★★★★ ()
Последнее исправление: cobold (всего исправлений: 1)

Если вы можете написать скрипт на bash на 100 строк с циклами, то с другими скриптовыми языками уж точно справитесь.

Leupold_cat ★★★★ ()
Ответ на: комментарий от Leupold_cat

Изначально было не так много строк (ну может 20), но потом начались проверки данных, проверки наличия файлов (и то что они пусты/не пусты), потом оказалось что в логах могут быть события которые появляются при определенных условиях и их тоже надо обрабатывать (так появились циклы в циклах) и чем дальше пишу тем больше подобного наростает, хотелось бы сбросить на какую-нибудь утилитку все эти дополнительные проверки

Kolins ()
Ответ на: комментарий от cobold

Вот примерно с такого у меня и начиналось, только не в реалтайме, а по cron должен был дергаться раз в X минут (такое ТЗ)

Kolins ()

Какой то адский велосипед. Если надо отслеживать состояния, то это уже база данных нужна.

Bers666 ★★★★★ ()
Ответ на: комментарий от Bers666

Полностью согласен, но программиста который исправит код пока нет и надо пару месяцев протянуть на велосипеде.

Kolins ()

В порядке предположения. Есть syslog-ng. Регулярные выражения умеет, какие-то скрипты умеет, в базу умеет. Может быть можно приспособить.

AS ★★★★★ ()
Ответ на: комментарий от AS

ты бы еще ELK предложил. там и поддержка обращения к предыдущим строчкам лога есть.

Bers666 ★★★★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей