Apacheログで1〜3秒の応答時間を見つける必要があります

Apacheログで1〜3秒の応答時間を見つける必要があります

ApacheログファイルでAPI応答時間を見つける必要があります。応答時間と同様に1~2秒、2~3秒程度かかります。$6は応答時間で、値はマイクロ秒単位です。

次のコマンドを使用しようとしていますが、出力は常に同じです。

grep 17/Sep/2016:10 /access.log| awk '{print ($6 > 1000000 && 2000000 > $6)}' | wc -l

ベストアンサー1

この質問は、例としていくつかの行を追加するとaccess.logより明確になります。とにかく、awkコマンドは値に関係なく1行を印刷するので、$6行数を数えるとwc -lgrepによってのみ決定される結果が得られます。

$62つの異なる値間の行数を計算するには、次のように書くことができます。

grep 17/Sep/2016:10 /access.log | awk '$6 > 1000000 && 2000000 > $6' | wc -l

ただし、このパイプラインはやや非効率的です。次のように、単一のawkコマンドを組み合わせるのがほぼ常に優れています。

awk '/17\/Sep\/2016:10/ && $6 > 1000000 && 2000000 > $6 {c++} END{print c}' access.log

境界を含めるには、次のようにします。

grep 18/Sep/2016:11 /access.log | awk ' $6>=1000000 && $6<=2000000' | wc -l

または等しく

awk '/18\/Sep\/2016:11/ && $6>=1000000 && $6<=2000000 {c++} END{print c}' access.log

おすすめ記事