aws

【H-3】ログ設定

Webサーバー運用において、ログ管理はトラブルシューティングやアクセス解析に欠かせない重要な要素です。
例えば、Apacheではデフォルトでアクセスログとエラーログが出力される仕組みになっています。
本ハンズオンでは、Apacheのログ出力先やフォーマットを理解し、実際にログを確認・設定する方法を学びます。

学習フェーズ

Apacheのログの種類

Apacheでは主に以下の2種類のログが出力されます。

  • アクセスログ(access_log)
     クライアントからのリクエスト内容(IPアドレス、リクエスト先、ステータスコードなど)が記録されます。
  • エラーログ(error_log)
     サーバー側で発生したエラー情報が記録されます。設定ミスやファイル未検出などの原因調査に役立ちます。

ログファイルの場所

デフォルトでは以下に保存されています。

  • アクセスログ:/var/log/httpd/access_log
  • エラーログ :/var/log/httpd/error_log

設定ファイルでのログ管理

Apacheのログ設定は、/etc/httpd/conf/httpd.conf で行います。以下のディレクティブが関連します。

  • CustomLog:アクセスログの出力先とフォーマットを指定
  • ErrorLog:エラーログの出力先を指定

例:

CustomLog "logs/access_log" combined
ErrorLog "logs/error_log"

※ 相対パスの場合、/etc/httpd/logs が基準となり、実際には /var/log/httpd/ に出力されます。

ログローテーション

Apacheのログは放置すると肥大化します。Amazon Linux 2023では、logrotate によって自動的にローテーション(定期的な分割・圧縮)が行われる設定になっています。

実践フェーズ

1. ログの確認

以下のコマンドでリアルタイムにアクセスログを確認します。

sudo tail -f /var/log/httpd/access_log

別のターミナルやブラウザでEC2のパブリックIPにアクセスすると、ログにリクエストが記録されることが確認できます。

具体的には以下のようなログが出力されるはずです。

192.0.2.1 - - [22/Apr/2025:12:34:56 +0900] "GET /index.html HTTP/1.1" 200 512 "http://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"

不正アクセスや不審なユーザーの特定時にログを調査する場合があるため、どのような記載があるかも調べておきましょう。

2. エラーログの確認

意図的に存在しないページへアクセスし、エラーログが記録されるか確認します。

sudo tail -f /var/log/httpd/error_log

例:http://<EC2のパブリックIP>/notfound.html にアクセス

3. ログ出力先の変更(任意)

ログの保存先を変更したい場合は、httpd.conf を編集します。

sudo vi /etc/httpd/conf/httpd.conf

以下のように編集例を記載します。(combinedなど、不明点があれば別途調べてみましょう。)

ErrorLog "/var/log/httpd/custom_error.log"
CustomLog "/var/log/httpd/custom_access.log" combined

編集後は設定を反映させます。

sudo systemctl reload httpd

4. ログローテーション設定の確認

logrotate の設定ファイルを確認します。

cat /etc/logrotate.d/httpd

ここでローテーションの周期や保存期間を調整できます。

+α

設定値を確認し、以下のようなログローテーションを組んでみましょう。

  • 毎週ローテーション、7世代保持、圧縮有効化