3、保活和监控脚本:企业微信和钉钉方案
功能
| 功能 | 说明 |
|---|---|
| CDT 流量监控 | 定时查询阿里云 CDT 流量用量 |
| 超额止损 | 流量达到阈值时自动停止指定 ECS |
| 自动恢复 | 流量低于阈值且实例停止时自动启动 |
| 飞书和企微通知 | 每小时发送状态巡检,包含中文地域、RegionId、EIP、私网 IP 和流量进度;夜间静默;异常事件按冷却时间提醒 |
| 多实例 | 逗号分隔配置,多台机器串行处理、故障隔离 |
说明:GitHub Actions 的
schedule是 best-effort,可能延迟或在平台高峰时跳过。仓库保留 5 分钟巡检 workflow;状态报告以每小时整点为主触发,并在后续 15 分钟内兜底。监控脚本按北京时间自然小时去重,保证通知每小时最多推送一次。
文件
| 路径 | 说明 |
|---|---|
.github/workflows/monitor.yml | GitHub Actions 定时任务 |
.github/workflows/hourly-report.yml | 每小时状态巡检任务 |
.github/workflows/monitor.py | 实际监控脚本 |
requirements.txt | 固定 Python 依赖版本 |
scripts/set_github_secrets.py | 从本地 Markdown 参数文件导入 Secrets |
部署
- 创建一个私有 GitHub 仓库,例如
yourname/aliyun-monitor-private。 - 推送当前分支到该私有仓库。
- 安装并登录 GitHub CLI:
gh auth login
- 从本地参数文件导入 Secrets:
python3 scripts/set_github_secrets.py --repo yourname/aliyun-monitor-private --params /Users/wei/Downloads/参数.md
脚本只把密钥通过 stdin 写入 GitHub Secrets,不会把密钥写入仓库,也不会在终端输出密钥值。
- 在 GitHub 仓库的
Actions页面手动运行Aliyun ECS Monitor,确认飞书和企微收到通知或 Actions 日志无报错。
Secrets
必需:
| 名称 | 说明 |
|---|---|
ALIYUN_ACCESS_KEY_ID | 阿里云 AccessKey ID,多个用逗号分隔 |
ALIYUN_ACCESS_KEY_SECRET | 阿里云 AccessKey Secret,多个用逗号分隔 |
ALIYUN_REGION | ECS 地域,多个用逗号分隔 |
ECS_INSTANCE_ID | ECS 实例 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_NAME | ECS-1、ECS-2... | 实例显示名称,多个用逗号分隔 |
FEISHU_RECEIVE_ID_TYPE | open_id | 飞书接收人 ID 类型,可填 open_id、user_id、union_id、email 或 chat_id |
FEISHU_REPORT_INTERVAL_MINUTES | 60 | 常规状态巡检推送间隔;监控仍然每 5 分钟运行 |
FEISHU_QUIET_START_HOUR | 0 | 飞书静默开始小时,北京时间 |
FEISHU_QUIET_END_HOUR | 6 | 飞书静默结束小时,北京时间;默认 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,减少资产信息留存。 - 阿里云费用中心仍建议配置预算/余额告警,作为自动关机之外的最后防线。