この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ウィスキー、シガー、パイプをこよなく愛する大栗です。 Amazon RDSで拡張モニタリングという、CloudWatchで細かい情報を取得できる機能が発表されましたので、ご紹介したいと思います。
拡張モニタリング
RDSはOSにログイン出来ないためCloudWatchへ出力されるメトリクスを見ることで、状態を確認していました。CloudWatchで見ることができるメトリクスは限られた情報でした。そこでOSの詳細情報を取得することができる機能が 拡張モニタリング です。
実は先日開催されたAWSのカンファレンスであるre:Invent 2015でアナウンスされていました。
何が取得できる?
OSに関する様々な情報が取得できます。大きく分類すると以下の内容となります。
グループ | 内容 |
---|---|
General | DBインスタンス全体の情報です |
cpuUtilization | CPUの使用状況の情報です |
diskIO | ディスクI/Oに関する情報です |
fileSys | ファイルシステムの情報です |
loadAverageMinute | 1分、5分、15分のロードアベレージです |
memory | メモリの使用状況に関する情報です |
network | ネットワークの情報です |
processList | 起動しているプロセスの情報です |
swap | SWAPの情報です |
tasks | タスク全体の情報です |
取得できる情報の詳細は、RDSのドキュメントを参照ください。2015年12月19日時点では英語版のみに記載されています。
使用可能なDBは?
現時点で拡張モニタリングを使用できるDBエンジンは以下の3種類です。
- Aurora
- MySQL
- MariaDB
拡張モニタリングを試してみる
Auroraで試してみます。
普通にAuroraを起動していきます。
[詳細設定] の設定
で モニタリング
という項目が増えているので、 拡張モニタリングを有効にする
を「はい」に設定すると モニタリングロール
と 詳細度
という項目が表示されます。なお既に起動しているRDSも「変更」で拡張モニタリングを有効にすることができます。
項目 | 内容 |
---|---|
拡張モニタリングを有効にする | 拡張モニタリングを使用するか選択します。 |
モニタリングロール | メトリクスをCloudWatch Logsへ出力する時に使用するIAM Role を選択します。通常は「デフォルト」で問題ありません。 |
詳細度 | 取得する情報の間隔(秒)を設定します。1,5,10,15,30,60秒から選択できます。 |
設定を有効にすると、RDSのコンソールからグラフを見ることができます。 モニタリングを表示
で 拡張モニタリング
を選択すると様々なグラフが表示されます。
各種メトリクスは、CloudWatch Logsに出力されています。 RDSOSMetrics
というロググループに出力されます。
ログストリームは、DBインスタンスごとに作成されているようです。
実際の情報は、このようになります。
{
"engine": "Aurora",
"instanceID": "myaurora",
"instanceResourceID": "db-CRLZUAHQFQD3KQO62IBMEFVBDY",
"timestamp": "2015-12-19T00:06:41Z",
"version": 1,
"uptime": "3 days, 21:48:51",
"numVCPUs": 2,
"cpuUtilization": {
"guest": 0,
"irq": 0,
"system": 1.01,
"wait": 0.3,
"idle": 97.77,
"user": 0.71,
"total": 1.72,
"steal": 0,
"nice": 0.2
},
"loadAverageMinute": {
"fifteen": 0.05,
"five": 0.02,
"one": 0
},
"memory": {
"writeback": 0,
"hugePagesFree": 0,
"hugePagesRsvd": 0,
"hugePagesSurp": 0,
"cached": 10632900,
"hugePagesSize": 2048,
"free": 2635528,
"hugePagesTotal": 0,
"inactive": 1324260,
"pageTables": 23900,
"dirty": 356,
"mapped": 8090316,
"active": 11392724,
"total": 15670012,
"slab": 179628,
"buffers": 279148
},
"tasks": {
"sleeping": 221,
"zombie": 0,
"running": 3,
"stopped": 0,
"total": 224,
"blocked": 0
},
"swap": {
"cached": 0,
"total": 0,
"free": 0
},
"network": [
{
"interface": "eth0",
"rx": 227.8,
"tx": 832.6
}
],
"diskIO": [
{
"readLatency": 0,
"writeLatency": 2.89,
"writeThroughput": 483,
"readThroughput": 0,
"readIOsPS": 0,
"diskQueueDepth": 0,
"writeIOsPS": 1.8
}
],
"fileSys": [
{
"used": 700344,
"name": "rdsfilesys",
"usedFiles": 622,
"usedFilePercent": 0.03,
"maxFiles": 1966080,
"mountPoint": "/rdsdbdata",
"total": 30828540,
"usedPercent": 2.27
}
],
"processList": [
{
"vss": 10141984,
"name": "aurora",
"tgid": 18585,
"parentID": 1,
"memoryUsedPc": 60.46,
"cpuUsedPc": 0,
"id": 18585,
"rss": 9474172
},
{
"vss": 10141984,
"name": "aurora",
"tgid": 18585,
"parentID": 1,
"memoryUsedPc": 60.46,
"cpuUsedPc": 0.3,
"id": 18991,
"rss": 9474172
},
{
"vss": 647308,
"name": "OS processes",
"tgid": 0,
"parentID": 0,
"memoryUsedPc": 0.19,
"cpuUsedPc": 0,
"id": 0,
"rss": 23576
},
{
"vss": 3236624,
"name": "RDS processes",
"tgid": 0,
"parentID": 0,
"memoryUsedPc": 2.81,
"cpuUsedPc": 1.1,
"id": 0,
"rss": 442676
}
]
}
さいごに
RDSの詳細な情報が取得できるようになり、様々な視点で監視できるようになりました。この情報を元に、細かいチューニングができそうです。CloudWatch Logsにデータが出力されるので、簡単にElasticsearch Serviceへストリーミングできます。Elasticsearch Serviceでリアルタイム監視もできそうでワクワクしています。