3、保活和监控脚本:企业微信和钉钉方案

Administrator 1

功能

功能说明
CDT 流量监控定时查询阿里云 CDT 流量用量
超额止损流量达到阈值时自动停止指定 ECS
自动恢复流量低于阈值且实例停止时自动启动
飞书和企微通知每小时发送状态巡检,包含中文地域、RegionId、EIP、私网 IP 和流量进度;夜间静默;异常事件按冷却时间提醒
多实例逗号分隔配置,多台机器串行处理、故障隔离

说明:GitHub Actions 的 schedule 是 best-effort,可能延迟或在平台高峰时跳过。仓库保留 5 分钟巡检 workflow;状态报告以每小时整点为主触发,并在后续 15 分钟内兜底。监控脚本按北京时间自然小时去重,保证通知每小时最多推送一次。

文件

路径说明
.github/workflows/monitor.ymlGitHub Actions 定时任务
.github/workflows/hourly-report.yml每小时状态巡检任务
.github/workflows/monitor.py实际监控脚本
requirements.txt固定 Python 依赖版本
scripts/set_github_secrets.py从本地 Markdown 参数文件导入 Secrets

部署

  1. 创建一个私有 GitHub 仓库,例如 yourname/aliyun-monitor-private
  2. 推送当前分支到该私有仓库。
  3. 安装并登录 GitHub CLI:
gh auth login
  1. 从本地参数文件导入 Secrets:
python3 scripts/set_github_secrets.py --repo yourname/aliyun-monitor-private --params /Users/wei/Downloads/参数.md

脚本只把密钥通过 stdin 写入 GitHub Secrets,不会把密钥写入仓库,也不会在终端输出密钥值。

  1. 在 GitHub 仓库的 Actions 页面手动运行 Aliyun ECS Monitor,确认飞书和企微收到通知或 Actions 日志无报错。

Secrets

必需:

名称说明
ALIYUN_ACCESS_KEY_ID阿里云 AccessKey ID,多个用逗号分隔
ALIYUN_ACCESS_KEY_SECRET阿里云 AccessKey Secret,多个用逗号分隔
ALIYUN_REGIONECS 地域,多个用逗号分隔
ECS_INSTANCE_IDECS 实例 ID,多个用逗号分隔
CDT_TRAFFIC_LIMIT_GB流量阈值 GB,多个用逗号分隔
FEISHU_APP_ID飞书应用 App ID
FEISHU_APP_SECRET飞书应用 App Secret
FEISHU_USER_OPEN_ID飞书接收人 ID,默认按 open_id 解释,通常应以 ou_ 开头

可选:

名称默认值说明
INSTANCE_NAMEECS-1ECS-2...实例显示名称,多个用逗号分隔
FEISHU_RECEIVE_ID_TYPEopen_id飞书接收人 ID 类型,可填 open_iduser_idunion_idemailchat_id
FEISHU_REPORT_INTERVAL_MINUTES60常规状态巡检推送间隔;监控仍然每 5 分钟运行
FEISHU_QUIET_START_HOUR0飞书静默开始小时,北京时间
FEISHU_QUIET_END_HOUR6飞书静默结束小时,北京时间;默认 00:00-05:59 不推送
FEISHU_CHAT_ID保留兼容
WECHAT_WORK_WEBHOOK企微群机器人 Webhook;配置后与飞书并行推送

多实例规则:每项配置可以填 1 个值表示所有实例共享,也可以填 N 个值与 ECS_INSTANCE_ID 一一对应;数量不匹配会失败并尝试发送已配置的通知通道告警。

安全建议

  • 仓库必须设为私有。
  • 参数文件保存在本机,不要提交;建议权限为 0600
  • 阿里云 AK/SK 使用专用 RAM 子用户,只授权指定实例的查询、启动、停止,以及必要的 CDT/账单查询能力。
  • GitHub Actions 已限制 permissions: contents: read,并取消上传日志 artifact,减少资产信息留存。
  • 阿里云费用中心仍建议配置预算/余额告警,作为自动关机之外的最后防线。