話題の記事

【アップデート】Amazon Auroraでスロークエリや一般ログがCloudWatch Logsへ出力可能に

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大栗です。

先程Amazon Auroraのスロークエリログ、一般ログ、エラーログをCloudWatch Logsへ出力可能になりました。内容についてレポートします。

Announcement: Amazon Aurora Publishes General, Slow Query and Error Logs to Amazon CloudWatch

CloudWatch Logsへのログファイル出力

MySQL互換Auroraでは、以下のログを出力しています。

  • 監査ログ
  • エラーログ
  • 一般ログ
  • スロークエリログ

この中で監査ログは先行してCloudWatch Logsへ出力可能になっていました。またMySQLやMariaDBでは上記ログをCloudWatch Logsへ出力可能になっていたため、Auroraでも待望されていた機能でした。

RDSのMySQL/MariaDBでログをCloudWatch Logsへ出力可能になりました

CloudWatch Logsのロググループ名は、監査ログと同様に以下の形式です。ログストリーム名はインスタンスIDとなっています。

/aws/rds/cluster/<クラスタ名>/<ログ名>

各種ログをCloudWatch Logsへ出力するためにはlog_outputFILEを設定する必要があるのでご注意下さい。またCloudWatch Logsへの出力はService Linked Roleを使用するので、細かい権限の調整は不要です。

やってみる

今回は以下の前提で検証します。

  • リージョン:東京
  • Auroraバージョン:2.02
  • インスタンスクラス:db.t2.small

MySQL 5.6互換(バージョン1系)とMySQL 5.7互換(バージョン2系)の両方でログ出力が可能ですが、今回はMySQL 5.7互換で試します。

パラメータグループの作成

まずDBパラメータグループを作成します。

RDSのコンソールでパラメータグループの作成をクリックします。

以下の内容で作成をクリックします。

パラメータ 設定値 備考
パラメータグループファミリー aurora-mysql5.7 MySQL 5.7互換が前提のため
タイプ DB Parameter Group
グループ名 <任意>
説明 <任意>

監査ログの設定を行うためにDBクラスタパラメータグループも作成します。

以下の内容で作成をクリックします。

パラメータ 設定値 備考
パラメータグループファミリー aurora-mysql5.7 MySQL 5.7互換が前提のため
タイプ DB Cluster Parameter Group
グループ名 <任意>
説明 <任意>

作成したDBパラメータグループの内容を設定していきます。

DBパラメータグループでは以下のパラメータを編集します。

パラメータ 設定値 備考
general_log 1 一般ログを有効にする
slow_query_log 1 スロークエリログを有効にする
long_query_time 0 スロークエリの閾値
log_output FILE デフォルトでFILEになっている

DBクラスタパラメータグループでは以下のパラメータを編集します。今回はクエリ情報を全ユーザで出力します。

パラメータ 設定値 備考
server_audit_logging 1 監査ログを有効にする
server_audit_events QUERY 監査する対象のイベント
server_audit_excl_users <無し> 監査対象外とするユーザ
server_audit_incl_users <無し> 監査対象とするユーザ

Auroraの起動

Auroraを起動します。

AuroraはMySQL 5.7互換を選択します。(MySQL 5.6互換でも出力可能です)

移行は今までと同様にAuroraを構築します。

[詳細設定] の設定の内容に注意して下さい。

データベースの設定DB パラメータグループDB クラスターのパラメータグループで先程設定したものを指定します。

ログのエクスポートでCloudWatch Logsへ出力するログを選択します。ここでは全て選択しています。

以降は普通に設定して起動します。

ログを確認する

CloudWatch Logsを確認します。

以下のロググループ名、ログストリーム名で出力されます。

ログ種別 ロググループ名 ログストリーム名
監査ログ /aws/rds/cluster/<クラスタ名>/audit <DBインスタンス名>.audit.log..YYYY-MM-DD-HH-MI.0.
エラーログ /aws/rds/cluster/<クラスタ名>/error <DBインスタンス名>
一般ログ /aws/rds/cluster/<クラスタ名>/general <DBインスタンス名>
スロークエリログ /aws/rds/cluster/<クラスタ名>/slowquery <DBインスタンス名>

各々のログは以下のように出力されます。

監査ログ

エラーログ

一般ログ

スロークエリログ

さいごに

監査ログや一般ログを有効にすることは多くないと思いますが、スロークエリログは障害調査などでよく使用すると思います。CloudWath Logsに出力できるとほぼリアルタイムに出力でき、時刻で検索できるので調査に役立つので基本的に有効化しておきましょう。