LINUX.ORG.RU
ФорумAdmin

Awk mysql-slow log

 


0

1

Уважаемые пользователи форума, помогите с объединением строк из mysql slow log в одну строку. Я пытался использовать awk, но у меня ничего не вышло

Как это представлено в логе

# Time: 2021-03-05T09:29:22.599655Z

# User@Host: user[user] @ [192.168.0.31] Id: 1146310

# Query_time: 2.273473 Lock_time: 0.000404 Rows_sent: 100 Rows_examined: 354107

SET timestamp=1614936562;

...SLOW QUERY HERE...

нужно получить в одну строку

# Time: 2021-03-05T09:29:22.599655Z # User@Host: user[user] @ [192.168.0.31] Id: 1146310 # Query_time: 2.273473 Lock_time: 0.000404 Rows_sent: 100 Rows_examined: 354107 SET timestamp=1614936562; ...SLOW QUERY HERE...

и так весь лог



Последнее исправление: trefeeevka (всего исправлений: 3)

Ответ на: комментарий от slowpony

Для дальнейшего анализа в Zabbix У меня в заббикс не получается вывести строку Query time и сам запрос одновременно

trefeeevka
() автор топика
Ответ на: комментарий от trefeeevka

Кто-то сможет помочь? Не задавая вопросы зачем мне это?

trefeeevka
() автор топика
Ответ на: комментарий от vel

Благодарю за ответ, это было бы решением, но сам запрос может быть на несколько строк, до символа «;»

awk ‘/^# Time:/ { getline T1; getline T2; getline T3; getline T4; print T1,T2,T3,T4;}’ /var/log/mysql/mysql-slow.log

User@Host: user[user] @ [192.168.0.31] Id: 1193299 # Query_time: 4.512968 Lock_time: 0.000231 Rows_sent: 20 Rows_examined: 736484 SET timestamp=1614946986; select

User@Host: user[user] @ [192.168.0.31] Id: 1193331 # Query_time: 4.717133 Lock_time: 0.000243 Rows_sent: 20 Rows_examined: 736484 SET timestamp=1614946991; select

trefeeevka
() автор топика
Ответ на: комментарий от trefeeevka

В чем проблема?

В awk есть циклы. Читать через getline до тех пор пока не встретиться строка с ';'

искать можно через index() или match()

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

Проблема в том, что я не знаю как это написать

trefeeevka
() автор топика
Ответ на: комментарий от vel

Как сделать? Вообще не понимаю

awk ‘/^# Time:/ { getline T1; getline T2; getline T3; print T1,T2,T3; !NF{getline T4; if ( match(n, /^[source/) ) {print T4}}}’ /var/log/mysql/mysql-slow.log

trefeeevka
() автор топика
Ответ на: комментарий от trefeeevka

Охренеть!

Догадаешься что этот код делает и куда эту конструкцию нужно вставить?

while(!index(T4,";")) {getline T5; T4=T4 "" T5;};
vel ★★★★★
()
Ответ на: комментарий от vel

Спасибо, если бы я мог сам написать, я бы не писал на форуме посты

trefeeevka
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.