Хинт: подсчет количества новых строк в файле за секунду или другой промежуток времени. Количество запросов в секунду к какому-либо демону (nginx?)
Много раз наблюдал, когда системный администратор для того, чтобы узнать, сколько запросов приходит ему на nginx за секунду, сидит и выгрепывает определенную секунду из лога, после чего делает | wc -l. Не знаю, зачем так извращаться, если есть pv.
Вообще pv позволяет посчитать, сколько строчек в секунду появляется в файле (если быть занудой — то сколько строчек в секунду подается ему на STDIN). Легко предположить, что при правильном access.log’e у nginx’a количество новых строчек == количеству отправленных ответов на запросы. А при ещё более правильном — количество запрошенных страниц.
Вообще эту штуку можно натравить на любой лог, фантазируйте сами.
Для начала поставим pv:
<strong>root@debian:~# aptitude install pv</strong>
Самый простой пример:
<strong>root@debian:~# tail -f /var/log/nginx/access.log | pv -lr</strong>
Где-то там внизу у нас замелькают какие-то цифры. При желании их можно разглядеть. Плюс этой команды в том, что мы можем одновременно видеть, что происходит в логе.
Представим, что нам не нужно смотреть, что происходит в самом логе. Сделаем так:
<strong>root@debian:~# tail -f /var/log/nginx/access.log | pv -lr >/dev/null</strong>
[3.94/s ]
Всё хорошо, но такая статистика — цифры в вакууме. Значение будет скакать от нуля до пикового.
Нам нужна усредненная статистика, по количеству строк в секунду, за последние 30 секунд:
<strong>root@debian:~# tail -f /var/log/nginx/access.log | pv -lr -i 30 >/dev/null</strong>
[0.933/s ]
Первое значение появится через 30 секунд, потом каждые 30 секунд будет обновляться. Такое значение колеблется намного меньше и ему уже можно верить при озвучивании цифр.
Запустив такую штуку в скрине с -i 86400 мы получим усредненное значение за сутки.
Ну и напоследок. Вам никто не запрещает использовать grep. Например, чтобы отследить количество обращений к одной странице или количество хитов с определенного адреса.
Делать это просто:
<strong>root@debian:~# tail -f /var/log/nginx/access.log | grep 192.168.0.10 | pv -lr -i 30 >/dev/null</strong>
[0.125/s ]
Здесь мы видим, что хост 192.168.0.10 последние 30 секунд обращался к нам с частотой 0.125 запроса в секунду.
Или так:
<strong>root@debian:~# tail -f /var/log/nginx/access.log | grep ""-"" | pv -lr -i 30 >/dev/null</strong>
[137.124/s ]
137.124 запроса в секунду с пустым реферером. Имеет смысл запретить на время коннекты с пустым реферером, не правда ли?
И grep -v тоже никто не запрещает использовать:
<strong>root@debian:~# tail -f /var/log/nginx/access.log | grep -v "/index.php" | pv -lr -i 30 >/dev/null</strong>
[15.541/s ]
Здесь мы видим 15.541 запроса в секунду к страницам, кроме index.php (в т.ч. и без index.php?чтототам).
Пользуйтесь на здоровье и поменьше вам ddos’ов, по которым нужно писать отчеты.