BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】Aurora Serverless のログをCloudWatchに出力する方法

こんにちは!
BFT名古屋支店の佐野です。

少しばかり間が空いてしまいましたが、今回はCloudWatchにAWSサービスのログを出力するシリーズ第5回目をお送りさせて頂きます。
VPCエンドポイントの回を入れれば6回目です)

今回扱うサービスは、AWS環境におけるデータベース部分を担うRDS、その内のひとつである「Aurora Serverless」です。


はじめに

実はRDS及びAurora(Serverless含む)は、エラーログについては標準でCloudWatchにログが出力されるようになっています。
しかし監査ログ、一般ログ、スロークエリログについては、それぞれのログ取得を有効化しないとログがCloudWatchに出力されません。
この有効化については、DBクラスターパラメータグループ内で設定を行なうことができます。

ただしデフォルトのDBクラスターパラメータグループの設定を変更することはできないため、独自にDBクラスターパラメータグループを作成する必要があります。

この独自のパラメータグループを作成せず、またデータベース(DBインスタンス)の作成時にパラメータグループを指定せずに作成すると、自動的にデフォルトのパラメータグループが紐づくことになります。
その場合、上述した3種のログをCloudWatchへ出力したい時には作成・起動後にパラメータグループを変更しなければいけなくなります。
ログ出力の必要が見込まれる時には、あらかじめログの取得を有効化したパラメータグループを用意しておき、データベース作成時から適用することをお勧めします。


ログ取得の有効化:DBクラスターパラメータグループの設定

では、ログ取得の有効化を設定するためのクラスターパラメータグループを作成しましょう。
ますはマネジメントコンソールから「RDS」コンソールに入り、パラメータグループ項目を選択。
その後「パラメーターグループの作成」を選択します。

f:id:bftnagoya:20201220172229p:plain

「パラメーターグループの作成」画面となったら以下のように設定をし、「作成」を選択してください。

  • パラメータグループファミリー
    ⇒ aurora5.6を選択します。

  • タイプ
    ⇒ DB Cluster Parameter Groupを選択します。

  • グループ名と説明
    ⇒ 任意の名称を入力してください。なお説明は入力自体も任意となります。

f:id:bftnagoya:20201220172233p:plain

これでパラメータグループの作成が行なえますので、次に作成したパラメータグループに対してログ取得の有効化設定を行なっていきます。
それぞれのログについて、設定項目と設定する値については以下の通りになります。

  • 監査ログ
項目名 設定値 解説
server_audit_events CONNECT、QUERY、QUERY_DCL、QUERY_DDL、QUERY_DML、TABLE 監査する対象のイベントを指定
server_audit_excl_users (null) 監査対象外のユーザーを指定
server_audit_incl_users (null) 指定したユーザーのログのみを出力する
server_audit_logging 1 1にすることで監査ログ出力を有効化
server_audit_logs_upload 1 1にすることで監査ログのCloudWatchへの出力を有効化
  • 一般ログ
項目名 設定値 解説
general_log 1 1にすることで一般ログ出力を有効化
  • スロークエリログ
項目名 設定値 解説
slow_query_log 1 1にすることでスロークエリログ出力を有効化
long_query_time 1 スロークエリを出力する実行時間の秒単位のしきい値

各項目を編集する際は「パラメータグループ」項目から、作成した独自のパラメータグループを選択後、「パラメーターの編集」を選択することで可能となります。
また項目については検索が可能ですので「フィルタパラメータ」欄に上述の項目を入れると手早く変更が可能です。

例:server_audit_loggingを設定する場合

f:id:bftnagoya:20201220172226p:plain

パラメータの変更が完了したら、ここで変更したパラメータグループと紐づけたデータベースを作成するか、ログを出力する対象のデータベースのパラメータグループをここで変更したものに変えてください。


最後に

今回はAurora ServerlessにてCloudWatchにログを出力するための共通の設定方法を紹介させて頂きました。
RDSで単純にデータベースを作成する際、パラメータグループについては最初気にせず作成してしまうことが多いと思いますが、監査などを考えた場合はパラメータグループの設定から入った方が良さそうです。

またログを出力する際はMySQLPostgreSQLそれぞれで個別の設定が必要な場合がありますが、今回それは割愛させて頂きます。