Рейтинг:0

Фильтрация блоков лог-вывода из лог-потока

флаг gb

Вот моя задача:

У меня есть исходный поток вывода живого журнала из процесса обмена сообщениями. Многие результаты не имеют для меня значения, но есть разделы, которые я хочу собрать и оценить отдельно. Эти блоки начинаются с "---BEGIN Request---" в конце отдельной строки, которая начинается с даты/времени, имени хоста и процесса[pid]: . И соответственно блок заканчивается "---END Request---" в конце другой строки. Между этими двумя я хочу запечатлеть.

Мои попытки sed с файлом выдержки из журнала не увенчались успехом. Я подошел к этому, пытаясь удалить все, что находится за пределами моих точек фокусировки, но я все равно получил каждую линию. Может кто увидит мою ошибку:

sed -r '/---END Запрос---$/{
   $!{ Н 
     s/---END Request---.?\n([^:]+: )---BEGIN Request---$/---END Request---\n\1---BEGIN Request- --/
     т суб-хит
     :суб-мисс
     п          
     Д          
     :под-хит
   }    
 } 'sample.log

Я думаю, что awk может быть альтернативным инструментом для использования здесь, но я не изучал его производительность для работы с потоками журналов в реальном времени.

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

Вот мой упрощенный образец журнала для тестирования. Я анонимизировал и удалил некоторые вещи.

20 января 14:20:47 host-230-17-17-10 обработчик токенов [4230]: --- BEGIN Request ---
20 января, 14:20:47 host-230-17-17-10 tokenhandler[4230]: PUT /token/connect HTTP/2.0
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: Host: host-230-17-17-10
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: Принять: */*
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: Accept-Encoding: gzip, deflate, br
20 января, 14:20:47 host-230-17-17-10 tokenhandler[4230]: Accept-Language: de-de
20 января, 14:20:47 host-230-17-17-10 tokenhandler[4230]: Cache-Control: no-cache
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: Content-Length: 306
20 января, 14:20:47 host-230-17-17-10 tokenhandler[4230]: Content-Type: text/xml
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: User-Agent: TokenHandler/3.2
20 января 14:20:47 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: <?xml version="1.0" encoding="UTF-8"?>
20 января, 14:20:47 host-230-17-17-10 tokenhandler[4230]: <!DOCTYPE и так далее. Намеренно обрезано здесь для askubuntu
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: ---END Request---
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: --- BEGIN Response---
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: HTTP/1.1 200 OK
20 января 14:20:47 host-230-17-17-10 tokenhandler [4230]: соединение: закрыть
20 января 14:20:47 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: ---END Response---
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: transport=http method=PUT status=200 proto=HTTP/2.0 host=10.17.17.240 user_agent=TokenHandler/3.2 path=/token/ соединять
20 января 14:20:48 host-230-17-17-10 tokenhandler [4230]: --- BEGIN Request ---
20 января 14:20:48 обработчик токенов host-230-17-17-10 [4230]: POST /v3/token/033aaed70bdce765ace3223a5dc5 HTTP/1.1
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Host: host-230-17-17-10
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Соединение: закрыть
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Авторизация: Basic bWljcm9tZG06MjVuWjdWV3BjMkZaalRkZlRNVTNzaWdyS2xwZlRsVQ==
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Соединение: закрыть
20 января, 14:20:48 host-230-17-17-10 tokenhandler[4230]: Content-Length: 0
20 января 14:20:48 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Request---
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: level=info component=tknzr method=add udid=033aaed70bdce765ace3223a5dc5 err=null принял=145.419185ms
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: --- BEGIN Response---
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: HTTP/1.1 200 OK
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Соединение: закрыть
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Content-Type: application/json; кодировка = utf-8
20 января 14:20:48 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:48 хост-230-17-17-10 tokenhandler[4230]: {
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: «статус»: «успех»,
20 января 14:20:48 обработчик токенов host-230-17-17-10 [4230]: "notification_id": "FC88CDE8-D3AD-4607-602F-6005E70E83E2"
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: }
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Response---
20 января, 14:20:48 host-230-17-17-10 tokenhandler[4230]: transport=http method=POST status=200 proto=HTTP/1.1 host=10.17.17.230 user_agent=path=/v3/token/033aaed70bdce765ace3223a5dc5
20 января 14:20:48 host-230-17-17-10 tokenhandler [4230]: --- BEGIN Request ---
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: PUT /token/connect HTTP/2.0
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Host: host-230-17-17-10
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Принять: */*
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Accept-Encoding: gzip, deflate, br
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Accept-Language: en-US,en;q=0.9
20 января, 14:20:48 host-230-17-17-10 tokenhandler[4230]: Cache-Control: no-cache
20 января, 14:20:48 host-230-17-17-10 tokenhandler[4230]: Content-Length: 306
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Content-Type: text/xml
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: User-Agent: TokenHandler/3.2
20 января 14:20:48 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: <?xml version="1.0" encoding="UTF-8"?>
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: <!DOCTYPE и так далее. Намеренно обрезано здесь для askubuntu
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Request---
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: --- BEGIN Response---
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: HTTP/1.1 200 OK
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Соединение: закрыть
20 января 14:20:48 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Response---
Рейтинг:0
флаг in

В потоке (живом журнале) вы можете использовать опцию sed -u (небуферизованный)

Вы можете дополнительно использовать |вырезать -c55-10000 в конце команды вырезать дату, имя хоста и т.д..

Andreas avatar
флаг gb
Привет Денис, мне нравится небуферизованный параметр. Ваша идея использовать cut с фиксированными позициями не сработает, если pid (идентификатор процесса) в квадратных скобках содержит больше или меньше цифр, чем 4. Я уже знаю, что использовал бы `cut -d':' -f 4- ` для добиться этого.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.