本文へスキップ
BecomeCoder

Linuxコマンドコース · 第5章 テキスト処理の実践 · レッスン26

アクセスログを集計する

ブラウザで完結

導入

logs/access.log は「どのIPが・どのメソッドで・どのパスに・どんな結果(ステータス)でアクセスしたか」の記録です。Webサーバーの HTTP ステータスコード(200・403・404。詳しくは※ネットワークコースで扱います)が、ここに実データとして並びます。第3章の万能パターン ... | sort | uniq -c | sort -rn で一発集計しましょう。

説明

まずデータの形を確認します。スペース区切りで「IP メソッド パス ステータス」の4列です。

head -n 3 logs/access.log

4列目(ステータスコード)を取り出し、多い順に集計します。200(成功)がどれだけあり、404403(失敗)がどれだけ混じっているかが見えます。

cut -d " " -f 4 logs/access.log | sort | uniq -c | sort -rn

同じパターンで1列目(IP)を集計すれば、「アクセス元ランキング」になります。攻撃の疑いがある多アクセス元を見つける、といった調査の入口です。

cut -d " " -f 1 logs/access.log | sort | uniq -c | sort -rn

失敗だけを見たいなら grep で絞ります。404 を含む行だけ抜き出してみましょう。

grep 404 logs/access.log

やってみよう

ステータス集計とIP集計を打ち比べて、cut で取り出す列(-f 4-f 1)を変えるだけで別の切り口の集計になることを体感しましょう。grep 404 logs/access.log で失敗アクセスだけを取り出す動きも見てください。

演習

logs/access.log からアクセス元IP(1列目)ごとの件数を数え、多い順に並べてください。

ヒント1を見る

万能パターンの入口を -f 1 にします。

ヒント2を見る

cut -d " " -f 1 logs/access.log | sort | uniq -c | sort -rn

実際に動かしてみよう

下の端末にコマンドを打って Enter を押すと、その場で結果が返ります。本文で出てきたコマンドを実際に試しながら進めましょう(ファイルを消しても「最初からやり直す」で元に戻ります)。

Linux シェル(シミュレート)

ブラウザ内でコマンドを試せる仮想シェルを読み込みます(本物のLinuxカーネルではなく学習用の再現です)。
スクロールして表示された時点でも自動で読み込まれます。