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

Amazon Aurora — Enhanced Monitoring による取得とセクション定義

Enhanced Monitoring は Aurora インスタンスが動作する OS レベルのリアルタイムメトリクスを 最短1秒粒度で収集し CloudWatch Logs に送信する機能です。 Oracle AWR の OS 統計セクション・Instance Activity に相当する CPU・メモリ・I/O・ネットワーク情報を取得できます。 本記事では各セクションの定義と JSON ログの解析方法を解説します。

1. Enhanced Monitoring の概要と有効化

Enhanced Monitoring は RDS エージェントが OS から収集したメトリクスを CloudWatch Logs のロググループ RDSOSMetrics に JSON 形式で送信します。 通常の CloudWatch メトリクスでは取得できない OS レベルの詳細情報(ファイルシステム別 I/O・プロセスごとの CPU など)が取得できます。

有効化手順(AWS CLI)

AWS CLI
# Enhanced Monitoring を1秒粒度で有効化
# monitoring-role-arn には rds-monitoring-role の ARN を指定
aws rds modify-db-instance \
  --db-instance-identifier my-aurora-instance \
  --monitoring-interval 1 \
  --monitoring-role-arn arn:aws:iam::123456789012:role/rds-monitoring-role \
  --apply-immediately

# IAM ロールがない場合は先に作成する
aws iam create-role \
  --role-name rds-monitoring-role \
  --assume-role-policy-document '{
    "Version":"2012-10-17",
    "Statement":[{
      "Effect":"Allow",
      "Principal":{"Service":"monitoring.rds.amazonaws.com"},
      "Action":"sts:AssumeRole"
    }]
  }'
aws iam attach-role-policy \
  --role-name rds-monitoring-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AmazonRDSEnhancedMonitoringRole
💡 Oracle AWR との対応
Enhanced Monitoring は Oracle AWR の「OS Statistics」セクションに相当します。 ただし Aurora は共有ストレージアーキテクチャのため、ローカルディスク I/O は Aurora ストレージレイヤーへのネットワーク I/O として現れます。

2. セクション定義:CPU 統計

AWR対応 OS Statistics(CPU)

JSON フィールド説明単位AWR 対応
cpuUtilization.total CPU 全体の使用率 % %CPU(OS Stats)
cpuUtilization.user ユーザー空間での CPU 使用率 % %usr
cpuUtilization.system カーネル空間(システムコール)での CPU 使用率 % %sys
cpuUtilization.wait I/O 待ちによる CPU アイドル時間 % %wio
cpuUtilization.irq ハードウェア割り込みでの CPU 使用率 % %irq
cpuUtilization.steal ハイパーバイザーが他 VM に割り当てた CPU 時間 % %steal(仮想環境固有)
numVCPUs インスタンスの vCPU 数 CPU 本数

3. セクション定義:メモリ統計

AWR対応 OS Statistics(Memory)

JSON フィールド説明単位AWR 対応
memory.total OS から見えるメモリ合計 KB Physical Memory(OS)
memory.free 未使用メモリ KB Free Memory
memory.used 使用中メモリ(buffers/cache を除く) KB Used Memory
memory.cached ページキャッシュとして使用中のメモリ KB Page Cache
swap.total スワップ領域の合計 KB
swap.used 使用中のスワップ量。ゼロであることが理想。 KB Swap Usage
⚠️ swap.used が増加している場合
Aurora でスワップが発生している場合、メモリ不足の可能性があります。 FreeableMemory CloudWatch メトリクスとあわせて確認し、 インスタンスクラスのアップサイズまたはバッファプールサイズの調整を検討してください。

4. セクション定義:ディスク I/O 統計

AWR対応 I/O Statistics(File I/O)

