維持・保守・運用
リナックス 分類

Apache アクセスログの解析手順及びコマンド

投稿者情報

  • 運営局 投稿
  • 投稿日

コンテンツ情報

本文内容

Apacheのアクセスログを解析する際に便利なコマンドを解説します。
CentOS や Ubuntu であれば、次のような操作がコマンドだけで可能です。

  • 特定の条件で絞り込む
  • 必要なカラムのみを抜き出す
  • 並べ替えや集計を行う


 

grep でアクセスログを検索

 

ログを検索する際の基本となるコマンドです。
指定したキーワードが含まれる行 だけをピックアップすることができます。

例えば 404 エラーとなったログだけを抽出する場合は、以下のコマンドとなります。
アクセスログの格納場所はサーバーによって異なると思いますので、サーバーに合わせて適宜修正してください。

$ grep "404" /var/log/httpd/access_log

 

特定のIPアドレスを抽出したい場合も、grep コマンドで絞り込めます。

 

$ grep "192.168.14.1" /var/log/httpd/access_log

 

awk でアクセスログの切り取り

 

 

アクセスログ1行の中から、必要な部分だけを切り出せるコマンドです。
以下のアクセスログを例として説明します。

192.168.143.1 - - [15/Mar/2021:21:26:04 +0900] "GET /hoge HTTP/1.1" 200 103 "-" "Mozilla/5.0"
192.168.22.77 - - [15/Mar/2021:21:29:31 +0900] "GET /fuga HTTP/1.1" 301 103 "-" "Mozilla/5.0"

 

 

IP アドレスだけを抽出する場合は以下のコマンドです。
分かりづらいですが $1 で1番目の列を指定して表示しています。

 

$ awk '{print $1}' access_log
192.168.143.1
192.168.14.77

 

同様に、レスポンスコードだけを抽出したい場合は以下のコマンドです。
スペース区切りで数えるため、9列目を指定すれば OK です。

 

$ awk '{print $9}'
200
301

 

sort, uniq, wc でアクセスログを集計

 

集計に便利な3つのコマンドです。

  • wc -l: 行数を数えるコマンド
  • sort: テキストを並べ替えるコマンド
  • uniq -c: 重複している行を数えるコマンド

 
grep や awk で抽出したログと組み合わせると、容易に集計できます。
以下は、特定IPアドレスからのアクセスを数える例です。(結果: 31行)

 

$ grep "192.168.143.1" /var/log/httpd/access_log | wc -l
31

 

 

応用編として、sort と uniq -c を組み合わせると更に便利になります。
以下のコマンドは、ステータスコードごとに回数を集計しています。

$ awk '{print $9}' /var/log/access_log | sort | uniq -c
422 200
 35 301
 19 404

 

 


grepawksortuniqwc は使う機会も多く、覚えておいて損はないコマンドです。

Linux のコマンド操作を活用し、便利で楽にアクセスログを集計してみてください。

関連資料

NEWS/講座

新着投稿


  • 投稿がありません。

新着書込み


  • 書込みがありません。
アラート 0