如何查询Google Cloud Run实时CPU/内存使用率并配置Terraform告警?
Google Cloud Run资源使用率查询与告警配置方案
关于分位数指标的说明
99%、95%、50%分位数是基于实例群体的统计指标,数值差异源于不同实例的负载不均:
- 50%(中位数):一半实例的资源使用率低于该值,另一半高于
- 95%:95%的实例使用率低于该值,仅5%的实例负载更高
- 99%:99%的实例使用率低于该值,仅1%的实例处于极端负载状态
不存在单一“绝对准确”的使用率值,需根据实际需求选择对应的统计维度。
查询当前/任意时刻的资源使用率
- 查看原始实例数据:在Cloud Console的Metrics Explorer中,选择
CPU Utilization或Memory Utilization指标,将聚合方式改为Raw,可查看每个实例的实时/历史时刻使用率;调整时间范围即可定位任意时刻的实例数据。 - 选择聚合统计量:若需整体视图,可切换聚合方式为
Average(平均使用率)、Max(最大使用率)或Min(最小使用率),这类统计量更直观反映服务整体或极端负载情况。 - 命令行查询:使用
gcloud工具获取精准数据,示例命令(查询最大CPU使用率):gcloud monitoring metrics read run.googleapis.com/container/cpu/utilization \ --filter='resource.type="cloud_run_revision" AND resource.labels.service_name="你的服务名"' \ --aggregation.alignmentPeriod=60s \ --aggregation.perSeriesAligner=ALIGN_MAX
Terraform配置告警捕获崩溃时刻资源使用率
- 优先使用最大值统计量:服务崩溃多由个别实例资源耗尽触发,
MAX(最大使用率)能精准捕获极端负载峰值,替代分位数作为告警指标。 - Terraform告警配置示例:
resource "google_monitoring_alert_policy" "cloud_run_resource_alert" { display_name = "Cloud Run 资源耗尽告警" combiner = "OR" conditions { display_name = "内存使用率超过阈值" condition_threshold { filter = <<EOF
resource.type="cloud_run_revision"
AND metric.type="run.googleapis.com/container/memory/utilization"
AND resource.labels.service_name="你的服务名"
EOF
aggregations {
alignment_period = "60s"
per_series_aligner = "ALIGN_MAX"
cross_series_reducer = "REDUCE_MAX"
group_by_fields = ["resource.labels.service_name"]
}
threshold_value = 0.9
duration = "60s"
trigger {
count = 1
}
}
}
# 替换为你的通知渠道ID notification_channels = [google_monitoring_notification_channel.email_notify.name]
}
- **关联日志定位**:在告警通知中配置日志上下文,或事后通过Cloud Logging关联崩溃时刻的实例日志与指标数据,进一步分析根因。 - **确保实例级指标启用**:Cloud Run默认开启实例级指标,若手动关闭需重新启用,否则无法获取单个实例的资源使用细节。 内容的提问来源于stack exchange,提问作者SowjanyaG
相关产品推荐
相关产品推荐

