ELBにアクセスログ機能が搭載されたので、試してみました。
まず、AWSコンソールのELBのの画面をみてみますが、ここで、古いバージョンのコンソールだとアクセスログの設定ができないので、ヘッダ上部のお知らせアイコンから新しいバージョンに切り替えます。
任意のELBを選択して、下部ペインのDescriptionタブの最下段に、「Access Logs」という項目が追加されているのが分かります。
最初はDisabledになっています。Editのリンクを押下すると、以下のようなダイアログが表示されます。
ここで、「Enable Access Logs」にチェックを入れ、
- Interval:ログ出力間隔(現状5分か60分)
- S3 Location:ログ出力先のS3ロケーション(Create the location for meをチェックすると自動でつくられる)
しばらくすると、指定した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バージョン TPCリクエストでは"- - -"のようになります。 | "GET http://www.example.com: 80/HTTP/1.1" |
ELBは自動でスケールするので、漏れ無くロギングできるかどうかは怪しいところですが、簡単にアクセスログをとるには便利そうです。
以上です。