Не всегда есть возможность анализировать журналы веб-сервера во внешней системе, в статье рассказан способ как узнать количество запросов в секунду (событий в секунду) с использованием встроенных возможностей Bash.
Частная задача когда необходимо оценить количество новых записей в лога файле в секунду, при этом нет нет необходимости или возможности разворачивать отдельный сервер для анализа логов.
RPS (Requests Per Second) — количество запросов за одну секунду.
Использование perl
perl является инструментом по умолчанию встроенным во множество дистрибутивов Linux.
Для того что бы получить количество запросов в секунду, необходимо использовать команду ниже
1 | tail -f /var/log/logfile|perl -e 'while (<>) {$l++;if (time > $e) {$e=time;print "$l\n";$l=0}}' |
Где /var/log/logfile путь до файла логов, так же возможно использовать маску.
Пример работы
Использование встроенных возможностей bash
В bash есть все необходимые функции для анализа журналов, правда команда выглядит не столь "элегантно", но при этом довольно гибкая
1 | tail -f /var/log/logfile| { count=0; old=$(date +%s); while read line; do ((count++)); s=$(date +%s); if [ "$s" -ne "$old" ]; then echo "$count lines per second"; count=0; old=$s; fi; done; } |
Пример вывода