【Apache】Webサーバーのアクセスログを見てみる

Apache

今回はApacheのアクセスログについての記事です。

Webサーバーのログはqiitaなどでもわかりやすい解説が多々ありますが、細かいところまで1から解説しているものはなかったので、備忘録的に記事としてまとめてみます。
対象者はLinux・Apacheの初心者になるかと思います。

環境

  • EC2インスタンスにApacheとWordpressをインストールして記事を投稿
  • AWS EC2(Amazon Linux release 2)
  • Apache HTTP Serverのバージョン 2.4.54

※2023年8月20日時点の情報です。

前提知識

SSHクライアントなどでサーバーに接続できる

Linuxのコマンドがなんとなくでもわかっていると理解しやすいと思います。
コマンドについては、こちらの解説記事もご参考ください。

手順

Logの場所にたどり着く

サーバーにSSH接続したら、ロールを管理者に変更
sudo su -
sudo -i

rootへロール変更するコマンドは2種類あって、厳密には挙動が違うようですが、今回はどちらを使っても問題ありません。

httpdのlogフォルダへ移動
cd /var/log/httpd

この段階で直接ログファイルを開くこともできますが、今回はわかりやすくするためログがあるフォルダまで移動します。

環境によっては、ログの場所が /var/log/apache2 になることもあります。

直近のログを見る

リアルタイムにログを監視する
tail -f access_log

tail -fはファイルの最後の10行を表示するコマンドですが、アクセスの都度ログが更新されるためリアルタイムにログを見ることができます。

ctrl+cで元の画面に戻れます。

ログファイルをすべて表示する
less access_log

ログファイルを最初から確認するならlessコマンドを使います。

1ページずつ表示されるので、目的の時間がある場合はスペースキーでページを送ってください。

元の画面に戻りたければqキーで戻れます。

過去にさかのぼってログを見るとき

ログファイルは週ごとに保管されているので、過去のログを見るときは、その時間のlogがあるファイルを探す必要があります。

まずは /var/log/httpd フォルダを開いた状態で、lsコマンドを使いフォルダの中身を一覧で表示してみます。

ls

例えば、8月8日のログを確認したい場合は、access_log-20230806のファイルをlessコマンドで開いてページ送りすることで確認できます。

less access_log-20230806

ログの見方

実際にログを見てみると、以下のような形式になっているかと思います。

100.10.10.10 – – [20/Aug/2023:04:00:00 +0900] “GET / HTTP/1.1” 200 52147 “Mozil
la/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chro
me/60.0.3112.113 Safari/537.36″

表示形式は設定を変えることもできますが、ややこしくなるため今回は割愛。
既定では“combined”というフォーマットが使用されていますので、ここではcombinedフォーマットでのログ内容を見てみます。

100.10.10.10アクセス元IPアドレス
[20/Aug/2023:04:00:00 +0900]アクセス時刻
“GET / HTTP/1.1”アクセスされたファイル
200ステータスコード
52147データの転送量
“Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/60.0.3112.113 Safari/537.36″
ユーザーエージェント
アクセス時刻

アクセスされた時刻が表示されます。

+900はタイムゾーンが日本であることを表しています。
AWSで運用している場合、OS側のmessagesなどのログはUTC表示ですが、こちらは日本時間なので混同しないように注意が必要。

messagesとApache側のログを比較する場合はmessages側の表示時刻に9時間足すことで同じ時刻になります。

アクセスされたファイル

どのリソースに、どのプロトコルでアクセスされたかが表示されています。

ステータスコード

サーバーのレスポンス結果が表示されます。
200は正常に通信が完了したことを表しています。
代表的なコードに以下のようなものがあります。

  • 301/302:リダイレクト 指定したリソースが新しいURLに変更された時など
  • 304:未更新 ブラウザに記憶されているキャッシュを利用したアクセスなど
  • 403:リクエストが拒否された
  • 404:指定されたページがない
  • 500:サーバー内部にエラーがある
  • 504:要求がタイムアウトした

基本的に200か301、302が出ている分にはあまり心配することはありません。

ユーザーエージェント

どのOSで、どのブラウザを使用してアクセスしたかなどのアクセス元の情報が表示されます。
Windows NT 10.0; Win64; x64の部分はOSを表していて、この場合はwindows10の64bitだとわかります。
また、後半にChromeの記載があるため今回アクセスした方はGoogle Chromeを利用してアクセスしているようです。

さいごに

一つ一つの情報は調べれば出てくるのですが、網羅されている記事もあれば便利かと思ってまとめてみました。
記事の初めにも紹介しましたが、Linuxでよく使うコマンドについては別記事でまとめてありますので、そちらもご参考ください。

タイトルとURLをコピーしました