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, 后续行动, 应用日志, 异常检测, 持续监控, 故障排查, 故障预测, 无后门, 日志解析器, 根因分析, 缓解措施, 逆向工具