【小ネタ】RDS DBインスタンスで Performance Insights が有効になっているか棚卸しする

【小ネタ】RDS DBインスタンスで Performance Insights が有効になっているか棚卸しする

Clock Icon2025.01.29

RDS Performance Insights はデータベースのパフォーマンス分析に役立つダッシュボードを提供する機能です。 負荷がかかっているクエリの発見などに役立ちます。

以下の範囲で無料利用できます。

  • 7日間分のパフォーマンスデータ履歴
  • 1か月あたり 100 万件のリクエスト

無料枠だけでも十分トラブルシューティングに役に立ちます。 そのため、管理者としては Performance Insights を有効化することを標準として推奨していきたいです。

現状把握のために「 Performance Insights が有効になっていないRDS DBインスタンス 」を 洗い出したい要件が出てきたので、本ブログにて洗い出しの手順をまとめてみます。

前提: Performance Insights のサポート範囲

「Performance Insights をそもそも利用できるかどうか」 については、以下リンクあたりにまとまっています。

概要 参考リンク
RDS > インスタンスクラスに関する制限 Amazon RDS DB エンジンとインスタンスクラスでサポートされている Performance Insights - Amazon Relational Database Service
RDS > リージョンやエンジンバージョンの制限 Amazon RDS の Performance Insights でサポートされているリージョンと DB エンジン - Amazon Relational Database Service
Aurora > インスタンスクラスに関する制限 Amazon Aurora DB エンジンとインスタンスクラスでサポートされている Performance Insights - Amazon Aurora
Aurora > リージョンやエンジンバージョンの制限 Performance Insights でサポートされているリージョンと Aurora DB エンジン - Amazon Aurora

簡単にまとめると以下のような感じです(2025/01/29時点)。

  • RDS
    • MariaDB: db.[t2|t3|t4g].[micro|small] は未サポート
    • MySQL: db.[t2|t3|t4g].[micro|small] は未サポート
    • RDS for Db2 は未サポート
  • Aurora
    • Aurora MySQL: db.[t2|t3] および db.t4g.[micro|small] は未サポート
    • Aurora MySQL: 並列クエリがオンのとき、制限あり (詳細)
    • Aurora Serverless v1 は未サポート

Performance Insights が有効になっているか棚卸しする

棚卸しには AWS CLI を使います。 以下スクリプトを作成しました。

inventory-rds-performance-insights-settings.sh
#!/bin/bash

query="DBInstances[].\
{ DBInstance: DBInstanceIdentifier,\
  Engine: Engine,\
  EngineVersion: EngineVersion,\
  InstanceClass: DBInstanceClass\
  PIEnabled: PerformanceInsightsEnabled,\
  PIRetentionPeriod: PerformanceInsightsRetentionPeriod,\
}"

aws rds describe-db-instances --query "${query}" --output table

出力される列は以下のとおりです。

列名 説明
DBInstance RDS DBインスタンスのID
Engine RDS DBインスタンスのエンジン
EngineVersion RDS DBインスタンスのエンジンバージョン
InstanceClass RDS DBインスタンスのインスタンスクラス
PIEnabled Performance Insights が有効になっているかどうか (True or False)
PIRetentionPeriod (Performance Insights が有効の場合) 保持期間の日数

実行サンプル

以下に実行サンプルを記載します。

./inventory-rds-performance-insights-settings.sh
# ---------------------------------------------------------------------------------------------------------------------------
# |                                               DescribeDBInstances                                                       |
# +-------------------------+---------------+--------------------------+----------------+-------------+---------------------+
# |        DBInstance       |    Engine     |      EngineVersion       | InstanceClass  |  PIEnabled  |  PIRetentionPeriod  |
# +-------------------------+---------------+--------------------------+----------------+-------------+---------------------+
# |  aaa-dev                |  mysql        |  8.0.35                  |  db.t3.small   |  False      |  None               |
# |  bbb-dev                |  mysql        |  8.0.35                  |  db.t3.micro   |  False      |  None               |
# |  ddd-dev-aurora         |  aurora-mysql |  8.0.mysql_aurora.3.07.1 |  db.r5.xlarge  |  False      |  None               |
# |  ddd-stg-aurora         |  aurora-mysql |  8.0.mysql_aurora.3.07.1 |  db.r5.xlarge  |  False      |  None               |
# |  iii-stg-aurora         |  aurora-mysql |  8.0.mysql_aurora.3.07.1 |  db.r5.large   |  False      |  None               |
# |  iii-stg-aurora-reader  |  aurora-mysql |  8.0.mysql_aurora.3.07.1 |  db.r5.large   |  True       |  7                  |
# |  mmmmm-stg              |  mysql        |  8.0.36                  |  db.t3.medium  |  True       |  7                  |
# |  sssss-stg              |  mysql        |  8.0.37                  |  db.t4g.large  |  False      |  None               |
# +-------------------------+---------------+--------------------------+----------------+-------------+---------------------+

以下は実行結果をMarkdownテーブルに整形したものです。

DBInstance Engine EngineVersion InstanceClass PIEnabled PIRetentionPeriod
aaa-dev mysql 8.0.37 db.t3.small False None
bbb-dev mysql 8.0.37 db.t3.micro False None
ddd-dev-aurora aurora-mysql 8.0.mysql_aurora.3.07.1 db.r5.xlarge False None
ddd-stg-aurora aurora-mysql 8.0.mysql_aurora.3.07.1 db.r5.xlarge False None
iii-stg-aurora aurora-mysql 8.0.mysql_aurora.3.07.1 db.r5.large False None
iii-stg-aurora-reader aurora-mysql 8.0.mysql_aurora.3.07.1 db.r5.large True 7
mmmmm-stg mysql 8.0.36 db.t3.medium True 7
sssss-stg mysql 8.0.37 db.t4g.large False None

この出力から Performance Insights が有効になっていないものについて、 有効にするようにPushしていきたいですね。

※ なお、前提で話したとおり そもそも Performance Insights が未サポートのものは除外する必要があります。

  • RDS
    • MariaDB: db.[t2|t3|t4g].[micro|small] は未サポート
    • MySQL: db.[t2|t3|t4g].[micro|small] は未サポート
    • RDS for Db2 は未サポート
  • Aurora
    • Aurora MySQL: db.[t2|t3] および db.t4g.[micro|small] は未サポート
    • Aurora MySQL: 並列クエリがオンのとき、制限あり (詳細)
    • Aurora Serverless v1 は未サポート

おわりに

RDSのPerformance Insights設定有無を棚卸ししてみました。 欲を言えば Security Hub あたりで Performance Insights 設定有無を チェックできるコントロールがあると嬉しいなと感じています。

以上、参考になれば幸いです。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.