テックブログ

アクセスログを時間別に出力する

こんにちは。BNです。

今回はアクセスログ調査に使えるちょっぴり便利なワンライナーメモをお伝えします。

ログ調査に便利なワンライナー

grep -o "25/Jul/2023:[0-9]\{2\}" /var/log/httpd/access_log | sort | uniq -c

このワンライナーを通常のApacheアクセスログに対して実行すると、時間別のリクエスト数を得られます。

199 25/Jul/2023:03
216 25/Jul/2023:04
223 25/Jul/2023:05
212 25/Jul/2023:06
220 25/Jul/2023:07
217 25/Jul/2023:08
222 25/Jul/2023:09
298 25/Jul/2023:10
433785 25/Jul/2023:11
407811 25/Jul/2023:12
457997 25/Jul/2023:13
388996 25/Jul/2023:14
334487 25/Jul/2023:15
89982 25/Jul/2023:16

上記はWEBページにアタックを受けた際のログですが、どの時間帯からアタックを受けたか丸わかりですね。

更に細かく見たい場合はこうなります。

grep -o "25/Jul/2023:16:[0-9]\{2\}" /var/log/httpd/access_log | sort | uniq -c
   4453 25/Jul/2023:16:00
   4293 25/Jul/2023:16:01
   3892 25/Jul/2023:16:02
   7248 25/Jul/2023:16:03
   6674 25/Jul/2023:16:04
   3208 25/Jul/2023:16:05
   5570 25/Jul/2023:16:06
   3422 25/Jul/2023:16:07
   6157 25/Jul/2023:16:08
   5121 25/Jul/2023:16:09
   2336 25/Jul/2023:16:10
   1232 25/Jul/2023:16:11
   1666 25/Jul/2023:16:12
   1988 25/Jul/2023:16:13
   5920 25/Jul/2023:16:14
   7135 25/Jul/2023:16:15
   5814 25/Jul/2023:16:16
   6919 25/Jul/2023:16:17
   7909 25/Jul/2023:16:18
    698 25/Jul/2023:16:19

利用したオプションについて

各grepオプションについては下記をご覧ください。

-o, --only-matching

Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
[]

A bracket expression is a list of characters enclosed by [ and ].  It matches any single character in that list; if the first character of the
list is the caret ^ then it matches any character not in the list.  For example, the regular expression [0123456789] matches any single digit.
{n}
The preceding item is matched exactly n times.

他にもいろいろなオプションがあるので、是非皆さんもgrepのmanページを覗いてみて試してみてください。
それでは!

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください