Sphinx query log parser – анализ query performance

Написал простой скриптик на awk для парсинга Sphinx query.log файла.

Парсинг всего файла:

CODE:
  1. awk '{ s += $6 } END { print "seconds: ", s, " average: ", s/NR, " queries: ", NR }' query.log

Парсинг за конкретный период, например за второе Июня:

CODE:
  1. awk '{ if($2=="Jun" && $3==2) {s += $6; r++} } END {print "total seconds: ", s, "average: ", s/r, " total queries: ", r}' query.log

В приведенных скриптах $N - это номер строки в лог файле.

NR - это общее количество записей в файле разделенных переводом строки.

Пример лог файла:

[Wed Jun  2 11:20:52.379 2010] 0.002 sec [ext2/0/rel 2024 (0,10)] [wordpress] spectrum
[Wed Jun  2 11:20:52.384 2010] 0.003 sec [ext2/0/rel 2 (0,1000) @post_type] [wordpress] spectrum
[Wed Jun  2 11:20:52.709 2010] 0.002 sec [ext2/0/rel 963 (0,10)] [wordpress] tin
[Wed Jun  2 11:20:52.713 2010] 0.002 sec [ext2/0/rel 2 (0,1000) @post_type] [wordpress] tin
[Wed Jun  2 11:20:52.997 2010] 0.003 sec [ext2/0/rel 1154 (0,10)] [wordpress] xi
[Wed Jun  2 11:20:53.004 2010] 0.004 sec [ext2/0/rel 2 (0,1000) @post_type] [wordpress] xi
[Wed Jun  2 11:20:53.029 2010] 0.003 sec [ext2/0/rel 1945 (0,10)] [wordpress] nasa
[Wed Jun  2 11:20:53.035 2010] 0.003 sec [ext2/0/rel 2 (0,1000) @post_type] [wordpress] nasa
[Wed Jun  2 11:21:09.359 2010] 0.005 sec [ext2/0/rel 22308 (0,10)] [wordpress] september

На выводе получится:

seconds:  566.738  average:  0.00948642  queries:  59742

Надеюсь это краткое описание языка awk поможет вам написать парсер для своих лог файлов.

Спасибо!

Leave a Reply