
Aurora ServerlessでログをCloudWatch Logsへ出力可能になりました
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
大栗です。
先程Aurora ServerlessのログをCloudWatch Logsへ出力できるようになりましたので試してみました。
- Amazon Aurora Serverless Publishes Logs to Amazon CloudWatch
- Document History - Uploading to CloudWatch Aurora Serverless
- Viewing Aurora Serverless DB Clusters
Aurora Serverlessのログ出力
以前のAurora Serverlessは詳細なログ出力の機能は無く、RDSとしてのイベント情報のみが参照可能でした。そのためDB内部の情報を取得出来ませんでした。今回のアップデートによりCloudWatch Logsへのログ出力が可能になり、詳しい情報が取得できます。
出力可能なログは普通のAurora MySQLと同様に以下のもののようです。
- エラーログ
- 監査ログ
- 一般ログ
- スロークエリログ
また、今回のアップデートの伴ってクラスターパラメータグループでインスタンス用の項目も設定できるようになっています。そのため、今までクラスターパラメータグループでは設定できなかったslow logやgeneral logの設定も行えるようになっています。
やってみる
今回は東京リージョンで試してみます。
クラスターパラメータグループの設定
まずログ設定のためのクラスターパラメータグループを作成します。
RDSコンソールのパラメータグループの画面でパラメータグループの作成をクリックします。

以下のように設定を行い、作成をクリックします。
| 項目名 | 値 | 備考 |
|---|---|---|
| パラメータグループファミリー | aurora5.6 | Aurora Serverlessは5.6のみのため |
| タイプ | DB Cluster Parameter Group | |
| グループ名 | serverless-1 | 自由に設定して下さい |
| 説明 | <任意> |

次にログ出力の設定を行います。
エラーログ
エラーログは設定無しで出力されるため割愛します。
監査ログ
監査ログはクラスターパラメータグループに以下の設定を行います。
| 項目名 | 設定可能な値 | 備考 |
|---|---|---|
| server_audit_events | CONNECT, QUERY, QUERY_DCL, QUERY_DDL, QUERY_DML, TABLE | 監査する対象のイベントです。複数イベントの入力が可能です。 |
| server_audit_excl_users | <なし> | 監査対象外のユーザなし |
| server_audit_incl_users | <なし> | 全てのユーザが対象 |
| server_audit_logging | 1 | 監査ログを有効にするか設定します。 |
| server_audit_logs_upload | 1 | 監査ログのCloudWatch Logsへのアップロードを有効にするか設定します。 |
一般ログ
一般ログはクラスターパラメータグループに以下の設定を行います。
| 項目名 | 設定可能な値 | 備考 |
|---|---|---|
| general_log | 1 | 監査ログを有効にするか設定します。 |
スロークエリログ
スロークエリログはクラスターパラメータグループに以下の設定を行います。スロークエリの設定にはlog_queries_not_using_indexesなどもありますがここでは割愛します。
| 項目名 | 設定可能な値 | 備考 |
|---|---|---|
| slow_query_log | 1 | スロークエリログを有効にするか設定します。 |
| long_query_time | 1 | スロークエリを出力する実行時間の閾値(秒) |
Aurora Serverlessを起動する
Aurora Serverlessを起動します。
RDSコンソールのデータベースの画面でデータベースの作成をクリックします。

エンジンのオプションでAmazon Auroraを選択して、エディションでMySQL 5.6 との互換性を選択して次へをクリックします。

以下のように設定して、次へをクリックします。
| 項目 | 値 |
|---|---|
| Capacity type | Serverless |
| DB クラスター識別子 | <任意> |
| マスターユーザの名前 | <任意> |
| マスターパスワード | <任意> |
| パスワードの確認 | <マスターパスワードの値> |

今回は以下のように設定します。
| 項目 | 値 | 備考 |
|---|---|---|
| 最小 Aurora キャパシティーユニット | 2 | |
| 最大 Aurora キャパシティーユニット | 64 | |
| Virtual Private Cloud (VPC) | デフォルト VPC | |
| サブネットグループ | default | |
| VPC セキュリティグループ | 既存の VPC セキュリティグループ の選択(default) |

追加設定を開き以下の設定を行って、データベースの作成をクリックします。
| 項目 | 値 | 備考 |
|---|---|---|
| DB クラスターのパラメータグループ | serverless-1 | クラスターパラメータグループの設定で作成したものを設定 |
| バックアップの保存期間 | 1日 | |
| マスターキー | <任意> | |
| 削除保護の有効化 | チェック |

Aurora Serverlessが起動するまで待ちます。
Aurora Serverlessが起動したら対象のクラスタを選択して、
ログを確認する
まずAurora Serverlessにログイン確認をしてみます。普通にログインができます。
$ mysql -uawsuser -pmypassword -h serverless-1.cluster-a1b2c3d4e5f6.ap-northeast-1.rds.amazonaws.com Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 5.6.10 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
SQLも実行してみます。スロークエリを出力するためにsleepで5秒待ってみます。
MySQL [(none)]> select now(); +---------------------+ | now() | +---------------------+ | 2019-02-26 08:26:18 | +---------------------+ 1 row in set (0.00 sec) MySQL [(none)]> select sleep(5); +----------+ | sleep(5) | +----------+ | 0 | +----------+ 1 row in set (5.00 sec) MySQL [(none)]>
次にログを確認します。ログは以下の命名ルールでCloudWatch Logsに出力されます。
| ログの種類 | ロググループ名 |
|---|---|
| エラーログ | /aws/rds/cluster/<クラスタ名>/error |
| 監査ログ | /aws/rds/cluster/<クラスタ名>/audit |
| 一般ログ | /aws/rds/cluster/<クラスタ名>/general |
| スロークエリログ | /aws/rds/cluster/<クラスタ名>/slowquery |

各々のログを確認してみます。
エラーログ

監査ログ

一般ログ

スロークエリログ

さいごに
ようやくDBの詳細情報が取れるようになりました。基本的には開発や検証用途の目的でAurora Serverlessを使用するものですが、何かあったときにはログがないと状況が掴めません。CloudWatch Logsなのでログを出力しすぎると高コストになってしまいますが、できる限りログを出力したほうが良いかもしれません。






