Amazon Athena CloudWatch Metrics コネクタ - Amazon Athena

Amazon Athena CloudWatch Metrics コネクタ

Amazon Athena CloudWatch メトリクスコネクタを使用すると、Amazon Athena は SQL を使用して CloudWatch メトリクスデータをクエリできます。

Athena 自体から CloudWatch にクエリメトリクスを公開する方法については、「CloudWatch のメトリクスとイベントを使用したコストの管理とクエリのモニタリング」を参照してください。

前提条件

パラメータ

このセクションの Lambda 環境変数により、CloudWatch Metrics コネクタの設定を行います。

  • spill_bucket – Lambda 関数の上限を超えたデータに対して、Amazon S3 バケットを指定します。

  • spill_prefix – (オプション) 指定された athena-federation-spill という spill_bucket の、デフォルトのサブフォルダに設定します。このロケーションで、Amazon S3 のストレージライフサイクルを設定し、あらかじめ決められた日数または時間数以上経過したスピルを削除することをお勧めします。

  • spill_put_request_headers – (オプション) スピリングに使用されるAmazon S3 の putObject リクエスト (例:{"x-amz-server-side-encryption" : "AES256"}) に関する、 JSON でエンコードされたリクエストヘッダーと値のマッピング。利用可能な他のヘッダーについては、「Amazon Simple Storage Service API リファレンス」の「PutObject」を参照してください。

  • kms_key_id – (オプション) デフォルトでは、Amazon S3 に送信されるすべてのデータは、AES-GCM で認証された暗号化モードとランダムに生成されたキーを使用して暗号化されます。KMS が生成したより強力な暗号化キー (たとえば a7e63k4b-8loc-40db-a2a1-4d0en2cd8331) を Lambda 関数に使用させる場合は、KMS キー ID を指定します。

  • disable_spill_encryption – (オプション) True に設定されている場合、スピルに対する暗号化を無効にします。デフォルト値は False です。この場合、S3 にスピルされたデータは、AES-GCM を使用して (ランダムに生成されたキー、または KMS により生成したキーにより) 暗号化されます。スピル暗号化を無効にすると、特にスピルされる先でサーバー側の暗号化を使用している場合に、パフォーマンスが向上します。

コネクタでは、CloudWatch から Amazon Athena クエリフェデレーション SDKThrottlingInvoker コンストラクトを介してスロットリングされるイベントの処理用として、AIMD の輻輳 (ふくそう) 制御 もサポートしています。以下のオプションの環境変数のいずれかを設定することで、デフォルトのスロットリング動作を微調整できます。

  • throttle_initial_delay_ms – 最初の輻輳イベントの後に適用される最初の呼び出し遅延。デフォルト値は 10 ミリ秒です。

  • throttle_max_delay_ms – 呼び出し間の最大遅延。これを 1000 ミリ秒で除算することで、TPS を算出できます。デフォルト値は 1000 ミリ秒です。

  • throttle_decrease_factor – Athena が呼び出しのレートを低減する要因。デフォルトは 0.5 です。

  • throttle_increase_ms – Athena がコール遅延を低減させた際のレート。デフォルト値は 10 ミリ秒です。

データベースとテーブル

Athena CloudWatch Metrics コネクタは、名前空間、ディメンション、メトリクス、およびメトリクスの値を、default という単一のスキーマ内で 2 つのテーブルにマッピングします。

メトリクステーブル

metrics テーブルは、名前空間、セット、名前の組み合わせによって一意に定義された、使用可能なメトリクスで構成されています。この metrics テーブルには次の列が含まれます。

  • namespaceeVARCHAR は名前空間を含みます。

  • metric_nameVARCHAR はメトリクス名を含みます。

  • ディメンションdim_name (VARCHAR) および dim_value (VARCHAR) から構成される STRUCT オブジェクトの LIST

  • statistic – メトリクスで使用が可能な、VARCH 統計情報の LIST (例: p90AVERAGE、...)。

metric_samples テーブル

metric_samples テーブルには、metrics テーブルで使用可能な各メトリクスのサンプルが含まれています。この metric_samples テーブルには次の列が含まれます。

  • namespace – 名前空間が含まれている VARCHAR

  • metric_name – メトリクス名が含まれている VARCHAR

  • ディメンションdim_name (VARCHAR) および dim_value (VARCHAR) から構成される STRUCT オブジェクトの LIST

  • dim_name – 単一のディメンション名により簡単にフィルタリングできる、VARCHAR のコンビニエンスフィールド。

  • dim_value – 単一のディメンション値により簡単にフィルタリングできる、VARCHAR のコンビニエンスフィールド。

  • period – メトリクスの「期間」を、秒単位 (60 秒間メトリクスなど) で表す INT フィールド。

  • timestamp – メトリクスがサンプリングを行うエポックタイムを、秒単位で表す BIGINT フィールド。

  • value – サンプルされた値を含む FLOAT8 フィールド。

  • statistic – サンプル値の統計タイプ (例: AVERAGEp90) が含まれている VARCHAR

必要な許可

このコネクタが必要とする IAM ポリシーの完全な詳細については、athena-cloudwatch-metrics.yaml ファイルの Policies セクションを参照してください。次のリストは、必要なアクセス権限をまとめたものです。

  • Amazon S3 への書き込みアクセス – 大規模なクエリからの結果をスピルするために、コネクタは Amazon S3 内のロケーションへの書き込みアクセス権限を必要とします。

  • Athena GetQueryExecution – コネクタはこの権限を使用して、アップストリームの Athena クエリが終了した際に fast-fail を実行します。

  • CloudWatch Metrics ReadOnly – コネクタは、メトリクスのデータをクエリするために、このアクセス許可を使用します。

  • CloudWatch Logs Write – コネクタは、このアクセスを使用して診断ログへの書き込みを行います。

パフォーマンス

Athena CloudWatch Metrics コネクタは、クエリに必要なログストリームに対し並列化したスキャンを行うことで、CloudWatch Metrics へのクエリを最適化しようとします。特定の期間や、メトリクス、名前空間、ディメンションフィルタに対しては、Lambda 関数内と CloudWatch Logs 内の両方で述語のプッシュダウンが実行されます。

ライセンス情報

Amazon Athena CloudWatch Metrics コネクタプロジェクトは、Apache-2.0 ライセンスの下で使用許諾されています。

追加リソース

このコネクタに関するその他の情報については、GitHub.com で対応するサイトを参照してください。