GCP项目中如何查看所有运行中虚拟机并监控开机状态同步到BigQuery
GCP VM开机状态监控+BigQuery落地方案
开机状态监控实现
- 在现有VM创建逻辑中新增状态捕获分支:调用
instances.insert接口创建VM后,通过返回的Operation ID追踪执行结果。Operation最终状态标记为DONE且无错误信息时,判定为开机成功;若返回错误码为RESOURCE_POOL_EXHAUSTED或ZONE_RESOURCE_POOL_EXHAUSTED,直接标记为「out of resource 开机失败」,其余错误码按业务规则标记为对应失败类型即可。 - 可增加3次以内的间隔重试逻辑,每次重试间隔1~2分钟,避免单时点资源波动导致的误判,重试次数建议和
retry_count字段绑定记录。 - 若不想自己实现Operation监听逻辑,可直接配置GCP Cloud Monitoring的告警规则,匹配VM实例创建失败的事件,触发后主动推送到你内部的通知通道,和主动捕获的逻辑做双重校验。
状态数据同步到BigQuery
前置准备
先在BigQuery中创建状态存储表,推荐表结构如下:
| 字段名 | 类型 | 说明 |
|---|---|---|
| vm_name | STRING | 虚拟机实例名 |
| zone | STRING | 实例所在可用区 |
| create_request_time | TIMESTAMP | 发起创建请求的时间 |
| final_status | STRING | 最终开机状态:SUCCESS/FAILED |
| error_code | STRING | 失败时返回的GCP错误码 |
| error_msg | STRING | 失败详情 |
| retry_count | INTEGER | 本次开机累计重试次数 |
同步方案二选一即可
- 方案1:代码直写,改动量最小。在你拿到VM开机最终状态后,直接调用BigQuery的
insertAll流式写入接口,把数据实时写入目标表,延迟在秒级。 - 方案2:无侵入式同步,不用改业务代码。先把所有VM创建的状态日志打印到Cloud Logging,再配置日志路由规则,匹配对应日志条目后自动同步到BigQuery表,后续新增字段不需要调整业务代码,灵活度更高。
内容的提问来源于stack exchange,提问作者Eldad Oh
相关产品推荐
相关产品推荐

