Google Cloud Cheatsheet
Monitoring
Use this Google Cloud reference while you build software engineering projects, review code for technical interview prep, or polish examples for a software engineer resume.
Cloud Monitoring (Metrics)
# There is no GA gcloud command to list or read metrics — use the REST API # (or Metrics Explorer in the Console). # List metric descriptors curl -s -G -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://monitoring.googleapis.com/v3/projects/my-project/metricDescriptors" \ --data-urlencode 'filter=metric.type = starts_with("compute.googleapis.com")' # Read time series (CPU utilization for one VM, 5-minute window) curl -s -G -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://monitoring.googleapis.com/v3/projects/my-project/timeSeries" \ --data-urlencode 'filter=metric.type="compute.googleapis.com/instance/cpu/utilization" AND resource.labels.instance_id="INSTANCE_ID"' \ --data-urlencode 'interval.startTime=2025-06-13T10:00:00Z' \ --data-urlencode 'interval.endTime=2025-06-13T10:05:00Z' # GA gcloud surface covers dashboards, uptime checks, and snoozes gcloud monitoring dashboards list
Cloud Logging
# Read recent log entries gcloud logging read "resource.type=gce_instance" --limit=50 # Read logs for a specific VM gcloud logging read \ 'resource.type="gce_instance" AND resource.labels.instance_id="INSTANCE_ID"' \ --limit=100 \ --format=json # Tail logs in real time gcloud logging tail 'resource.type="cloud_run_revision"' # Read App Engine logs gcloud logging read 'resource.type="gae_app"' --limit=20 # Read logs by severity gcloud logging read 'severity>=ERROR' --limit=50 --freshness=1h # Write a log entry (useful for testing) gcloud logging write my-log "Test message" --severity=INFO
Log Filters (Common Patterns)
# Errors in Cloud Run service resource.type="cloud_run_revision" resource.labels.service_name="my-service" severity>=ERROR # HTTP 5xx on a load balancer resource.type="http_load_balancer" httpRequest.status>=500 # Cloud SQL slow queries resource.type="cloudsql_database" textPayload:"duration" # Specific user activity (Admin Activity audit log) logName="projects/my-project/logs/cloudaudit.googleapis.com%2Factivity" protoPayload.authenticationInfo.principalEmail="alice@example.com"
Log Sinks (Export Logs)
# Export logs to Cloud Storage gcloud logging sinks create my-gcs-sink \ storage.googleapis.com/my-log-bucket \ --log-filter='severity>=WARNING' # Export to BigQuery gcloud logging sinks create my-bq-sink \ bigquery.googleapis.com/projects/my-project/datasets/logs_dataset \ --log-filter='resource.type="cloud_run_revision"' # Export to Pub/Sub gcloud logging sinks create my-pubsub-sink \ pubsub.googleapis.com/projects/my-project/topics/log-topic # List sinks gcloud logging sinks list # Update a sink filter gcloud logging sinks update my-gcs-sink \ --log-filter='severity>=ERROR' # Delete a sink gcloud logging sinks delete my-gcs-sink
Log-Based Metrics
# Create a counter metric from log entries gcloud logging metrics create error-count \ --description="Count of ERROR log entries" \ --log-filter='severity>=ERROR' # Create a distribution metric (e.g., request latency from logs) gcloud logging metrics create request-latency \ --description="Request latency distribution" \ --log-filter='resource.type="cloud_run_revision"' \ --value-extractor='EXTRACT(jsonPayload.latency_ms)' # List metrics gcloud logging metrics list
Alerting Policies
# Policy management via gcloud is still alpha (Console/Terraform are the GA paths) gcloud alpha monitoring policies create --policy-from-file=alert-policy.json # List alert policies gcloud alpha monitoring policies list # Delete a policy gcloud alpha monitoring policies delete POLICY_ID
{
"displayName": "High CPU",
"conditions": [{
"displayName": "CPU utilization > 80%",
"conditionThreshold": {
"filter": "resource.type=\"gce_instance\" metric.type=\"compute.googleapis.com/instance/cpu/utilization\"",
"comparison": "COMPARISON_GT",
"thresholdValue": 0.8,
"duration": "300s",
"aggregations": [{"alignmentPeriod": "60s", "perSeriesAligner": "ALIGN_MEAN"}]
}
}],
"combiner": "OR",
"alertStrategy": {"autoClose": "1800s"},
"notificationChannels": ["projects/my-project/notificationChannels/CHANNEL_ID"]
}Notification Channels
# Channel management via gcloud is beta gcloud beta monitoring channels list # Create an email notification channel gcloud beta monitoring channels create \ --display-name="Ops Team" \ --type=email \ --channel-labels=email_address=ops@example.com # Or create from a full JSON definition gcloud beta monitoring channels create --channel-content-from-file=channel.json # Slack/PagerDuty channels need OAuth setup — create them in the Console first
Uptime Checks
# Create an HTTPS uptime check (GA) gcloud monitoring uptime create my-service-uptime \ --resource-type=uptime-url \ --resource-labels=host=api.example.com,project_id=my-project \ --protocol=https \ --port=443 \ --path=/health \ --period=1 \ --timeout=10 # List / describe / delete uptime checks gcloud monitoring uptime list-configs gcloud monitoring uptime describe CHECK_ID gcloud monitoring uptime delete CHECK_ID
Cloud Trace
# View traces (use Console or API — CLI is limited) # Enable the API gcloud services enable cloudtrace.googleapis.com # In code: use OpenTelemetry or the Cloud Trace SDK # Node.js auto-instrumentation npm install @google-cloud/trace-agent # Add at the very top of main file: # require('@google-cloud/trace-agent').start();
Cloud Profiler
# Enable gcloud services enable cloudprofiler.googleapis.com # Node.js agent npm install @google-cloud/profiler # require('@google-cloud/profiler').start({ serviceContext: { service: 'my-service', version: '1.0' } });
Error Reporting
# Enable gcloud services enable clouderrorreporting.googleapis.com # List error groups gcloud beta error-reporting events list --service=my-service --version=v1.0 # Errors are auto-ingested from Cloud Logging for supported runtimes. # To report manually (REST): curl -X POST \ "https://clouderrorreporting.googleapis.com/v1beta1/projects/my-project/events:report?key=API_KEY" \ -H "Content-Type: application/json" \ -d '{"message":"Error: something failed","serviceContext":{"service":"my-service","version":"1.0"}}'
Key Metric Types
| Metric prefix | What it covers |
|---|---|
compute.googleapis.com | VM CPU, disk, network |
run.googleapis.com | Cloud Run request count, latency |
cloudsql.googleapis.com | DB connections, queries, disk |
storage.googleapis.com | Bucket request count, bytes |
bigquery.googleapis.com | Slot utilization, bytes billed |
pubsub.googleapis.com | Message count, delivery latency |
kubernetes.io | GKE pod/node CPU, memory |
logging.googleapis.com | Log bytes ingested |