Bash: Посчитать количество событий в секунду (RPS)

Не всегда есть возможность анализировать журналы веб-сервера во внешней системе, в статье рассказан способ как узнать количество запросов в секунду (событий в секунду) с использованием встроенных возможностей Bash.

Частная задача когда необходимо оценить количество новых записей в лога файле в секунду, при этом нет нет необходимости или возможности разворачивать отдельный сервер для анализа логов.

Linux

RPS (Requests Per Second) — количество запросов за одну секунду.

Использование perl

perl является инструментом по умолчанию встроенным во множество дистрибутивов Linux.

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

tail -f /var/log/logfile|perl -e 'while (<>) {$l++;if (time > $e) {$e=time;print "$l\n";$l=0}}'

Где /var/log/logfile путь до файла логов, так же возможно использовать маску.

Пример работы

tail -f /var/log/logfile|perl -e 'while (<>) {$l++;if (time > $e) {$e=time;print "$l\n";$l=0}}'

Использование встроенных возможностей bash

В bash есть все необходимые функции для анализа журналов, правда команда выглядит не столь "элегантно", но при этом довольно гибкая

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; }

Пример вывода

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; }

Добавить комментарий