Aurora MySQL 3で監査ログを有効化しているとCPU使用率が上昇する

# 概要

SREチームが管理する一部のAWSアカウントで、10月25日以降、Aurora MySQLクラスターのCPU使用率が平均して8%ほど上昇する事象が確認されました。

![270607e6-9793-5f44-1474-c84946ee7a44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/40ab5786-e894-acce-199b-c1d5444f0506.png)


事象が確認されたクラスターのインスタンスタイプは `t4g.medium` のため、CPUベースラインは20% [^baseline] となります。
監視上はCPU使用率が平均20%を超えた場合にアラートを出す設定としており、一次調査を行うことにしました。

# 発生日時

2023/10/25 23時以降継続的に発生。

# 調査

* CPU使用率の上昇は10月25日23時頃から発生。平常時のCPU使用率が平均15%未満に対し、複数のRDSクラスターで突発的にCPU使用率が23%台に上昇。その後 (2023年12月現在) も使用率が下がらない状況となっている。<br>
    ![Screen_Shot_2023-12-07_at_17_26_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/3f8a88e0-e5f0-f4ee-74de-07430dbcc441.png)
* 23時台にフェイルオーバーと推測される挙動をメトリクスから確認。
![Screen_Shot_2023-12-07_at_17_31_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/328179f3-5756-2310-b743-1e60d739bd65.png)
* ワークロードに関連するAPMやメトリクスを確認する限り、急激なスパイクアクセスや高負荷の形跡は見当たらなかった。
    * 該当時間帯にリリースは行われていない。
    * MySQLで `SHOW PROCESSLIST` を確認しても、負荷の高いクエリは実行されていない。
    * 同様にスロークエリのログも記録されていなかった。
* 該当時間帯はメンテナンスウィンドウの時間帯に一致していた。このことから、メンテナンスウィンドウ内で行われた何らかのアップデートによりCPU使用率が上昇した可能性が考えられる。<br>
    ![Screenshot_2023-12-08_at_13_02_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/32db8c61-1c42-0237-d769-2c1ac479c61f.png)
* 10月25日以降、T系インスタンスで構成される全てのクラスターでCPUクレジットの消費が発生していることを確認。<br>
    ![Screen_Shot_2023-12-07_at_17_43_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/d4731ae2-a9af-7744-1bd5-7a471b233e6e.png)
* CPUクレジット枯渇後、 `aws.rds.cpusurplus_credit_balance` (CPUSurplusCreditBalance [^cpu_surplus_credit_balance]) の上昇を検知。<br>
    ![Screen_Shot_2023-12-07_at_17_45_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/d523dd4f-10b5-a135-8762-e170e4e550dc.png)
* インスタンスの再起動を試みたところ、再起動直後は15%台 (平常時と同じ) をキープするものの、約24時間経過することで23%台まで上昇することを確認。<br>
    ![Screen_Shot_2023-12-07_at_18_04_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/f693efef-fb85-b65d-e419-c651f0ce57c7.png)
* ワークロードの問題か基盤の問題かを切り分けるため、クラスターの接続許可ポートを一時的に使用していない番号に変更。
* 検証した結果、再起動と同様、一時的にCPU使用率は下がるものの、約24時間経過で23%台まで上昇することを確認できた。<br>
    ![Screen_Shot_2023-12-07_at_18_04_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/7081af50-a547-765f-2e87-7a15f7251569.png)
* 事象が発生しているクラスターを元に、最新のスナップショットから新しいクラスターを構築したところ、1週間経過を見てもCPU使用率は11%台をキープし、CPU使用率の上昇は発生しないことを確認できた。<br>
    ![Screenshot_2023-12-07_at_21_43_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/cd45603c-71f5-3ca4-767e-7fff01bd66b6.png)
* 以上の状況から、CPU使用率上昇の原因はワークロードではなく、メンテナンスウィンドウ以降、対象クラスターの基盤に何らかの問題が発生している可能性が考えられる。

# 原因

上記内容を踏まえてAWSサポートに問い合わせたところ、Aurora MySQLバージョン3.04以降で監査ログの処理に失敗し、CPU使用率が上昇する不具合が確認された。

![Screenshot_2024-04-13_at_22_57_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/66d3bebf-f2ff-dcb1-8a37-8e0d4946a861.png)


# アクションアイテム

| アクションアイテム                          | 種類                       | 優先度             | 担当                                       | 対応状況                            |
| ----------------------------- | -------------------------- | ------------------ | ------------------------------------------ | ----------------------------------- |
| インスタンス不具合の修正依頼 | 修復| High | AWS | AWSサポートの回答によると、インスタンスで発生している不具合に対して (AWS側で) 修正措置が可能とのこと。ただし基盤自体の仮想サーバーホストが入れ替わった場合は効果が失効するため、恒久対応としては修正バージョンのリリースを待つ必要がある。[^aurora_mysql_updates] |


---

という訳で、Aurora MySQLで監査ログを有効化している場合、バージョン3.04以降でCPU使用率が上がる可能性があるようです。
問題が発生したタイミングや影響範囲、今後の対策については引き続きAWSと対応を進め、共有できることがあればこちらに追記していきます。

# 続報

## 2024/04/13 追記

2024年3月7日にリリースされた `3.06.0` でこの不具合は解消されたようです。

* [Aurora MySQL データベースエンジンアップデート 2024-03-07 (バージョン 3.06.0、MySQL 8.0.34 に対応)](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraMySQLReleaseNotes/AuroraMySQL.Updates.3060.html)
    > 監査ログファイル管理に関連する問題を修正しました。これにより、ログファイルにアクセスしてダウンロードやローテーションができなくなり、場合によっては CPU 使用率が高くなる可能性があります。

![Screenshot_2024-04-22_at_12_12_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27454/b63712d2-d3fc-2192-a39a-a7dfcac97ff8.png)

尚、CPU使用率は平均して1〜2%上がるようです。

[^baseline]: [Earn CPU credits](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html#earning-CPU-credits)
[^cpu_surplus_credit_balance]: [Monitor your CPU credits for burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances-monitoring-cpu-credits.html)
[^aurora_mysql_updates]: [Database engine updates for Amazon Aurora MySQL version 3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraMySQLReleaseNotes/AuroraMySQL.Updates.30Updates.html)