カテゴリ: AWS 更新日: 2026/02/23

AWS ELBのログ記録を有効化してアクセス解析する方法を初心者向けに解説!

AWS ELBのログ記録を有効化してアクセス解析する方法
AWS ELBのログ記録を有効化してアクセス解析する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、AWSのロードバランサーでアクセスログを記録できると聞いたんですが、どうやって設定するんですか?」

先生

「良い質問ですね。AWSのElastic Load Balancer(エラスティックロードバランサー、略してELB)には、アクセスログを記録する機能があります。これを有効化すると、ユーザーがどのようにWebサイトにアクセスしているかを詳しく解析できますよ。」

生徒

「なるほど!ログを取ると、どんなことがわかるんですか?」

先生

「例えば、アクセス元のIPアドレス(アイピーアドレス)、利用しているブラウザ、通信にかかった時間、レスポンスのステータスコードなどがわかります。これを活用すれば、セキュリティ対策や性能改善にもつながりますよ。」

1. ELBのログ記録とは?仕組みをわかりやすく解説

1. ELBのログ記録とは?仕組みをわかりやすく解説
1. ELBのログ記録とは?仕組みをわかりやすく解説

ELB(イーエルビー)はElastic Load Balancer(エラスティックロードバランサー)の略称で、Webサイトへのアクセスを複数のサーバーにバランス良く振り分ける「交通整理」のような役割を担うAWSのサービスです。

ELBのログ記録(アクセスログ機能)とは、あなたのサイトに「いつ」「誰が」「どのページに」「どのような結果(成功かエラーか)」でアクセスしたかという詳細な足跡を、Amazon S3(エスリー)というクラウド上の保管庫に自動で保存する仕組みのことです。

未経験者向けイメージ:ログは「お店の防犯カメラ映像」
Webサイトを「お店」に例えると、ELBのログは防犯カメラの映像や、来店者名簿のようなものです。これがあるおかげで、後から「昨日の夜、急にお客さんが増えたのはなぜか?」「エラーで入れなかったお客さんはいなかったか?」を正確に振り返ることができます。

ログは、以下のような形式で1行ずつ記録されていきます。専門的な用語が並んでいますが、左から「時間」「ELBの名前」「アクセス元IP」「応答時間」「結果コード」といった情報が整理されて出力されます。

ログのサンプルイメージ:


2026-02-01T12:00:01.123456Z my-load-balancer 192.168.1.1:54321 10.0.0.1:80 0.001 0.002 0.001 200 200 0 500 "GET http://example.com:80/index.html HTTP/1.1"

このログは通常、5分または60分の一定間隔でS3へファイルとして書き出されます。プログラミングの知識がなくても、設定をONにするだけで自動的に記録が溜まっていくため、運用管理の第一歩として非常に重要な機能です。

2. なぜログ記録が重要なのか?

2. なぜログ記録が重要なのか?
2. なぜログ記録が重要なのか?

ログを記録することで、以下のようなメリットがあります。

  • 不正アクセスの検知
  • レスポンス時間の計測とパフォーマンス改善
  • ユーザーのアクセス傾向分析
  • 障害発生時の原因追跡

例えば、ある時間帯にアクセスが急増した場合、ログからどの地域から集中しているのかを把握できます。これはWebサービスの拡張計画にも役立ちます。

3. ログ記録の仕組み

3. ログ記録の仕組み
3. ログ記録の仕組み

ELBのログはS3バケットに保存されます。S3(エスリー)はオブジェクトストレージで、ログファイルを長期間保管できます。ログファイル名には日付やロードバランサーの情報が含まれるため、簡単に整理できます。

ログ内容には以下が含まれます。

  • リクエスト元のIPアドレス
  • ターゲットサーバーの情報
  • リクエストとレスポンスの時間
  • HTTPステータスコード
  • 転送されたデータサイズ

こうした詳細データは、アクセス解析ツールやセキュリティモニタリングに活用できます。

4. ELBログ記録の有効化手順

4. ELBログ記録の有効化手順
4. ELBログ記録の有効化手順

実際にELBでログ記録を有効化する手順は次の通りです。

  1. AWSマネジメントコンソールにログインします。
  2. サービス一覧から「EC2」を選択し、左メニューの「ロードバランサー」をクリックします。
  3. 対象のELBを選び、「属性」タブを開きます。
  4. 「アクセスログ」を有効化します。
  5. S3バケットを指定し、保存先を設定します。
  6. 保存して設定を反映します。

この設定を行うことで、アクセスログがS3に自動で出力されるようになります。

5. アクセスログを解析する方法

