For the complete documentation index, see llms.txt. Markdown versions are available by appending .md to documentation URLs.

Monitor GCP Cloud SQL for MySQL Metrics

SigNoz Cloud - This page applies to SigNoz Cloud editions.
Self-Hosted Enterprise - This page applies to self-hosted SigNoz with an active license.

The Cloud SQL for MySQL integration brings instance metrics (availability, CPU, memory, disk, connections, query throughput, InnoDB activity, and replication lag) into SigNoz, with a pre-built dashboard for the service.

Cloud SQL publishes its metrics to Cloud Monitoring. SigNoz reads them through the OpenTelemetry Collector running in your GCP project.

Choose a setup method

Available now. You run the OpenTelemetry Collector in your own GCP project and add Cloud SQL metrics to its configuration. You control which metrics are pulled and how often.

Complete the GCP integration setup once, then follow the steps on this page for each Cloud SQL instance you want to monitor.

Prerequisites

Before configuring this service, complete the shared GCP integration setup:

Step 1: Enable the service in SigNoz

  1. In SigNoz, go to Integrations > Google Cloud Platform.
  2. Select GCP Cloud SQL for MySQL from the service list.
  3. Toggle Metric Collection on to activate the pre-built dashboard.
  4. Open the Data Collected tab and note the metrics listed there. These are the metrics the dashboard's panels query.

Step 2: Add the metrics to your Collector config

Open the otel-collector-config.yaml you created in Deploy the Collector and add the Cloud SQL metric names to the metrics_list of the googlecloudmonitoring receiver for the project your instances run in. Only the metrics_list shown below changes; leave the rest of the file as is:

otel-collector-config.yaml
receivers:
  googlecloudmonitoring:
    project_id: "<monitored-project-id>"
    collection_interval: 300s   # 5 minutes; minimum is 60s
    metrics_list:
      # Health
      - metric_name: "cloudsql.googleapis.com/database/up"
      - metric_name: "cloudsql.googleapis.com/database/instance_state"
      - metric_name: "cloudsql.googleapis.com/database/replication/replica_lag"
      # CPU, memory & disk
      - metric_name: "cloudsql.googleapis.com/database/cpu/utilization"
      - metric_name: "cloudsql.googleapis.com/database/memory/utilization"
      - metric_name: "cloudsql.googleapis.com/database/disk/utilization"
      - metric_name: "cloudsql.googleapis.com/database/network/connections"
      # Throughput
      - metric_name: "cloudsql.googleapis.com/database/mysql/queries"
      - metric_name: "cloudsql.googleapis.com/database/mysql/dml_operations_count"
      - metric_name: "cloudsql.googleapis.com/database/mysql/threads"
      - metric_name: "cloudsql.googleapis.com/database/mysql/innodb/buffer_pool_reads_count"
      - metric_name: "cloudsql.googleapis.com/database/mysql/innodb/buffer_pool_read_requests_count"
      # Errors & contention
      - metric_name: "cloudsql.googleapis.com/database/mysql/slow_queries_count"
      - metric_name: "cloudsql.googleapis.com/database/mysql/aborted_connects_count"
      - metric_name: "cloudsql.googleapis.com/database/mysql/innodb/deadlocks_count"
      - metric_name: "cloudsql.googleapis.com/database/mysql/innodb/row_lock_waits_count"
      - metric_name: "cloudsql.googleapis.com/database/disk/read_ops_count"
      - metric_name: "cloudsql.googleapis.com/database/disk/write_ops_count"

Verify these values:

  • <monitored-project-id>: The GCP project that hosts your Cloud SQL instances. It must be one of the entries in your Projects to Monitor list.

The InnoDB buffer pool miss ratio panel derives its value from two metrics, buffer_pool_reads_count and buffer_pool_read_requests_count. Keep both in the list or the panel stays empty.

The receiver polls every metric in the list once per collection_interval, and the Monitoring API bills per read call, so keep the list to the metrics your dashboards and alerts actually use. See Cost and tuning.

