Amazon Aurora DSQL がサポートした CloudWatch Database Insights を試してみた
はじめに
2026年8月20日、Amazon Aurora DSQL が Amazon CloudWatch Database Insights をサポートするアップデートの発表がありました。
DSQL Active Session History(DASH)はデータベースの負荷情報を1分間隔で自動収集し、コンソールからは追加料金なしで参照できます。
本記事では、稼働中の Aurora DSQL クラスターを対象に、Database Insights のコンソール表示、CloudWatch 標準メトリクスの取得、PromQL API 経由の DASH データ取得を確認しました。
検証内容
コンソール表示
CloudWatch のコンソールでは、左ナビゲーションの Infrastructure Monitoring 配下に Database Insights の項目がありました。Aurora DSQL クラスターを作成するだけで、ここから DASH のデータにアクセスできます。

Database Instance Dashboard を開くと、上部に Database load チャートが表示されます。Average active sessions の内訳は Waits または SQL Text で切り替えられ、グラフは Bar と Line を選べます。

下部の DB Load Analysis には Top SQL と Top waits のタブがあります。Top SQL タブでは、SQL 文ごとの AAS が Load by waits (AAS) として表示され、あわせて SQL statements の一覧も表示されました。SQL 文を選択すると、下部の SQL text にクエリ全文と Query ID が表示されます。Engine 欄の表示は Aurora DSQL でした。
Database Telemetry タブには、10種のメトリクスウィジェットが並んでいます。

