Amazon Athena CloudWatch Metrics コネクタ
Amazon Athena CloudWatch メトリクスコネクタを使用すると、Amazon Athena は SQL を使用して CloudWatch メトリクスデータをクエリできます。
このコネクタは、Glue 接続を使用して Glue の設定プロパティを一元化しません。接続設定は Lambda を介して行われます。
Athena 自体から CloudWatch にクエリメトリクスを公開する方法については、「CloudWatch と EventBridge を使用してクエリをモニタリングし、コストを管理する」を参照してください。
前提条件
Athena コンソールまたは AWS Serverless Application Repository を使用して AWS アカウント にコネクタをデプロイします。詳細については、「データソース接続を作成する」または「AWS Serverless Application Repository を使用してデータソースコネクタをデプロイする」を参照してください。
パラメータ
このセクションのパラメータを使用して 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
テーブルには次の列が含まれます。
-
namespacee –
VARCHAR
は名前空間を含みます。 -
metric_name –
VARCHAR
はメトリクス名を含みます。 -
ディメンション –
dim_name (VARCHAR)
およびdim_value (VARCHAR)
から構成されるSTRUCT
オブジェクトのLIST
。 -
statistic – メトリクスで使用が可能な、
VARCH
統計情報のLIST
(例:p90
、AVERAGE
、...)。
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 – サンプル値の統計タイプ (例:
AVERAGE
、p90
) が含まれているVARCHAR
。
必要な許可
このコネクタが必要とする IAM ポリシーの完全な詳細については、athena-cloudwatch-metrics.yamlPolicies
セクションを参照してください。次のリストは、必要なアクセス権限をまとめたものです。
-
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 で対応するサイト