Step 3: Apply the configuration

The Collector loads its config from the signoz-collector-config secret, so a config change needs a new secret version and a redeploy:

  1. Save your updated otel-collector-config.yaml.
  2. Add a new secret version (step 2 of Deploy the Collector).
  3. Redeploy the Cloud Run service (step 3).

Validate

  1. Wait one or two collection intervals (up to about 5 minutes with the default 300s).
  2. In SigNoz, go to Dashboards and open the GCP Cloud SQL for MySQL Overview dashboard. Panels should start filling in.
  3. To check a single metric, open Metrics Explorer and query cloudsql.googleapis.com/database/cpu/utilization.

What's collected

The GCP Cloud SQL for MySQL Overview dashboard groups its 17 panels into four sections:

  • Health: Server up, Instance state, Replication lag.
  • CPU, Memory & Disk: CPU utilization, Memory utilization, Disk utilization, Connections.
  • Throughput: Queries, DML operations, Threads, InnoDB buffer pool miss ratio.
  • Errors & Contention: Slow queries, Aborted connects, InnoDB deadlocks, InnoDB row lock waits, Disk Read IOPS, Disk Write IOPS.
Metrics

See the Data Collected tab in the SigNoz integration for the definitive list the dashboard uses, and the GCP metrics list for full definitions.

Metric nameUnitType
cloudsql.googleapis.com/database/upCountGauge
cloudsql.googleapis.com/database/instance_stateCountGauge
cloudsql.googleapis.com/database/replication/replica_lagSecondsGauge
cloudsql.googleapis.com/database/cpu/utilizationPercentGauge
cloudsql.googleapis.com/database/memory/utilizationPercentGauge
cloudsql.googleapis.com/database/disk/utilizationPercentGauge
cloudsql.googleapis.com/database/network/connectionsCountGauge
cloudsql.googleapis.com/database/mysql/queriesCountSum
cloudsql.googleapis.com/database/mysql/dml_operations_countCountSum
cloudsql.googleapis.com/database/mysql/threadsCountGauge
cloudsql.googleapis.com/database/mysql/innodb/buffer_pool_reads_countCountSum
cloudsql.googleapis.com/database/mysql/innodb/buffer_pool_read_requests_countCountSum
cloudsql.googleapis.com/database/mysql/slow_queries_countCountSum
cloudsql.googleapis.com/database/mysql/aborted_connects_countCountSum
cloudsql.googleapis.com/database/mysql/innodb/deadlocks_countCountSum
cloudsql.googleapis.com/database/mysql/innodb/row_lock_waits_countCountSum
cloudsql.googleapis.com/database/disk/read_ops_countCountSum
cloudsql.googleapis.com/database/disk/write_ops_countCountSum

Troubleshooting

A dashboard panel is empty. The metric backing that panel is missing from your metrics_list. Compare the Data Collected tab against your otel-collector-config.yaml, add what's missing, and repeat step 3.

The InnoDB buffer pool miss ratio panel is empty. This panel needs both buffer_pool_reads_count and buffer_pool_read_requests_count. Add whichever is missing and repeat step 3.

No Cloud SQL metrics at all. Confirm the signoz-integration service account holds roles/monitoring.viewer on the project in project_id, and that the Cloud Monitoring API is enabled there. Then check the Cloud Run logs for googlecloudmonitoring receiver errors.

Metrics appear but are stale. The receiver polls on collection_interval (default 300s) and Cloud SQL itself samples most metrics no faster than every 60 seconds. Lower the interval only if you need the resolution, and expect a higher Monitoring API bill.

Next steps

Get Help

If you need help with the steps in this topic, please reach out to us on SigNoz Community Slack. If you are a SigNoz Cloud user, please use in product chat support located at the bottom right corner of your SigNoz instance or contact us at cloud-support@signoz.io.

Is this page helpful

Last updated—August 20, 2026

Edit on GitHub