Amazon Aurora MySQLから出力できるログの種類をAWS CloudFormationテンプレートの観点からまとめてみた

AWS CloudFormationテンプレートでは、Amazon Aurora MySQLからAmazon CloudWatch Logsへ出力するログを設定できます。このテンプレート上の表記と実際のログを当てはめながら、各種ログの詳細をまとめてみました。
2024.02.22

Amazon Aurora MySQLからログをエクスポートしたい

おのやんです。

みなさん、Amazon Aurora MySQL(以下、Aurora MySQL)のログをエクスポートしたいと思ったことはありませんか?私はあります。

Aurora MySQLでは、データベースのログをAmazon CloudWatch Logs(以下、CLoudWatch Logs)にエクスポートできます。この際、エクスポートできるログには4つの種類があります。

ですが2024年2月時点では、これらのログについてAWS CloudFormation(以下、CFn)のドキュメントに説明がありませんでした。 ということで、今回はエクスポートできる4種類のログをCFnの観点でまとめてみたいと思います。

Aurora MySQLのログエクスポートについて

Aurora MySQLはAWSが提供するRDSサービスです。このAurora MySQLですが、監査ログ・エラーログ・一般ログ・スロークエリログの4種類のログエクスポートをサポートしています。

こちらをマネジメントコンソール上から設定する場合、それぞれのログが日本語で表示されます。そのため、各種ログがどういった内容なのかを比較的把握しやすいかと思います。

一方でCFnテンプレート上で設定しようとした場合、それぞれのログは英語での設定値となります。そのため、各種ログの概要が掴みづらい場合があります。

2024年2月執筆時点では、CFnのテンプレートのAWS::RDS::DBClusterリソースのドキュメントには、ログエクスポート設定の項目に関して以下のような記述となっています。

EnableCloudwatchLogsExports
The list of log types that need to be enabled for exporting to CloudWatch Logs. The values in the list depend on the DB engine being used. For more information, see Publishing Database Logs to Amazon CloudWatch Logs in the Amazon Aurora User Guide.

Aurora MySQL

Valid values: audit, error, general, slowquery

このaudit, error, general, slowqueryが、場合によってはわかりにくいと感じるかもしれません。そういうわけで、以降ではこれらの項目と照らし合わせながら各種ログをまとめていきます。

各種ログの詳細

各種ログのエクスポートを有効にした場合、CloudWatch Logsにそれぞれエクスポートされます。

各種ログの設定値や概要を、以下の表にまとめました。こちらを順番に解説していきます。

CFn上の項目値 項目 CloudWatch Logsのロググループ 概要
audit 監査ログ /aws/rds/cluster/<クラスタ名>/audit データベースやテーブルへのアクセス記録、データベーススキーマの変更履歴などを記録
error エラーログ /aws/rds/cluster/<クラスタ名>/error MySQLの処理の際に発生したエラーを記録
general 全般ログ /aws/rds/cluster/<クラスタ名>/general MySQLが実行した全SQLクエリを記録
slowquery スロークエリログ /aws/rds/cluster/<クラスタ名>/slowquery 処理に時間がかかっているSQLクエリを記録

監査ログ(audit)

監査ログには、データベースやテーブルへのアクセス記録、データベーススキーマの変更履歴などが記録されています。CFnテンプレートではauditと表記されます。

CloudWatch Logs上では、/aws/rds/cluster/<クラスタ名>/auditのロググループにエクスポートされています。

こちらが監査ログの例になります。

2024-02-22T12:16:33.341+09:00 1708571793341651,database-1-instance-1,rdsadmin,localhost,6,62738,QUERY,,'set local oscar_local_only_replica_host_status=1',0
2024-02-22T12:16:33.342+09:00 1708571793342224,database-1-instance-1,rdsadmin,localhost,6,62739,QUERY,,'SELECT durable_lsn, current_read_point, server_id, last_update_timestamp FROM information_schema.replica_host_status',0
2024-02-22T12:16:33.342+09:00 1708571793342449,database-1-instance-1,rdsadmin,localhost,6,62740,QUERY,,'set local oscar_local_only_replica_host_status=0',0

エラーログ(error)

エラーログには、MySQLの処理の際に発生したエラーが記録されています。CFnテンプレートではerrorと表記されます。

CloudWatch Logs上では、/aws/rds/cluster/<クラスタ名>/errorのロググループにエクスポートされています。

こちらがエラーログの例になります。

2024-02-22T01:44:46.016496Z 0 [Warning] The syntax '--secure-auth' is deprecated and will be removed in a future release
2024-02-22T01:44:46.016794Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2024-02-22T01:44:46.016496Z 0 [Warning] The syntax '--secure-auth' is deprecated and will be removed in a future release
2024-02-22T01:44:46.016794Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.

全般ログ(general)

全般ログには、MySQLが実行した全SQLクエリが記録されています。CFnテンプレートではgeneralと表記されます。

CloudWatch Logs上では、/aws/rds/cluster/<クラスタ名>/generalのロググループにエクスポートされています。

こちらが全般ログの例になります。

2024-02-22T03:21:33.746307Z	    6 Query	SELECT durable_lsn, current_read_point, server_id, last_update_timestamp FROM information_schema.replica_host_status;
2024-02-22T03:21:33.746754Z	    6 Query	set local oscar_local_only_replica_host_status=0
2024-02-22T03:21:33.786573Z	    5 Query	SET @@sql_log_bin=off

スロークエリログ(slowquery)

スロークエリログには、処理に時間がかかっているSQLクエリが記録されています。CFnテンプレートではslowqueryと表記されます。

CloudWatch Logs上では、/aws/rds/cluster/<クラスタ名>/slowqueryのロググループにエクスポートされています。

こちらがスロークエリログの例になります。

# Time: 2024-02-22T03:12:11.857817Z
# User@Host: rdsadmin[rdsadmin] @ localhost []  Id:     5
# Query_time: 0.000077  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1708571531;
select @@session.transaction_read_only;

Aurora MySQLでは4種類のログをエクスポートできる

今回はAurora MySQLでエクスポート可能な4種のログをそれぞれまとめました。また、CFnテンプレート上の表記も補足させていただきました。

特にエラーログやスロークエリなどは、障害調査等で参照することが多いかと思います。これらのログはリアルタイムで確認できますので、お手元の環境でも可能な範囲で有効化しておきましょう。では!

参考