使用Pulumi配置GCP正常运行时间检查告警策略遇错误求助
解决GCP Uptime Check与告警策略的Pulumi配置问题
问题根源分析
- Filter匹配错误:
monitoring.googleapis.com/uptime_check/check_passed指标的check_id属于metric标签而非resource标签,使用resource.labels.check_id会导致GCP无法找到匹配的时间序列,触发400错误。 - 关联显示失效:手动使用自定义短ID(
uptimeCheckConfigId)作为metric.labels.check_id的值不匹配,GCP实际生成的check_id是Uptime Check资源的完整限定ID(格式为projects/[PROJECT_ID]/uptimeCheckConfigs/[USER_SPECIFIED_ID]),而非用户定义的短名称。
修正后的代码方案
1. 正确引用Uptime Check的实际ID
使用Pulumi创建的uptimeCheckConfig实例的id属性,而非自定义短ID,确保准确匹配GCP生成的metric标签值:
const uptimeCheckConfigId = `my_uptime_check_config`; const uptimeCheckConfig = new gcp.monitoring.UptimeCheckConfig( uptimeCheckConfigId, { timeout: '20s', period: '60s', httpCheck: { path: '/health/status', port: 80, }, monitoredResource: { labels: { host: "your-target-url", // 替换为实际目标URL }, type: 'uptime_url', }, displayName: `Uptime check`, }, { provider }, ); const myAlertPolicy = new gcp.monitoring.AlertPolicy( `my_uptime_alert_policy`, { notificationChannels: ["your-channel-ids"], // 替换为实际通知通道ID combiner: 'OR', conditions: [ { displayName: `Uptime check FAILED`, conditionThreshold: { aggregations: [ { alignmentPeriod: '60s', // 与Uptime Check的period保持一致 crossSeriesReducer: 'REDUCE_COUNT_FALSE', groupByFields: [ 'resource.labels.project_id', 'resource.labels.host', ], perSeriesAligner: 'ALIGN_NEXT_OLDER', }, ], comparison: 'COMPARISON_GT', duration: '60s', // 使用metric.labels.check_id并引用Uptime Check的完整资源ID filter: `resource.type = "uptime_url" AND metric.type = "monitoring.googleapis.com/uptime_check/check_passed" AND metric.labels.check_id = "${uptimeCheckConfig.id}"`, thresholdValue: 0, // 当check_passed为false的次数大于0时触发告警 trigger: { count: 1, }, }, }, ], displayName: `Alert Policy check`, }, { provider }, );
2. 确保控制台显示关联关系
若要在GCP控制台的Uptime Check页面看到关联的告警策略,需在UptimeCheckConfig中显式关联告警策略的ID:
const uptimeCheckConfig = new gcp.monitoring.UptimeCheckConfig( uptimeCheckConfigId, { // 保留原有配置 alertPolicyNames: [myAlertPolicy.id], // 关联告警策略 }, { provider }, );
关键注意事项
- 阈值逻辑调整:原代码
thresholdValue: 1不符合业务逻辑,check_passed为布尔值(0代表失败,1代表成功),设置thresholdValue: 0可在失败次数大于0时触发告警。 - 对齐周期一致性:
alignmentPeriod建议与Uptime Check的period保持一致,避免聚合逻辑混乱。 - 资源依赖保障:通过引用
uptimeCheckConfig.id和myAlertPolicy.id,Pulumi会自动处理资源创建顺序,确保依赖关系正确。
内容的提问来源于stack exchange,提问作者cis
相关产品推荐
相关产品推荐

