et0ILesTevy/incident-management-pipeline
GitHub: et0ILesTevy/incident-management-pipeline
该项目是一个基于 FastAPI 和 Gemini AI 的自动化事件响应流水线,通过打通 PagerDuty 和 ServiceNow 实现异常检测、AI 根因诊断和工单全生命周期管理。
Stars: 0 | Forks: 0
# AI 增强的事件管理流水线
一个自动化、安全优先的事件管理和异常检测流水线,基于 **FastAPI**、**PagerDuty**、**ServiceNow** 和 **Gemini AI** 构建。
该项目接收高频遥测数据,检测性能异常,在 PagerDuty 中触发事件响应流程,利用 AI 诊断创建并丰富 ServiceNow 工单,并分发多阶段的电子邮件通知。
## 核心功能
1. **异常检测:** 实时滑动窗口遥测速率分析。当请求速率超过可配置的阈值(默认为 `8.0 req/sec`)时,系统将标记为中断事件。
2. **ServiceNow 编排:** 使用异步 API 操作,在 ServiceNow 中自动创建、丰富和解决事件工单。
3. **Gemini AI 诊断:** 使用 `gemini-2.5-flash` 模型,从遥测日志中生成 Markdown 格式的根因分析(RCA)和分类摘要。
4. **两阶段电子邮件警报:** 在 AI 诊断报告编制完成之前,先发送即时的低延迟分类通知,随后再发送内容丰富的 HTML 格式电子邮件。
5. **自动恢复循环:** 当检测到遥测速率降至恢复阈值以下时,自动解决处于活动状态的 PagerDuty 事件,并将相应的 ServiceNow 工单标记为已解决。
## 安全架构
为了防止滥用、欺骗和未经授权的访问,该流水线实施了四层安全验证:
* **HMAC-SHA256 Webhook 签名:** 根据已配置的 webhook 密钥,验证传入的 PagerDuty webhook payload 的加密签名(`X-PagerDuty-Signature`)。
* **自定义 Token Header 检查:** 要求传入的 webhook 携带预先共享的安全标头(`X-Secure-Token`),以防止伪造调用。
* **IP 允许列表强制执行:** 将传入的 webhook 调用限制为 PagerDuty 官方的传出 IP 地址和 CIDR 网段。
* **安全的模拟器端点:** 在预先共享的 128 位 header token 检查(`X-Simulator-Token`)的保护下,安全地暴露突发流量模拟器(`/api/simulator/burst` 和 `/api/simulator/clear`)。
## 技术栈
* **编程语言:** Python 3.13+
* **框架:** FastAPI, Uvicorn
* **HTTP 客户端:** HTTPX (异步请求)
* **AI 模型:** Google Gen AI SDK (`gemini-2.5-flash`)
* **数据库/集成:** PagerDuty Events API v2, ServiceNow Table API, SMTP 邮件服务器
* **隧道穿透:** Cloudflare Tunnels (`cloudflared`)
## 快速开始
### 1. 安装
克隆仓库并在虚拟环境中安装依赖项:
```
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
### 2. 配置 (`.env`)
根据 `.env.example` 模板,在根目录下创建一个 `.env` 文件:
```
# PagerDuty Webhook Secret(用于 HMAC 验证)
PAGERDUTY_WEBHOOK_SECRET=your_pagerduty_webhook_secret
# 传入 Webhook 的自定义 Header Token
PAGERDUTY_SECURE_TOKEN=your_pagerduty_secure_token
# SMTP 电子邮件凭据
SENDER_EMAIL=your_sender@gmail.com
SENDER_APP_PASSWORD=your_sender_app_password
RECEIVER_EMAIL=your_receiver@gmail.com
# ServiceNow 连接详情
SERVICENOW_INSTANCE=your_servicenow_instance_subdomain
SERVICENOW_USER=admin
SERVICENOW_PASSWORD=your_servicenow_password
# Gemini AI 凭据
GEMINI_API_KEY=your_gemini_api_key
# 用于 Burst Simulator 身份验证的 Pre-Shared Token
SIMULATOR_AUTH_TOKEN=your_secure_simulator_token
```
### 3. 运行服务器
启动 FastAPI 应用程序:
```
PYTHONPATH=. .venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8000
```
### 4. 通过 Cloudflare Tunnel 暴露服务器
在一个新的终端窗口中,启动一个安全的公共 Cloudflare Tunnel,将您的 webhook 处理程序映射到互联网:
```
cloudflared tunnel --url http://127.0.0.1:8000
```
记下生成的 `*.trycloudflare.com` URL,并将其注册为您的 PagerDuty Webhook 订阅目标:
`https://.trycloudflare.com/webhooks/pagerduty`
## 中断模拟与测试
要在本地测试端到端的集成流程,请通过发送您的预共享模拟器 token 来触发突发流量模拟器:
```
curl -X POST "http://127.0.0.1:8000/api/simulator/burst?duration=15" \
-H "X-Simulator-Token: your_secure_simulator_token"
```
**需要关注的日志序列:**
1. 大量遥测请求涌入(`⚡ BURST`)。
2. 异常检测器检测到速率突增并触发 PagerDuty。
3. PagerDuty webhook 触发,创建 ServiceNow 工单并发送分类电子邮件。
4. Gemini 诊断丰富操作异步执行,将注释发布到 ServiceNow 事件中,并发送内容丰富的 HTML 电子邮件。
5. 15 秒后,突发流量停止,速率回落至基线水平,事件得以解决,ServiceNow 工单状态更新为 **Resolved**。
## 运行测试
运行集成测试套件以验证端点身份验证和流程行为:
```
PYTHONPATH=. .venv/bin/python tests/test_flow.py
```
标签:逆向工具