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

如何监控GitHub Actions定时工作流?求Prometheus+Grafana方案

监控GitHub Actions定时工作流的告警方案

针对你的需求,结合现有Prometheus+Grafana+AWS栈,推荐以下几种简便方案,无需依赖CloudWatch发送指标:

方案1:通过GitHub API拉取状态,用Prometheus监控时间差

操作步骤

  • 生成GitHub PAT:创建一个仅含repo权限的Personal Access Token,用于调用GitHub Actions API。
  • 部署自定义Exporter或用Blackbox Exporter:
    • 若用Blackbox Exporter:配置HTTP probe调用GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs接口,提取返回结果中最新运行记录的created_at字段,转换成时间戳。
    • 若自定义Exporter:写一个简单脚本(比如Python),定期调用上述API,输出Prometheus格式的指标,例如:
      github_actions_workflow_last_run_seconds{workflow="your-workflow-name"} 1699999999
      
  • Prometheus配置:添加scrape任务拉取这个Exporter的指标,然后编写告警规则:
    time() - github_actions_workflow_last_run_seconds{workflow="your-workflow-name"} > 604800
    
    (604800为一周的秒数)
  • Grafana告警:基于上述PromQL配置告警通知,可对接AWS SNS发送告警到邮箱、Slack等渠道。

优势

无需修改现有工作流,适合不想改动原有CI/CD逻辑的场景。


方案2:工作流运行时向Prometheus Pushgateway推送指标

操作步骤

  • 确保Pushgateway已部署:如果你的Prometheus环境还没部署Pushgateway,直接在现有集群或AWS EC2上部署一个轻量服务。
  • 修改GitHub Actions工作流:在工作流的最后成功步骤中,添加一个推送指标的任务,示例:
    - name: Push run timestamp to Prometheus Pushgateway
      if: success()
      run: |
        CURRENT_TIMESTAMP=$(date +%s)
        curl -X POST http://your-pushgateway-url:9091/metrics/job/github-actions/workflow/your-workflow-name \
          -d "github_actions_workflow_last_run_seconds $CURRENT_TIMESTAMP"
    
  • Prometheus配置:添加scrape任务拉取Pushgateway的指标,同样用方案1中的PromQL编写告警规则。
  • Grafana告警:配置同方案1,对接AWS通知渠道。

优势

改动极小,仅需在工作流末尾加一步,无需维护额外的API查询服务,是最简便的方案。


方案3:AWS Lambda + GitHub API(备选)

如果想复用AWS现有服务,可部署一个Lambda函数,定期调用GitHub API查询工作流最后运行时间,将时间差指标推送到CloudWatch,再通过Prometheus的CloudWatch Exporter导入指标,最后配置告警。但这个方案步骤略多,不如前两个直接,适合已经深度绑定AWS服务的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:40:30