2009-06-15 6 views
1

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

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

tail -f --interval '5 seconds' | grep "/ serve"

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

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

ответ

0

несколько иной подход:

(tail -f /var/log/messages & P=$! ; sleep 5; kill -9 $P) | grep /serve 
2

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

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

timeout -15 5 tail -f /mnt/log/nginx/nginx-access.log | grep '/ javascripts' | туалет -l

Чтобы сказать мне, сколько файлов JavaScript служил в последние 5 секунд и т.д.

+0

таймаут -s15 5 tail -f /mnt/log/nginx/nginx-access.log | grep '/ javascripts' | wc -l – diyism

0

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

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