DataBase  /  Amazon Aurora  /  レポート取得ガイド

Amazon Aurora — スロークエリログ / 監査ログによる取得とセクション定義

Aurora MySQL のスロークエリログ・一般クエリログ、Aurora PostgreSQL の log_min_duration_statement によるスロークエリログを CloudWatch Logs に出力し、 CloudWatch Logs Insights でクエリ分析する方法を解説します。 Oracle AWR の SQL Statistics(重い SQL の自動検出)に相当する情報を取得できます。 Database Activity Streams による監査ログのリアルタイムキャプチャも紹介します。

1. Aurora MySQL: スロークエリログの有効化と CloudWatch Logs 連携

Aurora MySQL ではパラメータグループで slow_query_log を有効にし、 RDS コンソールの「ログのエクスポート」設定で CloudWatch Logs に送信します。

パラメータグループの設定(AWS CLI)

AWS CLI
# スロークエリログを有効化(1秒以上のクエリをログ)
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name my-aurora-mysql-params \
  --parameters \
    "ParameterName=slow_query_log,ParameterValue=1,ApplyMethod=immediate" \
    "ParameterName=long_query_time,ParameterValue=1,ApplyMethod=immediate" \
    "ParameterName=log_output,ParameterValue=FILE,ApplyMethod=immediate" \
    "ParameterName=log_queries_not_using_indexes,ParameterValue=0,ApplyMethod=immediate"

# CloudWatch Logs にスロークエリログをエクスポート
aws rds modify-db-cluster \
  --db-cluster-identifier my-aurora-cluster \
  --cloudwatch-logs-export-configuration '{"EnableLogTypes":["slowquery","error","general"]}' \
  --apply-immediately
💡 CloudWatch Logs のロググループ
スロークエリログは /aws/rds/cluster/CLUSTER_ID/slowquery に送信されます。 一般クエリログは /aws/rds/cluster/CLUSTER_ID/general、 エラーログは /aws/rds/cluster/CLUSTER_ID/error です。

2. セクション定義(Aurora MySQL):スロークエリログ

Aurora MySQL AWR対応 SQL Statistics(重い SQL の自動検出)

スロークエリログの各行には以下の情報が含まれます。

フィールド説明AWR 対応
Query_time クエリの実行時間(秒) Elapsed Time
Lock_time ロック待ち時間(秒) Wait Time(Row Lock)
Rows_sent 返却行数 Rows Processed
Rows_examined 検査行数。Rows_sent との比率でインデックス効率を評価する。 Rows Fetched(物理)
User@Host 実行ユーザーと接続元ホスト SQL by User
Timestamp クエリ実行時刻(UTC)
SET timestamp Unix エポック形式のタイムスタンプ

スロークエリログのサンプル形式

Aurora MySQL スロークエリログ形式
# Time: 2026-05-29T10:15:30.123456Z
# User@Host: appuser[appuser] @ 10.0.1.50 []  Id: 12345
# Query_time: 5.234567  Lock_time: 0.000123  Rows_sent: 1  Rows_examined: 1234567
SET timestamp=1748513730;
SELECT COUNT(*) FROM orders WHERE status = 'pending' AND created_at < '2026-01-01';

3. Aurora PostgreSQL: スロークエリログの有効化と CloudWatch Logs 連携

AWS CLI
# 1秒以上のクエリをスロークエリとしてログに記録
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name my-aurora-pg-params \
  --parameters \
    "ParameterName=log_min_duration_statement,ParameterValue=1000,ApplyMethod=immediate" \
    "ParameterName=log_statement,ParameterValue=none,ApplyMethod=immediate" \
    "ParameterName=log_connections,ParameterValue=1,ApplyMethod=immediate" \
    "ParameterName=log_disconnections,ParameterValue=1,ApplyMethod=immediate" \
    "ParameterName=log_line_prefix,ParameterValue='%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h ',ApplyMethod=immediate"

# CloudWatch Logs にログをエクスポート
aws rds modify-db-cluster \
  --db-cluster-identifier my-aurora-pg-cluster \
  --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql"]}' \
  --apply-immediately

4. セクション定義(Aurora PostgreSQL):スロークエリログ

Aurora PostgreSQL AWR対応 SQL Statistics(重い SQL の自動検出)

フィールド(log_line_prefix 含む)説明AWR 対応
duration: N ms クエリの実行時間(ミリ秒) Elapsed Time
user= 実行ユーザー名 SQL by User
db= 接続データベース名
app= アプリケーション名(application_name パラメータ) SQL by Module
client= 接続元 IP アドレス
statement: 実行された SQL テキスト(完全なクエリ) SQL Text
LOG: connection received/authorized 接続・切断ログ(log_connections / log_disconnections 有効時) Logons per Second

