アクセスログを時間別に出力する
こんにちは。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ページを覗いてみて試してみてください。
それでは!