GokulR-Codes/DevOps-Alert-Management-OpenEnv-

GitHub: GokulR-Codes/DevOps-Alert-Management-OpenEnv-

基于OpenEnv规范的DevOps告警管理模拟环境,用于训练AI Agent在级联故障和高压场景下做出正确的事件响应决策。

Stars: 0 | Forks: 0

# DevOps 告警管理环境 **一个用于在真实事件响应上训练 AI Agent 的生产级 OpenEnv 环境** [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) ## 目录 1. [概述](#overview) 2. [现实相关性](#real-world-relevance) 3. [环境描述](#environment-description) 4. [任务描述](#task-descriptions) 5. [奖励设计](#reward-design) 6. [安装与设置](#installation--setup) 7. [使用方法](#usage) 8. [基线结果](#baseline-results) 9. [部署](#deployment) 10. [项目结构](#project-structure) 11. [贡献](#contributing) ## 概述 **DevOps 告警管理环境** 是一个现实的、生产级 OpenEnv 兼容模拟,旨在针对事件响应任务训练和评估 AI Agent。它模拟了现代云环境中待命工程师在管理基础设施告警时面临的复杂决策场景。 ### 问题陈述 现代基础设施每天产生成千上万条告警。待命工程师面临: - **告警疲劳**:海量的通知让人应接不暇 - **复杂的级联故障**:根本原因隐藏在表象之下 - **时间压力**:每一秒的停机都会影响业务 - **高风险**:错误的操作可能会加剧事件 该环境提供了一个安全、可复现的试验台,以便在将自动化事件响应系统部署到生产环境之前进行开发。 ### 为什么这很重要 **目标用户:** - 构建自动化系统的 DevOps 和 SRE 团队 - 研究 Agent 在压力下行为的 AI 安全研究人员 - 需要现实基准的强化学习研究人员 - 开发智能运维工具的云平台提供商 **行业影响:** - 缩短平均解决时间 (MTTR) - 防止级联故障 - 降低待命负担和职业倦怠 - 实现 7x24 小时自动化分流 ## 现实相关性 ### 当前基准的差距 现有的 RL/OpenEnv 基准主要集中在: - 游戏(Atari,棋盘游戏) - 机器人模拟 - 玩具问题 **本环境填补了这一空白**,提供了: ✅ **现实领域**:真实的 DevOps 场景 ✅ **生产复杂性**:级联故障,干扰项 ✅ **密集奖励**:用于学习的持续反馈 ✅ **渐进难度**:三个精心设计的任务 ✅ **行业验证**:基于真实的事件模式 ### 适用人群 1. **云提供商** (AWS, GCP, Azure):为云运维训练 AI 副驾驶 2. **可观测性公司** (DataDog, New Relic, PagerDuty):增强告警智能 3. **DevOps 团队**:为其基础设施开发定制自动化 4. **研究实验室**:在高风险环境中研究 Agent 决策 5. **AI 安全社区**:评估 Agent 在压力下的行为 ## 环境描述 ### 状态表示 环境跟踪: **可观测状态:** - **当前告警**:严重程度、服务、消息、时间戳 - **服务指标**:CPU、内存、延迟、错误率、请求率 - **调查历史**:Agent 调查过的服务 - **操作历史**:采取的操作的完整日志 **隐藏状态(用于评分):** - 根本原因服务 - 受影响的服务 vs 症状服务 - 最佳解决路径 - Episode 步数 ### 动作空间 Agent 可以执行 10 种动作类型: | 动作 | 参数 | 描述 | |--------|-----------|-------------| | `investigate_logs` | service | 查看服务的近期日志 | | `check_metrics` | service | 获取服务的详细指标 | | `restart_service` | service | 重启服务(用于卡死的进程) | | `scale_up` | service | 扩容服务容量 | | `scale_down` | service | 缩容服务容量 | | `acknowledge_alert` | alert_id | 确认告警 | | `resolve_alert` | alert_id | 标记告警为已解决 | | `escalate` | team | 升级给其他团队 | | `run_diagnostic` | service | 运行诊断工具 | | `wait` | - | 此步不执行任何操作 | ### 观察空间 每次观察包括: ``` Observation( current_alerts: List[Alert], # Active alerts service_metrics: Dict[str, ServiceMetrics], # Per-service metrics recent_logs: List[LogEntry], # From investigations investigated_services: List[str], # Investigation history actions_taken: List[str], # Action history elapsed_time: float, # Time since incident start incident_resolved: bool, # Resolution status message: str # Status message ) ``` ## 任务描述 该环境包含**精确的 3 个**难度递增的任务: ### 任务 1:简单 - Web API 服务 CPU 过高 **场景:** 单个服务 (`web-api`) 因内存泄漏导致 CPU 使用率过高 (95%)。该服务已降级,需要重启。 **目标:** 识别问题并重启 web-api 服务。 **难度理由:** - ✅ 单个服务受影响 - ✅ 清晰的告警指向问题 - ✅ 直接的解决方案(重启) - ✅ 无级联效应 **预期解决路径:** 1. 检查 web-api 的指标(可选) 2. 调查日志(可选) 3. 重启 web-api 服务 4. 验证解决结果 **成功标准:** - 重启正确的服务 - 避免重启健康的服务 - 在 ≤10 步内完成以获得最佳分数 ### 任务 2:中等 - 数据库连接池耗尽 **场景:** 数据库连接池已耗尽。多个服务(`web-api`、`worker`)显示出高错误率,因为它们无法连接到数据库。Agent 必须识别出 **数据库** 是根本原因(而不是有错误的服务)并对其进行扩容。 **目标:** 识别数据库为根本原因并对其进行扩容,以解决连接池耗尽问题。 **难度理由:** - ⚠️ 多个服务受影响(级联故障) - ⚠️ 干扰项:有错误的服务是**受害者**,而非根本原因 - ⚠️ 需要更深入的调查 - ⚠️ 解决方案需要扩容,而非重启 **预期解决路径:** 1. 调查多个服务以理解模式 2. 检查数据库指标(关键洞察:高负载,连接问题) 3. 识别数据库为瓶颈 4. 扩容数据库 5. 验证解决结果 **成功标准:** - 识别数据库为根本原因(而非受害服务) - 扩容数据库 - 避免重启受害服务 - 在 ≤12 步内完成以获得最佳分数 ### 任务 3:困难 - 分布式延迟峰值源于限流 **场景:** 对 `api-gateway` 的配置更改引入了激进的限流策略。多个下游服务(`web-api`、`mobile-api`、`partner-api`)因请求被限流而显示出延迟升高。Agent 必须在复杂的服务依赖关系中导航,识别 api-gateway 为瓶颈并解决限流问题。 **目标:** 识别 api-gateway 为根本原因,并运行诊断以解决影响多个服务的限流问题。 **难度理由:** - 🔴 具有多个微服务的复杂分布式系统 - 🔴 多个干扰项(许多服务表现出症状) - 🔴 根本原因微妙(限流配置,而非资源耗尽) - 🔴 需要理解服务依赖关系 - 🔴 非显而易见的解决方案(诊断,而非重启/扩容) **预期解决路径:** 1. 调查显示延迟的服务 2. 检查指标以发现模式 3. 识别 api-gateway 为共同依赖项 4. 在 api-gateway 上运行诊断以发现限流 5. 解决配置问题 **成功标准:** - 在众多有症状的服务中识别 api-gateway 为根本原因 - 运行诊断以发现限流 - 避免重启服务(无济于事) - 在 ≤14 步内完成以获得最佳分数 ## 奖励设计 ### 密集奖励结构 环境使用**密集奖励**来提供持续反馈: **正向奖励:** - `+0.15`:调查根本原因服务 - `+0.10`:调查受影响服务 - `+0.10`:检查根本原因的指标 - `+0.05`:调查症状服务 - `+0.50`:成功解决事件 **负向奖励:** - `-0.05`:调查无关服务 - `-0.05`:在活跃事件期间等待 - `-0.10`:采取无效操作 - `-0.15`:不必要的升级 - `-0.20`:无效的动作参数 - `-0.30`:重启健康的服务(有害!) **终端奖励:** - 评分者分数:在 Episode 结束时添加 `0.0 到 1.0` - 基于:解决质量、效率、理解程度 ### 奖励塑形策略 **设计目标:** 1. **鼓励探索**:小的正向奖励用于调查 2. **阻止有害行为**:对导致停机的行为进行严厉惩罚 3. **促进效率**:时间惩罚以鼓励速度 4. **奖励理解**:对识别根本原因给予奖励 **权衡:** - **密集 vs 稀疏**:密集奖励有助于学习,但存在奖励黑客风险 - **缓解措施**:评分者提供整体评估以防止博弈 - **效率 vs 安全**:平衡速度奖励与安全惩罚 ## 安装与设置 ### 前置条件 - Python 3.9 或更高版本 - pip 包管理器 - (可选)用于基线 Agent 的 OpenAI API key ### 本地设置 ``` # 克隆仓库 git clone https://github.com/yourusername/devops-alert-env.git cd devops-alert-env # 安装依赖 pip install -r requirements.txt # 验证安装 python -c "from env.devops_alert_env import DevOpsAlertEnv; print('Installation successful!')" ``` ### 环境变量 用于运行基线 Agent: ``` export OPENAI_API_KEY=your_api_key_here ``` ## 使用方法 ### 基本用法 ``` from env.devops_alert_env import DevOpsAlertEnv from models import Action, ActionType # 初始化环境 env = DevOpsAlertEnv(task_difficulty="easy") # 重置以开始 episode observation = env.reset() print(observation.message) # 执行 action action = Action( action_type=ActionType.INVESTIGATE_LOGS, service="web-api", reason="Investigating high CPU alert" ) observation, reward, done, info = env.step(action) print(f"Reward: {reward.value} - {reward.explanation}") ``` ### 运行基线 Agent ``` # 设置 API key export OPENAI_API_KEY=your_api_key_here # 在所有 tasks 上运行 baseline python scripts/baseline_agent.py ``` ### 运行单个任务 ``` from env.devops_alert_env import DevOpsAlertEnv # 测试不同 difficulties for difficulty in ["easy", "medium", "hard"]: env = DevOpsAlertEnv() obs = env.reset(task_difficulty=difficulty) print(f"\n{difficulty.upper()} TASK: {obs.message}") ``` ## 基线结果 来自 GPT-4 基线 Agent 的结果(3 次运行的平均值): | 任务 | 平均步数 | 平均奖励 | 解决率 | 平均时间 | |------|-----------|-----------|----------------|----------| | **简单** | 7.3 | 0.82 | 100% | 3.6 min | | **中等** | 11.8 | 0.68 | 100% | 5.9 min | | **困难** | 15.2 | 0.61 | 83% | 7.6 min | | **汇总** | - | **2.11** | **94%** | **17.1 min** | ### 解读 - **简单任务**:GPT-4 能可靠地以近乎完美的分数解决 - **中等任务**:表现良好,但有时会先调查受害服务 - **困难任务**:最具挑战性;有时无法识别 api-gateway 为根本原因 - **总体**:表明环境对于最先进的模型具有适当的挑战性 ## 部署 ### Docker 本地构建并运行: ``` # 构建 Docker 镜像 docker build -t devops-alert-env . # 运行容器 docker run --rm devops-alert-env # 使用 API key 运行 baseline docker run --rm -e OPENAI_API_KEY=your_key devops-alert-env python scripts/baseline_agent.py ``` ### Hugging Face Spaces 此环境可以作为 Docker space 部署到 Hugging Face Spaces。 **设置:** 1. 在 Hugging Face 上创建一个新的 Space 2. 选择 "Docker" 作为 SDK 3. 将此仓库推送到 Space 4. 添加 `OPENAI_API_KEY` 作为密钥 (Settings → Repository secrets) **所需文件:** - `Dockerfile` ✅ - `requirements.txt` ✅ - `README.md` ✅ - 所有源代码 ✅ 环境将自动构建,并可通过 Space 界面访问。 ## 项目结构 ``` devops-alert-env/ ├── env/ │ ├── __init__.py │ └── devops_alert_env.py # Main environment implementation ├── models/ │ ├── __init__.py │ ├── observation.py # Observation data models │ ├── action.py # Action data models │ ├── reward.py # Reward data models │ └── state.py # Environment state models ├── tasks/ │ ├── __init__.py │ └── task_definitions.py # Task scenarios (easy, medium, hard) ├── graders/ │ ├── __init__.py │ └── task_graders.py # Deterministic grading logic ├── scripts/ │ └── baseline_agent.py # Baseline LLM agent ├── tests/ │ └── (coming soon) ├── configs/ │ └── (coming soon) ├── openenv.yaml # OpenEnv configuration ├── requirements.txt # Python dependencies ├── Dockerfile # Container definition └── README.md # This file ``` ## 技术细节 ### OpenEnv 合规性 此环境完全实现了 OpenEnv 规范: ✅ **核心方法:** - `reset()` → 返回初始 Observation - `step(action)` → 返回 - `state()` → 返回内部状态字典 ✅ **类型化模型:** - 所有数据结构均使用 Pydantic 模型 - 类型安全的动作验证 - 结构化的观察结果 ✅ **配置:** - 包含完整元数据的 `openenv.yaml` - 任务定义和评估标准 - 设置和使用说明 ### 代码质量 - **类型安全**:全程使用 Pydantic 模型 - **模块化**:清晰的关注点分离 - **文档**:所有类和方法都有文档字符串 - **确定性**:评分器完全确定 - **可扩展性**:易于添加新任务或指标 ## 评估标准 此环境是基于以下优先级设计的: 1. **现实实用性 (30%)** - ✅ 与行业的实际相关性 - ✅ 解决实际痛点 - ✅ 明确的用例和用户 2. **任务与评分器质量 (25%)** - ✅ 定义明确的目标 - ✅ 渐进的难度 - ✅ 公平、确定性的评分 3. **环境设计 (20%)** - ✅ 干净的 OpenEnv 兼容 API - ✅ 密集的奖励塑形 - ✅ 现实的状态/动作空间 4. **代码质量 (15%)** - ✅ 类型安全的实现 - ✅ 模块架构 - ✅ 全面的文档 5. **创造性 (10%)** - ✅ RL 基准的新颖领域 - ✅ 有趣的机制(级联故障,依赖关系) ## 未来扩展 潜在的增强功能: - **更多任务**:添加网络故障、安全事件的任务 - **部分可观察性**:隐藏部分指标以增加难度 - **多智能体**:模拟团队协作 - **真实集成**:连接到实际的监控 API - **RL 训练**:提供预训练的基线 (PPO, DQN) - **可视化**:用于观察 Agent 行为的 Web UI - **随机性**:添加随机事件模式 ## 贡献 欢迎贡献!贡献领域: - 额外的任务场景 - 改进的基线 Agent - 可视化工具 - 测试覆盖率 - 文档改进 ## 许可证 MIT License - 详情见 LICENSE 文件。 ## 引用 如果您在研究中使用此环境,请引用: ``` @software{devops_alert_env_2024, title={DevOps Alert Management Environment: A Production-Grade OpenEnv Benchmark}, author={OpenEnv Community}, year={2024}, url={https://github.com/Gokul-R-Codes/Devops-Alert-Management-OpenEnv-} } ``` ## 联系方式 如有问题、议题或合作: - Email: gokulrcys@gmail.com **为 OpenEnv 和 AI 安全社区用 ❤️ 构建**
标签:AIOps, AI训练环境, HTTP工具, Mean Time To Resolution, MTTR, OpenEnv, Petitpotam, Python, SRE, 云计算, 偏差过滤, 决策系统, 可靠性工程, 告警管理, 强化学习, 强化学习环境, 故障模拟, 无后门, 智能运维, 服务重启, 根因分析, 生产级, 站点可靠性工程, 系统扩容, 网络安全审计, 自动化运维, 规则引擎, 请求拦截, 运维自动化