Как составить файл (или аналогичный) для указанного интервала? - PullRequest
2 голосов
/ 15 июня 2009

Я работаю над добавлением некоторых предупреждений nagios в нашу систему, некоторые из которых будут отслеживать частоту определенных событий, попадающих в журналы nginx / apache (или анализировать значения из этих журналов). То, как я подошел к проблеме, так Это простой сценарий оболочки, который в течение 25 секунд сохраняет журнал во временном файле, убивает процесс, а затем запускает awk и т. д. над временным файлом. Цель в том, чтобы получить «образец» журнала за 25 секунд, а затем выполнить анализ.

Это не совсем идеально, очевидно, из-за увеличения дискового ввода-вывода из-за этих временных файлов - что мне действительно нужно, так это «расширенный» tail -f, который завершит канал чисто после определенного количества секунд. То есть:

tail -f --interval '5 секунд' | grep "/ serve"

Заведет журнал на 5 секунд и покажет мне все строки, которые имеют "/serve".

Я мог бы представить, что могу сделать сценарий ruby, чтобы сделать это довольно быстро, но я хотел убедиться, что не было более неаккуратного способа сделать это. На высоком уровне, есть ли лучший способ взять выборки из журнала за последние N секунд (и нет, я бы не хотел разбирать временные метки и т. Д.)

Ответы [ 3 ]

4 голосов
/ 15 июня 2009

Нашел решение. "apt-get install timeout":)

Редактировать: На самом деле это убивает хвост, не вызывает его изящного выхода, поэтому мы теряем всю трубу. То, что я хочу работать, это:

таймаут -15 5 хвост -f /mnt/log/nginx/nginx-access.log | grep '/ javascripts' | wc -l

Чтобы узнать, сколько файлов javascript было обработано за последние 5 секунд и т. Д.

1 голос
/ 15 июня 2009

Немного другой подход:

(tail -f /var/log/messages & P=$! ; sleep 5; kill -9 $P) | grep /serve
0 голосов
/ 15 июня 2009

Я думаю, что, как сам пользователь Nagiios, вы не хотите, чтобы зондирующие процессы останавливались на произвольное количество времени. В худшем случае это заставит Nagios проверять другие вещи реже или «сковывает» проверки.

А как насчет скрипта, который выполняется быстро (мгновенно) и анализирует последние несколько строк файла, возвращая только интересные вещи с отметкой времени позже указанного времени?

...