13
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Amazon RDS for MySQL のログを Amazon CloudWatch Logs へ直接保存する。

Posted at

はじめに

Amazon RDS のログが Amazon CloudWatch へ直接保存できるようになったということで、試してみました。

対応ログタイプ

RDSでエクスポートできるログタイプは以下になります。

  • Error log – 起動および停止にデータベースエンジンによって生成された診断メッセージが含まれています
  • General query log – クライアントから受け取ったすべてのSQLステートメントのレコードと、クライ アントの接続および切断時間を含みます。
  • Slow query log – 設定された時間よりも実行に時間かかったクエリや、定義された行数を超える行を走査したSQL文のレコードが含まれています。 両方の閾値は設定可能です。
  • Audit log – MariaDB Audit Pluginを使用して提供されるこのログは、監査目的でデータベースアクティビティを記録します。

ログイベントは CloudWatch のロググループにログストリームの形式で保存されます。
また、ログはDBインスタンスの同じリージョン内で保存されます。

パラメータグループの設定

ログをCloudWatchへ送るために、まずはログ出力を有効にする必要があります。

今回は「set-log」というパラメータグループを新規に用意して設定しています。
スクリーンショット 2018-02-06 11.14.18.png

作成したらパラメータグループをクリックします。
スクリーンショット 2018-02-06 11.15.05.png

それでは、各ログを有効にするために以下の設定を行います。

Slow query log

slow_query_log のパラメータを修正します。
デフォルトは値なし(0)なので1へ変更します。
スクリーンショット 2018-02-06 11.16.40.png

また、スロークエリーログに出力される値は long_query_time で設定できます。

スクリーンショット 2018-02-07 22.36.16.png

デフォルトは値なしですがその場合はデフォルト値(10秒)となります。

General query log

general_log のパラメータを修正します。
こちらも、デフォルトは値なし(0)なので1へ変更します。
スクリーンショット 2018-02-06 11.17.08.png

Error log

Error log は標準で有効なのでパラメータの変更は不要です。

ログ出力

log_outpu のパラメータを修正します。
デフォルトのログ出力はTABLEなのでFILEへ変更します。
スクリーンショット 2018-02-06 11.17.41.png

注意: 本番DBインスタンスのAudit logとGeneral query logを有効にする場合は注意が必要です。これらのログは実行されたすべてのステートメントをキャプチャして記録するため、DBインスタンスのパフォーマンスが低下する可能性があります。

データベースの設定変更

新規の場合は作成時にパラメータグループを指定します。既存のDBインスタンの場合はパラメータグループの変更を行うか、先ほど設定したログ内容を

「ログのエクスポート」でエクスポートするログを選択します。
スクリーンショット 2018-02-06 11.33.33.png

以上で完了です。

確認

Amazon CloudWatch Logs を確認します。
ログは以下のような命名パターンで作成されます。

log
/aws/rds/instance/<db-instance-id>/<log-type>

実際に先ほど設定したログが保存されると以下のようになります。

スクリーンショット 2018-02-06 11.52.09.png
スクリーンショット 2018-02-06 12.06.08.png

ログのエクスポートで全般ログにチェックを入れませんでしたが、入れるとgeneralという名前のログが保存されます。

Amazon RDS → Amazon CloudWatch Logs

Amazon RDSはDBインスタンスと同じアカウント内のロググループにservice-linked roleを使用してログを送信します。これにより、Amazon RDSはアカウント内の関連するロググループにアクセスできます。
ログの送信を有効にすると、AWSServiceRoleForRDSという追加のIAMロールが通常は作成されます。
設定後にはIAMの管理画面で実際に確認ができます。

スクリーンショット 2018-02-06 21.23.32.png

おわりに

今まで、RDSのログを保存するのにCLIなどで定期的にダウンロードを行っていましたが、今後はそういったことが不要になるのはとても助かります。
また、これによって Amazon CloudWatch でログ監視ができるようになるため、運用負荷がとても軽くなるなと感じました。

13
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?