私はいくつかのnagiosアラートをシステムに追加することに取り組んでいます-そのうちのいくつかは、nginx / apacheログにヒットする(またはそれらのログから値を解析する)特定のイベントのレートを監視します。これまでの問題にアプローチした方法は単純なシェル スクリプトでログを 25 秒程度一時ファイルに末尾表示し、プロセスを強制終了してから、一時ファイルに対して awk などを実行します。ここでの目標は、25 秒間にわたってログ「サンプル」を取得し、分析を実行することです。
これらの一時ファイルが原因でディスク IO が増加するため、これは明らかに理想的ではありません。私が本当に欲しいのは、特定の秒数の後にパイプをきれいに終了させる「強化された」テール -f です。すなわち:
tail -f --interval '5 秒' | grep "/サーブ"
ログを 5 秒間追跡し、「/serve」を含むすべての行を表示します。
Ruby スクリプトを作成してこれをかなり迅速に行うことができると思いますが、これを実現するためのより unixy な方法がないことを確認したかったのです。大まかに言えば、過去 N 秒からログのサンプルを取得するより良い方法はありますか (いいえ、タイムスタンプなどを解析したくありません)。