Amazon Athena
ユーザーガイド

Classic Load Balancer ログのクエリ

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

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

Elastic Load Balancing ログのテーブルの作成

テーブルを作成して後でクエリを実行できるようにします。このテーブルでは、Elastic Load Balancing ログの保存先の Amazon S3 を正確に指定する必要があります。

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

  1. 次の DDL ステートメントをコピーして Athena コンソール内に貼り付けます。

  2. LOCATION を変更し、Elastic Load Balancing ログの保存先とする S3 バケットを指定します。

    CREATE EXTERNAL TABLE IF NOT EXISTS elb_logs ( request_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/';
  3. Athena コンソールでクエリを実行します。クエリが完了すると、Athena は elb_logs テーブルを登録し、そのデータに対してクエリを発行できるように準備します。

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 のデータの分析」を参照してください。