Я работаю над добавлением некоторых оповещений nagios в нашу систему, некоторые из которых будут отслеживать скорость определенных событий, попавших в журналы nginx/apache (или анализируя значения из этих журналов). Как я подошел к проблеме до сих пор с простым хвостом скрипта оболочки - в течение 25 секунд или около того во временный файл, убивая процесс, а затем запуская awk и т. д. во временном файле. Целью здесь является получение журнала «выборки» за 25 секунд, а затем анализ.Как связать файл (или аналогичный) для заданного интервала?
Это меньше, чем идеальное, очевидно, из-за увеличения объема ввода-вывода из-за этих временных файлов - то, что мне действительно нужно, - это «улучшенный» хвост -f, который будет прекращать работу канала через определенное количество секунд. Т.е.:
tail -f --interval '5 seconds' | grep "/ serve"
Задержит журнал в течение 5 секунд и покажет мне все строки, которые имеют «/ serve».
Я бы предположил, что могу взломать рубиновый скрипт, чтобы сделать это довольно быстро, но я хотел убедиться, что для этого не было более простого способа. На высоком уровне есть лучший способ взять образцы журнала с последних N секунд (и нет, я бы предпочел не анализировать метки времени и т. Д.)
таймаут -s15 5 tail -f /mnt/log/nginx/nginx-access.log | grep '/ javascripts' | wc -l – diyism