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