grepでアクセスログからTPSを出す


■環境

Amazon Linux AMI release 2013.03
grep 2.6.3


WEBサーバーのアクセスログからTPSを出すコマンドです。
ApacheでもNginxでも対応可能です。

アクセスログの時間フォーマットが05/Jul/2018:12:34:56のような形である場合
以下のコマンドでTPSが出ます。
※出力されている時刻フォーマットに合わせて修正してください。

grep -o "05/Jul/2018:[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}" access_log | sort | uniq -c  

ただし、これを24時間分のアクセスログに対して実行すると行数が大変な事になるので
その場合は時分秒のうち「時」を絞るなどして実行した方が良いです。
以下は12時台のログに絞る例です。

grep -o "05/Jul/2018:12:[0-9]\{2\}:[0-9]\{2\}" access_log | sort | uniq -c  

また、正規表現部分を変えればTPS(秒間)ではなくTPM(分間)にすることも可能です。

grep -o "05/Jul/2018:[0-9]\{2\}:[0-9]\{2\}" access_log | sort | uniq -c