はじめに

Cloud SQL の運用において、データベースのパフォーマンスや健全性を監視するために Google Cloud Monitoring を活用する場面は多いでしょう。
しかし、Cloud Monitoring (Metrics Explorer) でCloud SQLのメトリクスを見ていると、データベースエンジン(MySQLかPostgreSQLか)によって、同じ「接続数」を意味するメトリクスの名前が異なることに気づきます。これが原因で、意図したメトリクスを取得できずに混乱したり、誤ったアラートを設定してしまったりする可能性があります。

この記事では、Cloud SQLのMySQLインスタンスとPostgreSQLインスタンスにおける「接続数」に関連するメトリクス名の違いを明確にし、実際にMetrics Explorerでどのように見えるか、そしてどちらを選択すべきかを検証結果とともに解説します。

混乱の原因:似て非なるメトリクス名

Cloud MonitoringのMetrics ExplorerでCloud SQLのメトリクスを探す際、多くの人がまず「接続数」に関連しそうな名前として Cloud SQL Connections (cloudsql.googleapis.com/database/network/connections) を選択するのではないでしょうか。

Cloud SQL Connections という名前は非常に直感的であり、実際に MySQLインスタンス においては、現在確立されている接続数に近い値を示します。

しかし、PostgreSQLインスタンス で同じ Cloud SQL Connections を選択すると、データが表示されません。

PostgreSQLインスタンスの現在の接続数(正確にはアクティブなバックエンドプロセスの数)を確認するには、PostgreSQL Connections といった名前で表示される cloudsql.googleapis.com/database/postgresql/num_backends というメトリクスを使用する必要があります。

このように、同じ「接続数」という目的であっても、MySQLとPostgreSQLで参照すべきメトリクス名が異なる点が混乱を招く主な原因です。

検証:実際にメトリクスを確認してみる

この混乱を解消するために、実際にMySQLインスタンスとPostgreSQLインスタンスそれぞれで、接続数に関連するメトリクスがどのように表示され、変動するかを確認してみました。

MySQLの場合

まず、MySQLインスタンスで接続数を確認します。

  1. Metrics Explorerの設定:
    • リソースタイプ: Cloud SQL Database (cloudsql_database)
    • メトリクス: Cloud SQL Connections (cloudsql.googleapis.com/database/network/connections)
    • フィルタ: database_id で対象のMySQLインスタンスを指定
  2. メトリクスの確認:

    メトリクスが表示されますね。

PostgreSQLの場合 (誤ったメトリクス)

次に、PostgreSQLインスタンスで、MySQLと同じ Cloud SQL Connections メトリクスを見てみます。

  1. Metrics Explorerの設定:
    • リソースタイプ: Cloud SQL Database (cloudsql_database)
    • メトリクス: Cloud SQL Connections (cloudsql.googleapis.com/database/network/connections)
    • フィルタ: database_id で対象のPostgreSQLインスタンスを指定

ご覧のように、PostgreSQLインスタンスでは Cloud SQL Connections メトリクスでは意図した接続数を取得できません。

PostgreSQLの場合 (正しいメトリクス)

では、PostgreSQLインスタンスで正しいメトリクスを選択してみましょう。

  1. Metrics Explorerの設定:
    • リソースタイプ: Cloud SQL Database (cloudsql_database)
    • メトリクス: PostgreSQL Connections (cloudsql.googleapis.com/database/postgresql/num_backends)
    • フィルタ: database_id で対象のPostgreSQLインスタンスを指定
  2. メトリクスの確認:

    メトリクスが確認できます。

まとめ:混乱を防ぐために

PosgreSQLだけ別でメトリクスが用意されているのは初見だとかなり罠ですね。

「接続数」に関しては、以下のメトリクスを選択するようにしましょう。

  • MySQLインスタンスの場合:
    • Cloud SQL Connections (cloudsql.googleapis.com/database/network/connections)
  • PostgreSQLインスタンスの場合:
    • PostgreSQL Connections / Num Backends (cloudsql.googleapis.com/database/postgresql/num_backends)

この違いを理解しておけば、Metrics Explorerでの調査や、接続数に基づいたアラートポリシーを作成する際に、誤ったメトリクスを選択してしまうリスクを大幅に減らすことができます。

少しでも参考になれば幸いです。

参考ドキュメント

https://cloud.google.com/sql/docs/postgres/admin-api/metrics
https://cloud.google.com/sql/docs/postgres/use-system-insights?hl=ja