アクセスログを例に、HTTPステータス集計、URLランキング、時間範囲抽出など“初動対応”を再現する練習問題です。
想定時間:各6〜10分
1) ステータスコードごとの件数を集計する
問題:access.log を読み込み、HTTPステータスコードごとの件数をカウントして表示してください。
▶解答例
awk ‘{print $9}’ access.log | sort | uniq -c | sort -nr
2) 404 エラーの件数を数える
問題:access.log から 404 Not Found の件数だけを集計してください。
▶解答例
grep ‘ 404 ‘ access.log | wc -l
3) 最も多くアクセスされた URL を上位10件表示する
問題:アクセスログの URL部分(7列目) を取り出し、出現回数の多い順に上位10件を表示してください。
▶解答例
awk ‘{print $7}’ access.log | sort | uniq -c | sort -nr | head -n 10
4) 特定の時間帯(10時台)のリクエストだけを抽出する
問題:access.log から 10時台([10:00〜10:59]) のアクセス行だけを取り出してください。
▶解答例
grep ‘[.*10:[0-5][0-9]:’ access.log
5) エラーレベルを含む行を検出する
問題:app.log から ERROR または WARN を含む行を抽出してください。
▶解答例
grep -E ‘ERROR|WARN’ app.log
6) アクセス元 IP のランキングを作る
問題:アクセスログの 先頭フィールド(IPアドレス) を集計し、上位5件を表示してください。
▶解答例
awk ‘{print $1}’ access.log | sort | uniq -c | sort -nr | head -n 5
7) 大きなレスポンスサイズを検知する
問題:アクセスログの レスポンスサイズ(10列目) が 100000以上の行だけを抽出してください。
▶解答例
awk ‘$10 >= 100000’ access.log
8) リアルタイムでログを監視する
問題:access.log を 追跡して新しい行をリアルタイム表示してください。
▶解答例
tail -f access.log
学習のヒント
- 集計:
awk '{print $9}' | sort | uniq -c - ランキング:ソート+uniq+sort -nr
- 時間帯指定:ログフォーマットを正規表現で絞る
- リアルタイム監視:
tail -fは基本、より高度な監視はjournalctl -fやmultitailへ
これらの問題を繰り返すことで「障害発生時にまず確認すべき切り口」を自然に身につけられます。