| ウィジェット | メトリクス | 単位 |
|---|---|---|
| Transactions | TotalTransactions, ReadOnlyTransactions | Count |
| Query timeouts | QueryTimeouts | Count |
| OCC conflicts | OccConflicts | Count |
| Commit latency | CommitLatency | Milliseconds |
| I/O throughput | BytesRead, BytesWritten | Bytes |
| Compute time | ComputeTime | Milliseconds |
| Cluster storage size | ClusterStorageSize | Bytes |
| DPU usage | ReadDPU, WriteDPU, ComputeDPU, TotalDPU, MultiRegionWriteDPU | Units |
| Established connections | ResourceCount | Count |
| Connection attempts | CallCount(DbConnectAdmin / DbConnect 別) | Count |
標準メトリクス取得
コンソールの Database Telemetry に並んでいたメトリクスを、CloudWatch のメトリクス API から取得できるか確認しました。
aws cloudwatch list-metrics --namespace AWS/AuroraDSQL --region us-east-1
{
"Metrics": [
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "OccConflicts",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "ClusterStorageSize",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "ComputeTime",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "TotalTransactions",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "ComputeDPU",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "ReadDPU",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "WriteDPU",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "ReadOnlyTransactions",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "BytesWritten",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "BytesRead",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "TotalDPU",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
},
{
"Namespace": "AWS/AuroraDSQL",
"MetricName": "CommitLatency",
"Dimensions": [{"Name": "ClusterId", "Value": "<cluster-id>"}]
}
]
}
返ってきたのは12種のメトリクスで、ディメンションは ClusterId だけでした。コンソールの Database Telemetry に並んでいた QueryTimeouts、MultiRegionWriteDPU、ResourceCount、CallCount は、この一覧には現れていません。直近2週間にデータポイントがないメトリクスは一覧に含まれない仕様です。QueryTimeouts は一度も発生していないため、一覧に出ないのは想定どおりです。
日次のデータ投入処理が動いていた時間帯を指定して、DPU 消費を5分間隔で取得しました。
aws cloudwatch get-metric-statistics \
--namespace AWS/AuroraDSQL \
--metric-name TotalDPU \
--dimensions Name=ClusterId,Value=<cluster-id> \
--start-time 2026-08-23T07:00:00Z \
--end-time 2026-08-23T11:00:00Z \
--period 300 \
--statistics Sum Maximum \
--region us-east-1
出力から、値が確認できた時間帯のデータポイントを抜粋します。
{
"Label": "TotalDPU",
"Datapoints": [
{
"Timestamp": "2026-08-23T18:40:00+09:00",
"Sum": 286.66901874707025,
"Maximum": 40.81532766992188,
"Unit": "None"
},
{
"Timestamp": "2026-08-23T19:20:00+09:00",
"Sum": 257.6313710976563,
"Maximum": 18.65125854589844,
"Unit": "None"
},
{
"Timestamp": "2026-08-23T19:15:00+09:00",
"Sum": 113.22324524414063,
"Maximum": 71.276387875,
"Unit": "None"
}
]
}
DASH ではなく標準メトリクスであれば、AWS CLI から取得できます。トランザクション数も同じ時間帯で取得しています。
aws cloudwatch get-metric-statistics \
--namespace AWS/AuroraDSQL \
--metric-name TotalTransactions \
--dimensions Name=ClusterId,Value=<cluster-id> \
--start-time 2026-08-23T07:00:00Z \
--end-time 2026-08-23T11:00:00Z \
--period 300 \
--statistics Sum Average \
--region us-east-1
{
"Label": "TotalTransactions",
"Datapoints": [
{
"Timestamp": "2026-08-23T18:40:00+09:00",
"Average": 1.0,
"Sum": 727.0,
"Unit": "None"
},
{
"Timestamp": "2026-08-23T19:20:00+09:00",
"Average": 1.0,
"Sum": 717.0,
"Unit": "None"
}
]
}
DPU が増えていた2つの時間帯は、いずれも5分間で700件台のトランザクションが処理されていました。コミットのレイテンシーも取得しています。
CommitLatency の取得コマンドと出力
aws cloudwatch get-metric-statistics \
--namespace AWS/AuroraDSQL \
--metric-name CommitLatency \
--dimensions Name=ClusterId,Value=<cluster-id> \
--start-time 2026-08-23T07:00:00Z \
--end-time 2026-08-23T11:00:00Z \
--period 300 \
--statistics Average Maximum \
--region us-east-1
{
"Label": "CommitLatency",
"Datapoints": [
{
"Timestamp": "2026-08-23T19:15:00+09:00",
"Average": 8.602227272727273,
"Maximum": 189.249,
"Unit": "Milliseconds"
},
{
"Timestamp": "2026-08-23T17:20:00+09:00",
"Average": 8.161930232558138,
"Maximum": 104.103,
"Unit": "Milliseconds"
}
]
}
単位は Milliseconds で、19:15 JST の最大値が 189.2ms、17:20 JST の最大値が 104.1ms でした。
PromQL APIでの取得
DB Load やウェイトイベントの内訳にあたる DASH 本体のデータは、標準メトリクスとは経路が違います。db.active_sessions.avg は PromQL からのみアクセスでき、問い合わせに使う QueryMetrics API には対応する CLI サブコマンドがありません。AWS CLI 2.36.29 では、サブコマンドとして受け付けられませんでした。
aws: [ERROR]: An error occurred (ParamValidation): argument operation: Found invalid choice 'query-metrics'
QueryMetrics は Prometheus 互換の REST エンドポイント(https://monitoring.<region>.amazonaws.com/api/v1/query および /api/v1/query_range)として提供されています。Signature Version 4 で署名した HTTP リクエストを直接送る必要があります。公式ドキュメントの PromQL querying のページにも、monitoring をサービス名として Signature Version 4 で署名することが明記されています。
そこで、SigV4 署名を代行して HTTP リクエストを送るサードパーティ製の OSS ツール awscurl の 0.33 を pip install awscurl で導入し、ウェイトイベント別の AAS を取得しました。
awscurl --service monitoring --region us-east-1 \
-X POST 'https://monitoring.us-east-1.amazonaws.com/api/v1/query_range' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'query=avg by ("db.wait.event") ({"db.active_sessions.avg", "@resource.aws.auroradsql.cluster_id"="<cluster-id>"})&start=2026-08-23T09:00:00Z&end=2026-08-23T11:00:00Z&step=1m'
{
"status": "success",
"data": {
"resultType": "matrix",
"result": [
{
"metric": {"db.wait.event": "Commit"},
"values": [[1787478060.0, "0.06666666666666667"], [1787478120.0, "0.06666666666666667"]]
},
{
"metric": {"db.wait.event": "OnCpu"},
"values": [[1787478000.0, "0.016666666666666666"], [1787478060.0, "0.016666666666666666"]]
},
{
"metric": {"db.wait.event": "SequentialScanRead"},
"values": [[1787478000.0, "0.016666666666666666"], [1787478060.0, "0.016666666666666666"]]
}
]
}
}
PromQL クエリをリクエストボディに入れて POST しました。取得できたウェイトイベントは6種でした。ClientRead、Commit、OnCpu、ScatteredBatchRead、SequentialScanRead、UniqueConstraintCheck です。
レスポンスは、通常の CloudWatch の GetMetricData が返す MetricDataResults 配列とは異なり、status と data を持つ構造です。Prometheus のクエリ API と同じ形式です。
続いて、SQL 単位の内訳を取得しました。正規化済みの SQL 文をラベルにしてグループ化し、AAS の上位5件に絞った結果です。
awscurl --service monitoring --region us-east-1 \
-X POST 'https://monitoring.us-east-1.amazonaws.com/api/v1/query_range' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'query=topk(5, avg by ("db.query.normalized_text") ({"db.active_sessions.avg", "@resource.aws.auroradsql.cluster_id"="<cluster-id>"}))&start=2026-08-23T09:00:00Z&end=2026-08-23T11:00:00Z&step=1m'
{
"status": "success",
"data": {
"resultType": "matrix",
"result": [
{
"metric": {"db.query.normalized_text": "BEGIN"},
"values": [[1787478060.0, "0.03333333333333333"], [1787480340.0, "0.05"]]
},
{
"metric": {"db.query.normalized_text": "COMMIT"},
"values": [[1787478060.0, "0.06666666666666667"], [1787480340.0, "0.06666666666666667"]]
},
{
"metric": {"db.query.normalized_text": "DELETE FROM public.sample_activity"},
"values": [[1787480340.0, "0.016666666666666666"]]
}
]
}
}
BEGIN、COMMIT、DELETE FROM ...、INSERT INTO ... といった正規化済みの SQL 文ごとに AAS が返りました。コンソールの Top SQL タブと同じ種類の情報を、API からも取得できました。
PromQL API の呼び出しに必要な IAM 権限
To execute PromQL queries, you need both cloudwatch:GetMetricData and cloudwatch:ListMetrics permissions.
有効化とコスト
ここまでの検証では、クラスター側の設定は変更していません。公式ドキュメントも、セットアップが不要であることを明記しています。
You don't need to set up DASH. It is automatically enabled for every Aurora DSQL cluster, and per-minute aggregated data is available through Amazon CloudWatch Database Insights and through Prometheus Query Language (PromQL) queries run against CloudWatch OTel metrics at no additional cost.
料金については、CloudWatch の料金ページに記載があります。
Upto 15 months of per-minute standard database metrics are included at no additional cost.
Querying OpenTelemetry metrics via the PromQL API is charged at $0.01 per million samples scanned. A sample is one data point for one metric series at one timestamp. Queries executed through the CloudWatch console, including dashboards, are free of charge.
15か月分の標準メトリクスは追加料金なしで保持されます。クエリの実行についても、コンソール経由は無料ですが、PromQL API を経由したクエリはスキャンしたサンプル数に応じて課金されます。
まとめ
DSQL がサポートした Database Insights は、Aurora(RDS)の Database Insights(旧:Performance Insights)と同様に、DBの稼働状態を把握するのに有効です。
DASH は追加設定なしで有効です。コンソールから負荷を確認する分には追加費用もかからないため、Aurora DSQL を使っている方は一度 Database Insights を開いてみてください。
今回確認したのは、日次のデータ投入が動いている平時の負荷です。負荷試験のような過負荷はかけていません。DSQL を使ったワークロードで負荷試験を行う機会があれば、その結果は別記事で紹介したいと思います。











