naveenkumarbaskaran/incident-agent

GitHub: naveenkumarbaskaran/incident-agent

基于AI的事件响应代理,自动分析日志和警报。

Stars: 0 | Forks: 0

# 事件代理-人工智能 基于 **Claude** (`claude-sonnet-4-6`) 构建的 AI 驱动的值班事件响应代理。 给定一组日志文件(nginx、应用程序、Kubernetes),它: 1. 构建 **事件时间线**。 2. 以置信度水平识别最可能的 **根本原因**。 3. 推荐立即的 **缓解措施**。 4. 列出结构化的 **后续操作**。 ## 安装 ``` pip install incident-agent-ai ``` 或从源码: ``` git clone https://github.com/example/incident-agent-ai cd incident-agent-ai pip install -e . ``` 需要 Python 3.10+。 ## 前置条件 设置您的 Anthropic API 密钥: ``` export ANTHROPIC_API_KEY=sk-ant-... ``` ## CLI 使用 ### 单次分析 ``` # 单个日志文件,最后1小时 incident-agent analyze --logs /var/log/app.log --since "1 hour ago" # 包含额外警报上下文的多个日志文件 incident-agent analyze \ --logs /var/log/nginx/error.log \ --logs /var/log/app.log \ --since "30 minutes ago" \ --context "PagerDuty: p0 -- high 5xx rate on /api/checkout since 14:32 UTC" # 详细模式显示每个工具调用 incident-agent analyze --logs /var/log/app.log --since "2 hours ago" --verbose ``` ### 监视模式(持续监控) ``` # 每60秒重新分析一次,查看最后5分钟的日志 incident-agent watch --logs /var/log/app.log --interval 60 --window 5 ``` ## Python API ``` from incident_agent import IncidentAgent agent = IncidentAgent(verbose=True) report = agent.analyze( log_paths=["/var/log/nginx/error.log", "/var/log/app.log"], since="1 hour ago", extra_context="High CPU on web-01, deployed v2.3.1 at 14:00 UTC.", ) print(report.timeline) print(report.root_cause) print(report.mitigation) print(report.follow_up) ``` ### 流式回调 ``` def on_text(chunk: str): print(chunk, end="", flush=True) report = agent.analyze( log_paths=["/var/log/app.log"], since="30 minutes ago", stream_callback=on_text, ) ``` ## 日志解析器 您可以使用 `LogParser` 独立使用: ``` from datetime import datetime, timedelta from incident_agent import LogParser parser = LogParser() since = datetime.now() - timedelta(hours=1) events = parser.parse_file("/var/log/app.log", since=since) errors = parser.filter_errors(events) windows = parser.group_by_window(errors, window_minutes=5) for window_start, evts in windows.items(): print(f"{window_start}: {len(evts)} error events") print(parser.summarize(evts, max_events=10)) ``` ### 支持的日志格式 | 格式 | 示例时间戳 | |--------|------------------| | ISO-8601 / RFC-3339 | `2024-01-15T14:23:01.123Z` | | nginx 合并日志 | `15/Jan/2024:14:23:01 +0000` | | 系统日志 | `Jan 15 14:23:01` | | Kubernetes / Docker | `2024-01-15T14:23:01.123456789Z` | | Unix 纪元 | `1705329781 ...` | ## 架构 ``` +-------------------------------------------------+ | IncidentAgent | | | | User message --> Streaming agentic loop | | | | | +----v----+ | | | Claude | claude-sonnet-4-6 | | +----+----+ | | | tool_use blocks | | +--------+---------+ | | v v v | | read_log grep_logs get_recent_deploys | | (LogParser helpers) | +-------------------------------------------------+ ``` 代理在每次调用时运行一个 **手动工具使用循环**,使用 `messages.stream()`,因此它永远不会在大型日志文件上超时。循环继续,直到 `stop_reason == end_turn` 或达到 20 次迭代的保护上限。 ## 环境变量 | 变量 | 默认 | 描述 | |----------|---------|-------------| | `ANTHROPIC_API_KEY` | -- | **必需。** 您的 Anthropic API 密钥。 | | `DEPLOY_LOG_PATH` | `deploy.log` | 覆盖 `get_recent_deploys` 使用的部署日志路径。 | ## 开发 ``` pip install -e ".[dev]" pytest tests/ ``` ## 许可证 MIT
标签:AI 辅助, Anthropic API, API, BurpSuite集成, Nginx, Python, 后续行动, 应用日志, 异常检测, 持续监控, 故障排查, 故障预测, 无后门, 日志解析器, 根因分析, 缓解措施, 逆向工具