Aurora PostgreSQL スロークエリログのサンプル形式

Aurora PostgreSQL スロークエリログ形式
2026-05-29 10:15:30.123 UTC [12345]: [3-1] user=appuser,db=mydb,app=webapp,client=10.0.1.50
  LOG:  duration: 5234.567 ms  statement: SELECT COUNT(*) FROM orders
        WHERE status = 'pending' AND created_at < '2026-01-01';

5. CloudWatch Logs Insights による分析

CloudWatch Logs Insights を使うと、スロークエリログをSQL ライクなクエリで集計・分析できます。 マネジメントコンソールの「CloudWatch」→「ログのインサイト」から利用します。

Aurora MySQL: スロークエリ上位集計

CloudWatch Logs Insights(Aurora MySQL)
-- スロークエリの実行時間が長い上位を集計
fields @timestamp, @message
| filter @message like /Query_time/
| parse @message "Query_time: * " as query_time
| parse @message "Rows_examined: * " as rows_examined
| parse @message /SET timestamp=\d+;\n(?P.+)$/
| stats
    count() as executions,
    avg(toNumber(query_time)) as avg_query_sec,
    max(toNumber(query_time)) as max_query_sec,
    sum(toNumber(rows_examined)) as total_rows_examined
  by sql_text
| sort max_query_sec desc
| limit 20

Aurora PostgreSQL: スロークエリ上位集計

CloudWatch Logs Insights(Aurora PostgreSQL)
-- duration が大きいクエリを集計
fields @timestamp, @message
| filter @message like /duration:/
| parse @message "duration: * ms" as duration_ms
| parse @message "statement: *" as sql_text
| stats
    count() as executions,
    avg(toNumber(duration_ms)) as avg_ms,
    max(toNumber(duration_ms)) as max_ms
  by sql_text
| sort max_ms desc
| limit 20

-- 時間帯別のスロークエリ発生数
fields @timestamp, @message
| filter @message like /duration:/
| parse @message "duration: * ms" as duration_ms
| filter toNumber(duration_ms) > 3000
| stats count() as slow_count by bin(5m)
| sort @timestamp asc
分析の効率化
Logs Insights のクエリ結果はマネジメントコンソールからCSVエクスポートできます。 繰り返し使うクエリは「保存したクエリ」に登録しておくと便利です。

6. Database Activity Streams による監査ログ

Database Activity Streams(DAS)は Aurora の全データベースアクティビティを リアルタイムで Amazon Kinesis Data Streams に送信する機能です。 Oracle の統合監査(Unified Auditing)に相当するセキュリティ・コンプライアンス用途の監査証跡を提供します。

有効化(AWS CLI)

AWS CLI
# Database Activity Streams を同期モードで有効化
aws rds start-activity-stream \
  --resource-arn arn:aws:rds:ap-northeast-1:123456789012:cluster:my-aurora-cluster \
  --mode sync \
  --kms-key-id arn:aws:kms:ap-northeast-1:123456789012:key/YOUR-KEY-ID \
  --apply-immediately

DAS イベントの主なフィールド

フィールド説明AWR/監査 対応
type イベントタイプ(connect / disconnect / query / record) 監査イベント種別
dbUserName 実行ユーザー 監査:実行者
databaseName 対象データベース名 監査:対象 DB
command 実行した SQL コマンドタイプ(SELECT・INSERT・UPDATE・DELETE・DDL など) 監査:SQL 種別
commandText 実行された SQL テキスト(難読化設定に依存) 監査:SQL Text
remoteHost 接続元 IP アドレス 監査:接続元
exitCode 実行結果コード(0 = 成功) 監査:成功/失敗
⚠️ DAS のコスト
Database Activity Streams は追加コストが発生します。 書き込まれる Kinesis シャード数と処理量に応じて課金されます。 セキュリティ・コンプライアンス要件がない場合はスロークエリログで代替することを検討してください。

7. セクション定義まとめ

セクションエンジン主な取得情報Oracle AWR 対応送信先
スロークエリログ Aurora MySQL Query_time・Lock_time・Rows_examined・SQL テキスト SQL Statistics(重い SQL) CWL /slowquery
スロークエリログ Aurora PostgreSQL duration・user・db・app・SQL テキスト SQL Statistics(重い SQL) CWL /postgresql
一般クエリログ Aurora MySQL 全クエリの接続・実行記録(量が多いため通常は無効) 全 SQL トレース相当 CWL /general
エラーログ 両エンジン エラー・警告・起動停止ログ Alert Log CWL /error
Database Activity Streams 両エンジン 全 SQL アクティビティ・ユーザー・接続元・成功/失敗 Oracle 統合監査 Kinesis Data Streams