Автор Тема: bash скрипт для бесконечного парсинга лога  (Прочитано 5138 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн zCirill

Добрый день.

Есть астериск на котором летит debug в лог. В день примерно 1.2-2.0 гига.
Надо отлавливать определенные события и делать с ними всякое.

Корректно ли сделать tail -f с проверкой if прилетающих строк на события?

типа tail -f | while read n; do
             if [ парсинг строки совпал с error ]; then blabla
             elseif [ парсинг строки совпал и тд

Или правильнее ротировать лог каждые пять минут, проверять получившийся кусок и проверять следующий?
 

Оффлайн Malaheenee

Re: bash скрипт для бесконечного парсинга лога
« Ответ #1 : 09 Ноября 2013, 07:06:01 »
Можно воспользоваться watch, если строки с определенными условиями необходимо накапливать.
Все мы где-то, когда-то и в чем-то были новичками.
 

Оффлайн zCirill

Re: bash скрипт для бесконечного парсинга лога
« Ответ #2 : 09 Ноября 2013, 08:48:30 »
Можно воспользоваться watch, если строки с определенными условиями необходимо накапливать.
не, мне нужно реагировать на события "отображенные" в логи.

увидел что регистрация отвалилась в таком то транке - делай то то. в другом транке - делай это, два телефона отвалилось - смс туда то.
 

Оффлайн Malaheenee

Re: bash скрипт для бесконечного парсинга лога
« Ответ #3 : 09 Ноября 2013, 09:28:23 »
Так логов за 10 секунд может накопиться больше чем на 10 строк. Лучше "покусочный" анализ.
Мы бы для такой задачи воспользовались perl - проще получится. Открытие каждые 5 минут, индекс текущей позиции в переменной, переход на нужную позицию, читаем строки в массив, парсим, выполняем условия, обновили переменную-индекс, закрыли...
« Последнее редактирование: 09 Ноября 2013, 09:32:34 от Malaheenee »
Все мы где-то, когда-то и в чем-то были новичками.
 

Оффлайн smallNix

Re: bash скрипт для бесконечного парсинга лога
« Ответ #4 : 11 Ноября 2013, 00:06:53 »
А не проще на С/С++ написать парсер и гонять его в режиме демона? Лог не пустой - парсим, ели нет данных спим секунду.  :-\
Кто-то же должен что-то делать...
 

Оффлайн zCirill

Re: bash скрипт для бесконечного парсинга лога
« Ответ #5 : 11 Ноября 2013, 20:23:10 »
А не проще на С/С++ написать парсер и гонять его в режиме демона? Лог не пустой - парсим, ели нет данных спим секунду. 

возможно проще, если бы я умел писать на C/C++  :)

вообщем сделал "каркас", работает.

делаем пид для последующего убийства скрипта, функции делающие что то, и в цикле проверям строку на совпадения

echo $$ > /var/run/log.analyser.pid

SLC () {
logger 'CONNECTION'
}

SLD () {
logger 'DISCONNECTED'
}

tail -f /var/log/asterisk/full | while read n; do
if [[ $n =~ connection$ ]] ; then SLC && continue
elif [[ $n =~ disconnected$ ]] ; then SLD
fi;

done


работает на ура. периодически прилетает в лог прилетает 20к строк (последствия дебага перезагрузки приложения) переваривает за 5 секунд с загрузкой одного ядра corei5 3200 ghz, на 46 процентов
logrotate перед вращением /var/log/asterisk/full убивает скрипт по пиду, потом запускает скрипт снова.

ЗЫ
регулярки сила, сначала я сделал проверки через echo лала
   if [ "`echo $n | grep -o 'connection$'`" = "connection" ]; then SLC && continue
   elif [ "`echo $n | grep -o 'disconnected$'`" = "disconnected" ]; then SLD
и в таком варианте 20к строк лопатит за 50 секунд. что весьма огорчительно (учитывая, что в рабочем скрипте будет 7 проверок), но потом мне показали как сравнивать через встроенные средства bash - и хурра, шевелится )
 

Оффлайн rayanAyar

Re: bash скрипт для бесконечного парсинга лога
« Ответ #6 : 12 Ноября 2013, 04:24:06 »
есть ещё "tail -F"
 

Оффлайн zCirill

Re: bash скрипт для бесконечного парсинга лога
« Ответ #7 : 12 Ноября 2013, 12:26:32 »
есть ещё "tail -F"

век живи, читай мануал. спасибо.
 

Теги:
     

    bash

    Автор MERCURY

    Ответов: 3
    Просмотров: 1775
    Последний ответ 27 Июля 2015, 13:22:41
    от Malaheenee
    получить все последующие строки после 10 совпадения bash

    Автор zCirill

    Ответов: 1
    Просмотров: 1432
    Последний ответ 27 Июня 2016, 05:33:00
    от endru
    Несколько сценариев одновременно (bash)

    Автор seisros

    Ответов: 5
    Просмотров: 8459
    Последний ответ 31 Августа 2013, 04:17:10
    от smallNix
    Помогите собрать код резервного копирования на bash

    Автор Tesla

    Ответов: 19
    Просмотров: 4061
    Последний ответ 08 Февраля 2015, 21:39:13
    от Tesla
    арифметика с временем на bash [РЕШЕНО]

    Автор A_STAS

    Ответов: 8
    Просмотров: 8008
    Последний ответ 02 Апреля 2013, 21:47:06
    от A_STAS