feat(ci): P2-3 Runner监控告警 - 离线/磁盘/内存/队列积压主动告警 #537
Reference in New Issue
Block a user
Delete Branch "ci/runner-monitor-alerting"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
概述
P2-3 Runner 监控告警 - Phase 4 最后一块,纯 CI 运维工具,不动业务代码。
工单: #449
新增内容
目录结构
3个核心能力
告警规则
设计要点
用法
验证
后续迭代
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
代码审查结果 - PR #537
⚠️ 问题(4个需要修改)
__all__中包含了"snapshot",但在修改文件列表中未提供snapshot.py文件。这会导致外部执行from runner_monitor import snapshot时抛出ImportError或AttributeError。int(os.environ.get(..., "default"))进行类型转换时缺乏异常处理。如果环境变量配置了非数字字符串(如 "abc"),模块加载时会直接抛出ValueError导致程序崩溃。config.__dict__.get("FEISHU_WEBHOOK_URL", "")访问配置极不规范且不安全。该方式绕过了属性访问机制,且根据当前 diff,config.py中并未定义FEISHU_WEBHOOK_URL,导致此行逻辑永远取不到值,只能依赖后续的 fallback 逻辑,属于无效代码。save_snapshot方法内部通过from runner_monitor.runner_status import RunnerStatusChecker as RSC导入类仅为了调用静态方法_cleanup_old_snapshots。这种设计造成了不必要的模块耦合和重复导入开销,且静态方法放在实体类中也不符合单一职责原则。💡 建议(2个可选)
chatops导入配置,或者在config.py中显式定义并转发FEISHU_WEBHOOK_URL,避免使用__dict__这种黑魔法。label.get('name'),假设label一定是字典。如果 API 返回的数据结构发生变化(如 label 为字符串或 None),此处会崩溃。建议增加类型检查或更安全的防御性代码。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-18 20:55:38 | 模型:
🗑️ 预览环境已清理
PR #537 已关闭或合并,对应的预览环境已被清理。