5. アクセスログを解析する方法
5. アクセスログを解析する方法

ログがS3に保存されたら、それを解析することで具体的なアクセス状況がわかります。解析にはいくつかの方法があります。

  • 手動解析:ログファイルをダウンロードしてテキストエディタで確認。
  • Amazon Athena(アテナ):S3に保存されたログに対してSQL(エスキューエル)クエリを実行して解析。
  • 外部解析ツール:ログをSplunk(スプランク)やElasticsearch(エラスティックサーチ)に取り込み可視化。

Athenaを使えば、コードを書かなくても簡単に「特定のIPからのアクセス数」や「レスポンスコード別の件数」を集計できます。

6. ログ記録を利用する際の注意点

6. ログ記録を利用する際の注意点
6. ログ記録を利用する際の注意点

ログ機能は便利ですが、次のポイントに注意してください。

  • ログ保存にはS3のストレージ料金がかかる。
  • 保存期間を設定しないと、不要なログが増えてコストが上がる。
  • 個人情報を含まないように取り扱いに注意する。

コストを抑えるためには、S3のライフサイクルルールを設定し、古いログを自動削除またはGlacier(グレイシャー、低コストストレージ)に移す方法がおすすめです。

まとめ

まとめ
まとめ

ここまで、AWSのELB(Elastic Load Balancer)におけるアクセスログの有効化から、その活用方法、さらには注意点について詳しく解説してきました。ロードバランサーは単にアクセスを振り分けるだけの装置ではなく、Webサービス全体の健康状態やユーザーの行動を把握するための「情報の窓口」としての役割も担っています。

ログを記録し、適切に解析することは、システムの安定運用において欠かせないプロセスです。特に大規模なトラフィックを扱う環境では、問題が発生した際に「何が起きたのか」を正確に把握するための唯一の手がかりがログになることも少なくありません。

ELBアクセスログ運用のポイント再確認

ELBのアクセスログを運用する上で、特に意識しておきたいポイントを改めて整理します。まず、ログの保存先となるAmazon S3のバケットポリシーの設定です。ELBがログを書き込めるように、正しい権限を付与したJSON形式のポリシーを設定する必要があります。

S3バケットポリシーの設定例

下記は、ELBがS3バケットにログを書き込むことを許可するためのバケットポリシーのサンプルです。これを適用することで、安全にログ転送が行われます。


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::elb-account-id:root"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::your-log-bucket-name/prefix/AWSLogs/your-aws-account-id/*"
    }
  ]
}

※「elb-account-id」の部分は、リージョンごとに決められたAWSのアカウントIDを入力する必要があります。ご自身の利用しているリージョンに合わせて書き換えてください。

Amazon Athenaを用いたログ解析の準備

S3に保存された膨大なログデータを効率よく検索・集計するには、Amazon Athena(アテナ)が非常に強力です。Athenaを使用するためには、まずログの形式に合わせてテーブルを作成する必要があります。以下は、Application Load Balancer (ALB) のログを解析するためのテーブル作成クエリの例です。


CREATE EXTERNAL TABLE IF NOT EXISTS alb_logs (
    type string,
    time string,
    elb string,
    client_ip string,
    client_port int,
    target_ip string,
    target_port int,
    request_processing_time double,
    target_processing_time double,
    response_processing_time double,
    elb_status_code int,
    target_status_code int,
    received_bytes bigint,
    sent_bytes bigint,
    request_verb string,
    request_url string,
    request_proto string,
    user_agent string,
    ssl_cipher string,
    ssl_protocol string,
    target_group_arn string,
    trace_id string,
    domain_name string,
    chosen_cert_arn string,
    matched_rule_priority string,
    request_creation_time string,
    actions_executed string,
    redirect_url string,
    lambda_error_reason string,
    target_port_list string,
    target_status_code_list string,
    classification string,
    classification_reason string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
    'serialization.format' = '1',
    'input.regex' = '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) ([^ ]*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^ ]*)\" (.*) (.*) (.*) (.*)'
)
LOCATION 's3://your-log-bucket-name/prefix/AWSLogs/your-aws-account-id/elasticloadbalancing/region/';

このようにテーブルを定義しておけば、標準的なSQLを使って「どの時間帯に500エラー(サーバーエラー)が多発したか」などを一瞬で集計できるようになります。運用フェーズでは、こうしたツールを使いこなすことが重要です。

運用保守に役立つLinuxコマンドの活用

S3からローカル環境にログをダウンロードして、サクッと中身を確認したい場合には、AWS CLI(コマンドラインインターフェース)を利用するのが便利です。以下のコマンドを使って、特定のログファイルを同期したり表示したりできます。


