kuniku’s diary

はてなダイアリーから移行(旧 d.hatena.ne.jp/kuniku/)、表示がおかしな箇所はコメントをお願いします。記載されている内容は日付およびバージョンに注意してください。直近1年以上前は古い情報の可能性が高くなります。

httpd ログでのURLでの1秒、10秒以上かかっている処理

http://koduki.hatenablog.com/entry/2012/11/24/171534
を参考にしても、フォーマットが違っていて独自にアレンジ(無理矢理感)

  • ログは、以下のような 項目:値 半角スペース のようなフォーマット
tail -n 10 ssl_access_log
request_time:20/Jun/2018:11:32:10 +0900 ip:1.75.4.182 status:200 method:GET size:369 path:/images/xx.gif query: protocol:HTTP/1.1 referer:https://domain/xx user-agent:Mozilla/5.0 (Linux; Android 6.0.1; SO-02G Build/23.5.B.0.396) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36 response_time:432
request_time:20/Jun/2018:11:32:10 +0900 ip:1.75.4.182 status:200 method:GET size:149 path:/images/xx.gif query: protocol:HTTP/1.1 referer:https://domain/xx user-agent:Mozilla/5.0 (Linux; Android 6.0.1; SO-02G Build/23.5.B.0.396) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36 response_time:570
request_time:20/Jun/2018:11:32:11 +0900 ip:106.158.130.37 status:200 method:POST size:13939 path:/answer/test query: protocol:HTTP/1.1 referer:https://domain/xx user-agent:Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 response_time:81268
request_time:20/Jun/2018:11:32:11 +0900 ip:126.33.212.235 status:200 method:POST size:14317 path:/q/test2 query: protocol:HTTP/1.1 referer:https://domain/xx user-agent:Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 response_time:41819
  • 処理時間は、末尾の項目、抽出したpathを表示したい、処理日時を表示したい
  • 10秒以上を抽出
cat ssl_access_log   | awk '$NF {print $NF,$7,$1}' | awk -F":" 'int($2) > 10000000 {print $2,$3,$4,$5,$6,$7}' |grep "answer"
  • 抽出結果、2018-06-20の 03時25分33秒 では、 19324547 の処理時間かかっていた
19324547 path /answer/test request_time 20/Jun/2018 03 25 33
15474176 path /answer/test request_time 20/Jun/2018 03 25 37
  • やってることは

catして、awkで末尾の項目を取り出し、そして末尾と結果表示に必要な項目を printし、
パイプで次の処理としてawkで「:」で分割して、
分割した値の2つ目をintで数値化して比較、その結果をprintして、grepして「path:xxx」で限定したいリクエストパスにする