You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于GCP Logging:如何配置每日推送Compute Engine实例活动邮件通知

GCP Compute Engine 实例活动每日邮件推送实现方案

核心依赖组件

全程使用GCP原生服务即可实现,无需额外第三方工具:

  • Cloud Audit Log:存储CE实例所有启停操作的审计日志
  • Cloud Scheduler:配置每日定时触发任务
  • Cloud Function:执行数据拉取、清洗、汇总、发邮件的全流程逻辑
  • Cloud Monitoring:补充计算实例累计运行时长,避免审计日志遗漏

分步实现流程

1. 前置权限与日志配置

  • 确认项目已开启Compute Engine的Admin Activity审计日志(默认开启,无需额外操作)
  • 给后续创建的Cloud Function服务账号分配3个最小权限:roles/logging.viewer(日志读取)、roles/monitoring.viewer(监控指标读取)、roles/compute.viewer(实例基础元数据读取)

2. 配置定时触发规则

在Cloud Scheduler中创建cron任务:

  • 触发频率设置为每日凌晨1点,cron表达式为0 1 * * *,时区选择你所在的对应时区即可
  • 触发目标选择后续要创建的Cloud Function,HTTP调用即可

3. 编写Cloud Function数据处理逻辑

核心逻辑分为3块:

3.1 拉取前一日实例启停日志

用Cloud Logging的过滤规则筛选目标事件,示例过滤语句:

resource.type="gce_instance"
timestamp>="YYYY-MM-DDT00:00:00Z"
timestamp<="YYYY-MM-DDT23:59:59Z"
protoPayload.methodName=("v1.compute.instances.start" OR "v1.compute.instances.stop")

遍历返回的日志条目,按实例ID分组,匹配每个实例的启停事件对,计算单次运行时长;如果实例到前一天结束仍在运行,截止到当日24点计算运行时长。

3.2 校验累计运行时长

调用Cloud Monitoring的compute.googleapis.com/instance/uptime指标,拉取每个实例前一日的累计运行时长,和日志匹配得到的时长做交叉校验,避免日志丢失导致数据不准。

3.3 汇总输出明细字段

最终每条实例活动明细包含以下字段:

  • 实例名称、实例ID、所在可用区
  • 启动时间、停止时间
  • 单次运行时长、当日累计运行时长
  • 启停操作人(可选,从审计日志的protoPayload.authenticationInfo.principalEmail字段提取)

4. 邮件推送实现

可以直接用Python标准库smtplib实现邮件发送,无需开通额外邮件服务:

  • 把汇总好的明细整理成HTML表格嵌入邮件正文,超出时长阈值的实例可以用红色高亮标注
  • 支持附加CSV格式的明细文件,方便后续归档分析
  • 收件人列表直接写在函数环境变量里即可,方便动态修改

可选优化项

  • 把历史明细数据同步写入BigQuery,方便后续做长期成本核算、资源利用率分析
  • 新增异常告警逻辑:如果有实例连续运行超过预设阈值,在邮件里做重点标注提醒
  • 配置函数错误告警:如果Cloud Function执行失败,自动触发告警通知管理员排查

内容的提问来源于stack exchange,提问作者Deeksha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:18:01