Amazon-RDS

RDS MySQLのログをCloudWatch Logsに出力する

RDS MySQLのログをCloudWatch Logsに出力する

こんにちは、SRE課栩野です。

今回はRDS MySQLのログ出力に関する小ネタです。

MySQLから出力される各種ログをCloudWatch Logsに出力したかった
のですが、MySQLのパラメータ「log_output」のデフォルト設定のせいで
つまづいたので、同じのような人の助けになれば...

MySQLのログがCloudWatch Logsに出力されない...

MySQLのエラーログ、一般ログ、スロークエリログの3つのログを
CloudWatch Logsに出力しようと、以下2つの設定を行いました。

  • 対象DBでCloudWatch Logsへのログ出力設定
    対象DBを選択し、DBインスタンスの変更画面から以下の通り
    CloudWatch Logsに出力したいログ3つにチェックを入れました。

  • MySQLパラメータの設定
    カスタムパラメータグループを作成し、欲しいログが出力されるよう
    以下の設定を有効化しました。
    ※検証のためlong_query_timeは0に設定してます。

この状態で上手く行くと思い、いくつか適当なクエリを実行しましたが
エラーログだけしかCloudWatch Logsにロググループが作成されておらず...

ログが出力されない原因

調べたところ、一般ログとスロークエリログを外に出力したい場合
最初に紹介した「log_output」というMySQLのパラメータを変更する
必要がありました。

デフォルトでは「TABLE」になっているのですが、この場合だと
mysql配下にあるテーブルに対してログが出力されてしまいます。

この値を「FILE」に変更することによって、ファイルシステムに対して
ログが出力できるようになるようで、それによりCloudWatch Logsに
出力することが可能になるようでした。

MySQL データベースログファイル RDSドキュメント

CloudWatch Logsへの出力再チャレンジ

設定しているカスタムパラメータグループを選択し
「log_output」の値を「TABLE」から「FILE」に変更します。

適当なクエリを再度実行し、CloudWatch Logsを確認しにいくと...

無事に欲しかった3つのロググループが作成され、ログが出力されていました!

めでたしです。

CloudWatch Logsにログを出力する場合は、保持期間が「失効しない」だと
ログファイルが肥大化し、余計な費用が発生するので、適切な保持期間に変更
しておくことをおすすめします。

以上、今回はRDS MySQLのログ出力に関する小ネタでした。

参照

MySQL データベースログファイル RDSドキュメント

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA