How-to · OpenTelemetry

How to Monitor Google Cloud with OpenTelemetry

Monitoring Google Cloud with OpenTelemetry means collecting Cloud Monitoring metrics and application telemetry through the OpenTelemetry Collector and OTLP, so GCP services sit in one open pipeline..

Monitoring Google Cloud with OpenTelemetry means collecting Cloud Monitoring metrics and application telemetry through the OpenTelemetry Collector and OTLP, so GCP services sit in one open pipeline.

What to observe across a Google Cloud estate

A GCP estate spans compute (GCE, GKE, Cloud Run, Cloud Functions), managed data (Cloud SQL, BigQuery, Spanner), networking, and applications. The goal is one correlated view: application error rate and latency, the saturation and quota usage of managed services, GKE node and pod health, and cost. Quota exhaustion and throttling are GCP-specific signals worth watching, because they cause failures that look exactly like application bugs.

As with any cloud, the fastest path to a fix is correlating an application symptom with the managed-service cause, so a Cloud Run latency spike lines up with the Cloud SQL instance or the quota behind it.

How OpenTelemetry collects it

The Collector's googlecloudmonitoring receiver pulls Cloud Monitoring metrics for your resources, application traces and metrics arrive over OTLP, and GKE is covered by the standard Kubernetes receivers. If you keep Cloud Observability as a backend, the Google Cloud exporter can also send OpenTelemetry data into it.

Two notes: give the Collector a service account with the monitoring viewer role, and pull the metrics you need rather than the whole project, since Cloud Monitoring reads have both cost and latency.

Cloud Monitoring metric names below are grouped by service; the receiver surfaces them as OpenTelemetry metrics.

Key metrics to watch

Key Cloud Monitoring signals by service, the ones behind most incidents:

SignalSourceWhat it tells you / watch for
cloudsql.googleapis.com/database/cpu/utilizationgooglecloudmonitoringCloud SQL CPU saturation; the usual cause of an app that slows under load.
cloudsql.googleapis.com/database/network/connectionsgooglecloudmonitoringCloud SQL connection count against the limit.
run.googleapis.com/request_latenciesgooglecloudmonitoringCloud Run request latency; watch p95/p99 per service.
run.googleapis.com/request_count (by response code)googlecloudmonitoringCloud Run request rate and error rate by status.
Cloud Run container startup latencygooglecloudmonitoringCold-start latency; frequent cold starts degrade tail latency.
serviceruntime quota exceededgooglecloudmonitoringAPI quota exhaustion, a GCP-specific failure that mimics application errors.

What to put on a dashboard

A GCP dashboard should lead from application symptom to managed-service or quota cause. Row one is the application: error rate and p95 latency by service, from OTLP traces and Cloud Run request metrics. Row two is data and compute: Cloud SQL CPU and connections, Cloud Run latency and cold starts. Row three is quota and cost: quota usage against limits, and daily spend by service.

# Cloud SQL CPU saturation
cloudsql.googleapis.com/database/cpu/utilization  by (database_id)

# Cloud Run 5xx rate
sum(rate(run.googleapis.com/request_count{response_code_class="5xx"}[5m])) by (service_name)
  / sum(rate(run.googleapis.com/request_count[5m])) by (service_name)

# Cloud Run p99 latency
histogram_quantile(0.99, run.googleapis.com/request_latencies) by (service_name)

Reading the signals: common failure modes

Cloud SQL saturation

An application slows and Cloud SQL CPU utilization is pinned, because the database is the bottleneck. Optimise the heavy queries or scale the instance; the CPU-utilization metric confirms where the time goes.

Cloud Run cold starts

Tail latency is high because new container instances start frequently, each paying a cold-start cost, especially on spiky or low-traffic services. Startup-latency and request-latency percentiles together reveal it. Set a minimum-instances floor or reduce container startup time.

Quota exhaustion

Requests fail with quota-exceeded errors that look like application bugs, because a project or API quota was hit. The quota metric against its limit is the tell. Request a quota increase or spread load; this is a class of failure that has no application-side fix.

Example alert conditions

Starting thresholds to tune:

ConditionSignalMeaning
Cloud SQL CPU > 85% for 5mdatabaseDatabase saturating.
Cloud Run 5xx rate > 2% for 5mappService failing.
quota usage > 90% of limitquotaApproaching a hard failure.
cold-start rate risinglatencyTail latency degrading.

From monitoring to autonomous resolution

Ops Singularity's TelemetryOps ingests GCP telemetry over OpenTelemetry and its FinOps pillar tracks GCP cost, while Sentinel AI resolves incidents through governed Action Tickets. Explore TelemetryOps.

Frequently asked questions

How do I collect GCP metrics with OpenTelemetry?

Use the OpenTelemetry Collector's googlecloudmonitoring receiver to pull Cloud Monitoring metrics, and collect application traces and metrics over OTLP, with Kubernetes receivers for GKE.

What GCP signals matter most?

Application error rates and latency, resource saturation, quota usage and throttling, GKE node and pod health, and cost.

See autonomous operations on your own stack.

Bring a real incident. We will show you Sentinel investigate, act and verify end to end, with every action reversible and audited.

Request a Demo → See TelemetryOps