memorycraftです。

ELBにアクセスログ機能が搭載されたので、試してみました。

まず、AWSコンソールのELBのの画面をみてみますが、ここで、古いバージョンのコンソールだとアクセスログの設定ができないので、ヘッダ上部のお知らせアイコンから新しいバージョンに切り替えます。

任意のELBを選択して、下部ペインのDescriptionタブの最下段に、「Access Logs」という項目が追加されているのが分かります。

最初はDisabledになっています。Editのリンクを押下すると、以下のようなダイアログが表示されます。

ここで、「Enable Access Logs」にチェックを入れ、

  • Interval:ログ出力間隔(現状5分か60分)
  • S3 Location:ログ出力先のS3ロケーション(Create the location for meをチェックすると自動でつくられる)

を入力し、「Save」をクリックします。

しばらくすると、指定したS3のロケーションに、ログが出力されます。

中身をみてみると、以下のようになっています。

2014-03-06T23:50:37.819662Z manage 54.248.248.218:60123 10.156.231.23:80 0.00008 0.002195 0.000074 403 403 0 5039 "GET https://mng.cloudpack.jp:443/ HTTP/1.1"
2014-03-06T23:54:42.332009Z memory 219.117.233.241:43172 10.156.231.23:80 0.000068 2.234742 0.000065 200 200 0 129832 "GET https://memory.cloudpack.jp:443/cloudpack/admin/account HTTP/1.1"
2014-03-06T23:54:45.898722Z memory 219.117.233.241:43172 10.156.231.23:80 0.000069 0.142097 0.000058 200 200 0 766319 "GET https://memory.cloudpack.jp:443/cloudpack/admin HTTP/1.1"
2014-03-06T23:55:05.069736Z memory 219.117.233.241:43172 10.156.231.23:80 0.000082 0.767399 0.000083 200 200 0 129832 "GET https://memory.cloudpack.jp:443/cloudpack/admin/account HTTP/1.1"
2014-03-06T23:55:09.530026Z memory 219.117.233.241:43172 10.156.231.23:80 0.000078 0.701585 0.000067 200 200 0 133234 "GET https://memory.cloudpack.jp:443/cloudpack/admin/account/2 HTTP/1.1"
2014-03-06T23:55:11.639899Z memory 219.117.233.241:43172 10.156.231.23:80 0.000088 0.70764 0.000099 200 200 0 133341 "GET https://memory.cloudpack.jp:443/cloudpack/admin/account/3 HTTP/1.1"
2014-03-06T23:55:13.555633Z memory 219.117.233.241:43172 10.156.231.23:80 0.000076 0.698172 0.000095 200 200 0 131071 "GET https://memory.cloudpack.jp:443/cloudpack/admin/account/4 HTTP/1.1"
2014-03-06T23:55:15.414292Z memory 219.117.233.241:43172 10.156.231.23:80 0.000075 0.885828 0.00009 200 200 0 129831 "GET https://memory.cloudpack.jp:443/cloudpack/admin/account/1 HTTP/1.1"
2014-03-06T23:55:20.774540Z memory 219.117.233.241:43172 10.156.231.23:80 0.000075 0.68001 0.000083 200 200 0 23283 "GET https://memory.cloudpack.jp:443/cloudpack/admin/account/index?search=miura HTTP/1.1"
2014-03-06T23:55:25.478841Z memory 219.117.233.241:43172 10.156.231.23:80 0.000076 0.817105 0.000061 200 200 0 233574 "GET https://memory.cloudpack.jp:443/cloudpack/admin/account/doc/miura@cloudpack.jp HTTP/1.1"
2014-03-06T23:55:31.467146Z memory 219.117.233.241:43172 10.156.231.23:80 0.000072 0.142359 0.00011 200 200 0 766319 "GET https://memory.cloudpack.jp:443/cloudpack/admin HTTP/1.1"
2014-03-06T23:55:35.995594Z memory 219.117.233.241:43172 10.156.231.23:80 0.000077 0.768791 0.000101 200 200 0 129832 "GET https://memory.cloudpack.jp:443/cloudpack/admin/account HTTP/1.1"
2014-03-06T23:55:37.699927Z memory 54.248.248.218:36526 10.156.231.23:80 0.000064 0.001333 0.000062 403 403 0 5039 "GET https://memory.cloudpack.jp:443/ HTTP/1.1"

ログのフォーマットは、以下のような構成だそうです。

フィールド名 説明
タイムスタンプ クライアントにレスポンスを返したUTC時刻 2014-02-15T23:39:43.945958Z
ELB名 ELBの名前 my-test-loadbalancer
クライアントポート リクエストしたクライアントのIP 192.168.131.39:2817
バックエンドポート このリクエストを処理したインスタンスのIP 10.0.0.0.1
リクエスト処理時間 ELBがリクエストをうけとってからインスタンスに渡すまでの経過時間(秒) 0.000073
バックエンド処理時間 インスタンスに渡してからレスポンスヘッダを返し始めるまでの経過時間(秒) 0.001048
レスポンス処理時間 ELBがインスタンスからレスポンスヘッダを受け取りクライアントにレスポンスヘッダを返し初めてからの経過時間(秒)
処理時間にはELBのキューイング時間とインスタンスへの接続要求時間も含まれています。
0.000057
ELBステータスコード ELBからクライアントへ返されるHTTPステータスコード (HTTPのみ) 200
バックエンドステータスコード インスタンスからELBへ返されるHTTPステータスコード (HTTPのみ) 200
受信バイト数 クライアントからのリクエストのサイズ(バイト)
HTTPリクエストではボディのみでヘッダのサイズは含まれません
TCPリクエストではヘッダのサイズも含まれます
0
送信バイト数 クライアントへのレスポンスのサイズ(バイト)
HTTPリクエストではボディのみでヘッダのサイズは含まれません
TCPリクエストではヘッダのサイズも含まれます
29
“リクエスト”
           
ダブルクォーテーションで囲まれたクライアントからのリクエスト行。フォーマットは
HTTPメソッド + プロトコル://ホスト:ポート + パス + HTTPバージョン

TCPリクエストでは”- – -“のようになります。

"GET http://www.example.com: 80/HTTP/1.1"

ELBは自動でスケールするので、漏れ無くロギングできるかどうかは怪しいところですが、簡単にアクセスログをとるには便利そうです。

以上です。

こちらの記事はなかの人(memorycraft)監修のもと掲載しています。
元記事は、こちら