今回は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
![](https://fukugyo-shacho.jp/wp-content/uploads/2023/08/image.png)
例えば、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でよく使うコマンドについては別記事でまとめてありますので、そちらもご参考ください。