Amazon Athena
ユーザーガイド

Classic Load Balancer ログのクエリ

Classic Load Balancer ログを使用して、Elastic Load Balancing インスタンスおよびバックエンドアプリケーションとの間で送受信されるトラフィックのパターンを分析して理解します。トラフィックの送信元、レイテンシー、および転送されたバイト数を確認できます。

Elastic Load Balancing ログを分析する前に、ログの保存先として Amazon S3 バケットを設定します。詳細については、Classic Load Balancer のアクセスログの有効化」を参照してください。

Elastic Load Balancing ログのテーブルを作成するには

  1. 次の DDL ステートメントをコピーして Athena コンソール内に貼り付けます。Elastic Load Balancing ログレコードの構文を確認します。次のクエリを更新して、最新バージョンのレコードの列と正規表現の構文を含めることが必要になる場合があります。

    CREATE EXTERNAL TABLE IF NOT EXISTS elb_logs ( timestamp string, elb_name string, request_ip string, request_port int, backend_ip string, backend_port int, request_processing_time double, backend_processing_time double, client_response_time double, elb_response_code string, backend_response_code string, received_bytes bigint, sent_bytes bigint, request_verb string, url string, protocol string, user_agent string, ssl_cipher string, ssl_protocol 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.-]*)$' ) LOCATION 's3://your_log_bucket/prefix/AWSLogs/AWS_account_ID/elasticloadbalancing/'
  2. LOCATION Amazon S3 バケットを変更し、Elastic Load Balancing ログの保存先を指定します。

  3. Athena コンソールでクエリを実行します。クエリが完了すると、Athena は elb_logs テーブルを登録し、そのデータに対してクエリを発行できるように準備します。詳細については、「Elastic Load Balancing クエリの例」を参照してください。

Elastic Load Balancing クエリの例

次の例のようなクエリを使用します。この例では、4XX または 5XX エラーレスポンスコードを返したバックエンドアプリケーションサーバーを示しています。LIMIT 演算子を使用すると、一度にクエリするログの数を制限できます。

SELECT request_timestamp, elb_name, backend_ip, backend_response_code FROM elb_logs WHERE backend_response_code LIKE '4%' OR backend_response_code LIKE '5%' LIMIT 100;

次のクエリを使用して、バックエンド IP アドレスと Elastic Load Balancing インスタンス名ごとにグループ分けしたすべてのトランザクションの応答時間を合算します。

SELECT sum(backend_processing_time) AS total_ms, elb_name, backend_ip FROM elb_logs WHERE backend_ip <> '' GROUP BY backend_ip, elb_name LIMIT 100;

詳細については、「Athena を使用した S3 のデータの分析」を参照してください。