JSON フィールド説明単位AWR 対応
diskIO[].readIOsPS デバイスあたりの読み取り I/O 回数(毎秒) IOPS Physical Reads
diskIO[].writeIOsPS デバイスあたりの書き込み I/O 回数(毎秒) IOPS Physical Writes
diskIO[].readKbPS 読み取りスループット KB/s I/O Throughput(Read)
diskIO[].writeKbPS 書き込みスループット KB/s I/O Throughput(Write)
diskIO[].avgReadLatency 読み取りの平均レイテンシ ms Read Latency
diskIO[].avgWriteLatency 書き込みの平均レイテンシ ms Write Latency
diskIO[].util I/O デバイスのビジー率(100% に近いと I/O 飽和) % I/O Utilization

5. セクション定義:ネットワーク統計

AWR対応 OS Statistics(Network)

JSON フィールド説明単位AWR 対応
network[].rx インターフェイスあたりの受信バイト数(毎秒) KB/s Network Receive Bytes
network[].tx インターフェイスあたりの送信バイト数(毎秒) KB/s Network Transmit Bytes

6. セクション定義:プロセスリスト

AWR対応 Top Sessions(OS プロセス)

Enhanced Monitoring の processList セクションには、 CPU・メモリ使用量が高い上位プロセスが含まれます。 Oracle AWR の「Top Sessions」や OS の top コマンド出力に相当します。

JSON フィールド説明AWR 対応
processList[].pid OS プロセス ID Session ID
processList[].name プロセス名(mysqld・postgres など) Program
processList[].cpuUsedPc プロセスの CPU 使用率 %CPU in Session
processList[].memUsedPc プロセスのメモリ使用率 %Memory in Session
processList[].vss 仮想メモリサイズ Virtual Memory
processList[].rss 常駐メモリサイズ(物理メモリ使用量) Resident Memory
processList[].tgid スレッドグループ ID(マルチスレッドプロセスの識別に使用)

7. CloudWatch Logs からの取得

Enhanced Monitoring のデータは CloudWatch Logs のロググループ /aws/rds/cluster/CLUSTER_ID/audit または RDSOSMetrics に JSON 形式で送信されます。

AWS CLI でログイベントを取得

AWS CLI
# ロググループ内のログストリームを確認
aws logs describe-log-streams \
  --log-group-name RDSOSMetrics \
  --log-stream-name-prefix db-INSTANCE_ID \
  --query 'logStreams[*].logStreamName'

# 最新のメトリクスイベントを取得(JSON 形式)
aws logs get-log-events \
  --log-group-name RDSOSMetrics \
  --log-stream-name "db-INSTANCE_ID" \
  --limit 5 \
  --query 'events[*].message' \
  --output text | python3 -m json.tool

CloudWatch Logs Insights でクエリ

CloudWatch Logs Insights
-- CPU 使用率の推移を時系列で確認
fields @timestamp, cpuUtilization.total as cpu_total,
       cpuUtilization.user as cpu_user,
       cpuUtilization.wait as cpu_iowait
| filter ispresent(cpuUtilization.total)
| sort @timestamp desc
| limit 60

-- メモリ使用状況を確認
fields @timestamp, memory.total as mem_total,
       memory.free as mem_free, swap.used as swap_used
| filter ispresent(memory.total)
| sort @timestamp desc
| limit 30

-- プロセスリストから CPU 使用率上位を抽出
fields @timestamp
| filter ispresent(processList)
| parse @message '"name":"*","cpuUsedPc":*,' as proc_name, cpu_pct
| sort cpu_pct desc
| limit 20
取得間隔の選択
監視間隔は 1・5・10・15・30・60 秒から選択できます。 間隔が短いほど CloudWatch Logs への書き込みコストが増加します。 通常運用は 15〜60 秒、障害調査時は 1〜5 秒に設定するのが一般的です。

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

セクション主な取得情報Oracle AWR 対応JSON キー
CPU 統計 total・user・system・wait・steal OS Statistics(CPU) cpuUtilization.*
メモリ統計 total・free・used・cached・swap OS Statistics(Memory) memory.*・swap.*
ディスク I/O 統計 IOPS・スループット・レイテンシ・ビジー率 I/O Statistics diskIO[].*
ネットワーク統計 受信・送信バイト数 OS Statistics(Network) network[].*
プロセスリスト プロセス名・CPU/メモリ使用率 Top Sessions processList[].*