aws s3 sync s3://your-log-bucket-name/ ./local-logs/
download: s3://your-log-bucket-name/AWSLogs/123456789012/elasticloadbalancing/ap-northeast-1/2026/01/29/123456789012_elasticloadbalancing_ap-northeast-1_app.my-load-balancer.abc123_20260129T0000Z_10.0.0.1_2j7k3l.log.gz to local-logs/sample.log.gz

ダウンロードしたログが圧縮されている場合は、`zcat`などのコマンドを組み合わせて、特定のステータスコードが含まれる行だけを抽出することも可能です。


zcat local-logs/sample.log.gz | grep "503" | head -n 5
https 2026-01-29T00:01:02.123456Z app/my-load-balancer/abc123 192.168.1.1:54321 - -1 -1 -1 503 - 123 456 "GET https://example.com:443/ HTTP/1.1" "Mozilla/5.0" - - - - - "-" "-" "-" - - "-" "-" "-"

最後に:継続的なモニタリングの重要性

クラウドの世界では、リソースの状況が刻一刻と変化します。ELBのログは単なる「過去の記録」ではなく、「未来の改善案」を導き出すための貴重なリソースです。 今回紹介した設定は、一度行えば自動的にデータが蓄積されていきますが、そのデータをどう料理するかがエンジニアの腕の見せ所です。コスト管理のためにS3のライフサイクルポリシーを設定することも忘れず、効率的なログ運用を目指しましょう。

先生と生徒の振り返り会話

生徒

先生、まとめまで読んでELBのログの重要性が本当によくわかりました。単に「オンにする」だけじゃなくて、S3のバケットポリシーやAthenaでの解析準備まで含めてセットなんですね。

先生

その通りです!設定自体は簡単ですが、いざトラブルが起きた時に「ログをどうやって見るか」が分かっていないと、宝の持ち腐れになってしまいますからね。今回紹介したSQLのクエリなどは、ぜひメモしておいてください。

生徒

はい!特に「S3のライフサイクルルール」の話が印象的でした。放置しておくとログが溜まりすぎて、AWSの請求金額を見てびっくりしちゃいそうですもんね(笑)。

先生

ははは、そうですね。不要なログは半年で削除したり、安いストレージのGlacierに移動させたりするのが賢い運用のコツです。コマンドを使って手元でサクッと確認する方法も覚えると、調査スピードが格段に上がりますよ。

生徒

コマンドラインで`grep`を使ってエラーを探すの、エンジニアっぽくて憧れます!さっそく自分のテスト環境でも設定してみようと思います。

先生

その意気です。実際に触ってみるのが一番の近道ですよ。もし権限エラーなどが出たら、先ほど解説したバケットポリシーをもう一度見直してみてくださいね。頑張りましょう!

カテゴリの一覧へ
新着記事
New1
AWS PrivateLink
AWS PrivateLinkのユースケースと業界別活用事例|セキュアな通信の決定版
New2
AWS PrivateLink
AWS PrivateLinkのログ取得とトラブル対応手順を完全ガイド!初心者でもわかるセキュアな接続確認方法
New3
ファイル・ディレクトリ構造
Linuxの/etcディレクトリとは?設定ファイルの役割を初心者向けに徹底解説
New4
AWS Lambda
AWS Lambdaでログを確認する方法を完全解説!CloudWatch Logsで初心者でも安心運用
人気記事
No.1
Java&Spring記事人気No1
S3(オブジェクトストレージ)
AWS S3の料金体系をわかりやすく解説
No.2
Java&Spring記事人気No2
Linux ディストリビューション
Linuxディストリビューションとは?OSとの関係や初心者におすすめの種類を徹底解説!
No.3
Java&Spring記事人気No3
ELB(ロードバランサー)
AWS ELBでターゲットグループを設定する方法を初心者向けに解説!
No.4
Java&Spring記事人気No4
シェルとターミナル基礎
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.5
Java&Spring記事人気No5
Linux ディストリビューション
Ubuntuとは何か?特徴と向いている用途を初心者向けに徹底解説!
No.6
Java&Spring記事人気No6
AWS 基本
AWSのサービスのステータス確認方法(AWS Health Dashboard)
No.7
Java&Spring記事人気No7
RDS(データベース)
AWS RDSのセキュリティグループ設定方法を解説!初心者でも安心のクラウドデータベース対策
No.8
Java&Spring記事人気No8
ELB(ロードバランサー)
AWSのNetwork Load Balancer(NLB)の特徴と使い方を解説!初心者向けロードバランサー入門