こんにちは!
BFT名古屋支店の佐野です。
少しばかり間が空いてしまいましたが、今回はCloudWatchにAWSサービスのログを出力するシリーズ第5回目をお送りさせて頂きます。
(VPCエンドポイントの回を入れれば6回目です)
今回扱うサービスは、AWS環境におけるデータベース部分を担うRDS、その内のひとつである「Aurora Serverless」です。
はじめに
実はRDS及びAurora(Serverless含む)は、エラーログについては標準でCloudWatchにログが出力されるようになっています。
しかし監査ログ、一般ログ、スロークエリログについては、それぞれのログ取得を有効化しないとログがCloudWatchに出力されません。
この有効化については、DBクラスターパラメータグループ内で設定を行なうことができます。
ただしデフォルトのDBクラスターパラメータグループの設定を変更することはできないため、独自にDBクラスターパラメータグループを作成する必要があります。
この独自のパラメータグループを作成せず、またデータベース(DBインスタンス)の作成時にパラメータグループを指定せずに作成すると、自動的にデフォルトのパラメータグループが紐づくことになります。
その場合、上述した3種のログをCloudWatchへ出力したい時には作成・起動後にパラメータグループを変更しなければいけなくなります。
ログ出力の必要が見込まれる時には、あらかじめログの取得を有効化したパラメータグループを用意しておき、データベース作成時から適用することをお勧めします。
ログ取得の有効化:DBクラスターパラメータグループの設定
では、ログ取得の有効化を設定するためのクラスターパラメータグループを作成しましょう。
ますはマネジメントコンソールから「RDS」コンソールに入り、パラメータグループ項目を選択。
その後「パラメーターグループの作成」を選択します。
「パラメーターグループの作成」画面となったら以下のように設定をし、「作成」を選択してください。
パラメータグループファミリー
⇒ aurora5.6を選択します。タイプ
⇒ DB Cluster Parameter Groupを選択します。グループ名と説明
⇒ 任意の名称を入力してください。なお説明は入力自体も任意となります。
これでパラメータグループの作成が行なえますので、次に作成したパラメータグループに対してログ取得の有効化設定を行なっていきます。
それぞれのログについて、設定項目と設定する値については以下の通りになります。
- 監査ログ
項目名 | 設定値 | 解説 |
---|---|---|
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を設定する場合
パラメータの変更が完了したら、ここで変更したパラメータグループと紐づけたデータベースを作成するか、ログを出力する対象のデータベースのパラメータグループをここで変更したものに変えてください。
最後に
今回はAurora ServerlessにてCloudWatchにログを出力するための共通の設定方法を紹介させて頂きました。
RDSで単純にデータベースを作成する際、パラメータグループについては最初気にせず作成してしまうことが多いと思いますが、監査などを考えた場合はパラメータグループの設定から入った方が良さそうです。
またログを出力する際はMySQLやPostgreSQLそれぞれで個別の設定が必要な場合がありますが、今回それは割愛させて頂きます。