如何在GCP中通过告警触发执行云代码仓库中的脚本
实现GCP告警触发自动执行云代码仓库脚本的操作步骤
前置准备
- 确认待执行脚本已经上传到你使用的云代码仓库(支持GCP Cloud Source Repositories、GitHub、GitLab等),脚本本身无语法错误,敏感信息已通过 Secrets Manager 等方式管理,没有硬编码
- 提前开启项目的Monitoring API、Cloud Functions API、Cloud Build API、Cloud Logging API,操作账号拥有对应资源的编辑权限
- 确认脚本执行时需要调用的云资源权限已经提前规划好,后续会配置给Cloud Function的服务账号
步骤1:创建中转用Pub/Sub Topic
进入Pub/Sub控制台,新建一个专用Topic,例如命名为alert-trigger-topic,后续告警通知和函数触发都会通过这个Topic流转。
步骤2:配置用来执行脚本的Cloud Function
- 新建Cloud Function,触发类型选择「Cloud Pub/Sub」,关联上一步创建的
alert-trigger-topic - 代码源选择你存放脚本的云代码仓库,指定对应分支、脚本所在的目录路径,按照你脚本的类型选择对应运行时(Python、Node.js、Go等都支持)
- 在函数的入口逻辑里加入执行脚本的代码,以Python运行时执行Shell脚本为例,参考代码如下:
import subprocess def execute_alert_script(event, context): # 若函数已配置自动同步仓库代码可省略拉取步骤,直接执行脚本即可 subprocess.run(["bash", "./你的脚本目录/目标脚本.sh"], check=True) return "脚本执行完成"
- 给Cloud Function的默认服务账号分配云代码仓库的读取权限,以及脚本运行需要的其他云资源操作权限
- 手动触发测试Cloud Function,确认可以正常拉取仓库代码、执行脚本,执行结果符合预期
步骤3:配置告警规则
如果你要配置的是Monitoring指标类告警
- 进入GCP Monitoring控制台,选择「告警」-「创建政策」
- 选择你要监控的指标,配置告警触发阈值、持续时间
- 通知渠道选择第一步创建的
alert-trigger-topic,保存告警规则即可
如果你要配置的是Login服务相关的事件类告警
- 进入Cloud Logging控制台,通过查询语句筛选出你需要监控的Login相关审计日志,例如多次登录失败、非信任IP登录、管理员权限登录等事件
- 选择「基于查询创建告警」,配置告警触发逻辑,通知目标同样选择第一步创建的
alert-trigger-topic,保存即可
验证流程
手动模拟触发告警的条件,查看告警是否正常触发、Cloud Function运行日志是否正常、脚本是否按预期完成执行,若有报错直接查看对应资源的日志排查即可。
内容的提问来源于stack exchange,提问作者gabb00
相关产品推荐
相关产品推荐

