SMF黑客马拉松2025-n8n生产警报分析仪
使用n8n、MCP服务器和OpenAI GPT-4o-mini的人工智能生产警报分析系统。
概述
该项目提供了一个智能警报分析工作流,该工作流:
- 🔍 监视器 生产警报的松弛通道
- 🤖 分析 使用AI结合GitHub代码和Kibana日志的上下文发出警报
- 📊 提供 根本原因分析和可操作建议
- 🔗 整合 通过MCP(模型上下文协议)服务器提供多个数据源
建筑
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Slack │─────▶│ n8n │─────▶│ OpenAI │
│ Alerts │ │ Workflow │ │ GPT-4o-mini │
└─────────────┘ └──────┬───────┘ └─────────────────┘
│
┌───────────┴───────────┐
│ │
┌──────▼──────┐ ┌─────▼──────┐
│ GitHub MCP │ │ Kibana MCP │
│ (Port 3000)│ │ (Port 3001)│
└─────────────┘ └────────────┘组件
1.n8n工作流程
位置: n8n-workflow/
- 生产警报分析器 -通过人工智能分析增强工作流程
- Slack集成 -监控警报并发布响应
- AI 代理 -按严重程度划分的路线(临界与高/中)
- 代码上下文 -可选地包括相关代码片段
特性:
- ✅ 警报解析和结构化数据提取
- ✅ 基于严重性的路由(不同的分析深度)
- ✅ 立即确认响应
- ✅ 线程Slack回复
- ✅ 指标记录
📖 文档:参见 n8n-workflow/WORKFLOW_GUIDE.md
2.MCP服务器
位置: dockers/
使用HTTP网桥进行n8n集成的多MCP服务器设置:
GitHub MCP服务器(端口3000)
- 跨存储库的代码搜索
- 文件内容检索
- 提交历史和公关管理
- 40多个GitHub工具可用
Kibana MCP服务器(端口3001)
- 日志搜索和分析
- 可视化管理
- 已保存对象访问
- 实时错误跟踪
📖 文档:
- -完整的设置指南
- -快速入门指南
3.样品申请
位置: sample-app/
模拟实际生产故障的Spring Boot Order服务:
- 数据库超时和连接池耗尽
- 支付网关故障
- 库存服务不可用
- 高错误率和内存问题
4.日志样本
位置: sample-logs/
15个真实的测试日志条目:
- Elasticsearch/Kibana导入就绪
- 匹配警报场景
- 包括带有代码引用的堆栈跟踪
- 结构化JSON格式
📖 文档: sample-logs/README.md
5.样品警报
位置: sample-alerts/
10个预格式化的Slack警报,涵盖:
- 数据库超时(严重)
- 支付网关故障(高)
- 库存问题(中等)
- 高错误率(关键)
- 内存和性能问题
快速开始
先决条件
- Docker和Docker Compose
- GitHub个人访问令牌
- Kibana服务器访问(URL、用户名、密码)
- n8n实例(云或自托管)
- OpenAI API密钥
1.设置MCP服务器
cd dockers
# Copy and configure environment
cp .env.multi-mcp.example .env
nano .env # Add your credentials
# Update repository path in multi-mcp-docker-compose.yml
# Edit the volumes section to point to your repo
# Start services
docker compose -f multi-mcp-docker-compose.yml up -d
# Verify
curl http://localhost:3000/health # GitHub MCP
curl http://localhost:3001/health # Kibana MCP2.将日志导入Kibana
cd sample-logs
# Generate bulk import file
node convert-to-bulk.js
# Import to Elasticsearch (replace with your details)
curl -X POST "https://YOUR_KIBANA_URL:9200/_bulk" \
-H "Content-Type: application/x-ndjson" \
-H "Authorization: ApiKey YOUR_API_KEY" \
--data-binary @kibana-bulk-import.ndjson
# Create index pattern in Kibana UI: logs-order-service-*3.导入n8n工作流
- 打开n8n用户界面
- 首选 工作流 → 从文件导入
- 选择:
n8n-workflow/production-alert-analyzer.json - 配置凭据:
- 松弛API:添加您的Slack工作区凭据 - OpenAI API:添加您的OpenAI API密钥
- 配置MCP客户端:
- GitHub MCP: http://localhost:3000/message (或 http://host.docker.internal:3000/message 如果Docker中的n8n) - Kibana MCP: http://localhost:3001/message (或 http://host.docker.internal:3001/message 如果Docker中的n8n)
- 更新Slack工作区的频道ID
- 激活工作流
4.测试系统
# Option 1: Start sample application
cd sample-app
mvn clean install
mvn spring-boot:run
# Generate traffic
cd ../sample-alerts
./test-workflow.sh
# Option 2: Post sample alert to Slack
# Copy any alert from sample-alerts/sample-slack-alerts.md
# Paste into your #mcp-testing channel用法
使用样本警报进行测试
- 打开Slack并导航到您配置的输入通道(例如。,
#mcp-testing) - 从复制警报
sample-alerts/sample-slack-alerts.md - 将警报粘贴到频道中
- 等待1-2秒确认
- 检查输出通道(例如。,
#n8n-output)用于AI分析(5-10秒)
将Datadog警报发布到Slack
使用Python脚本将Datadog警报配置发布到Slack:
cd sample-alerts
# List all available alerts
python post_alerts_to_slack.py --list
# Post specific alerts by index
python post_alerts_to_slack.py --token YOUR_TOKEN --channel #alerts --alerts 1,3,5
# Post a range of alerts
python post_alerts_to_slack.py --token YOUR_TOKEN --channel #alerts --alerts 1-3
# Interactive mode - select which alerts to post
python post_alerts_to_slack.py --token YOUR_TOKEN --channel #alerts --interactive
# Using environment variables
export SLACK_TOKEN=xoxb-your-token
export SLACK_CHANNEL=#alerts
python post_alerts_to_slack.py --alerts 1,9获取Slack OAuth令牌:
- 首选https://api.slack.com/apps
- 创建应用→ OAuth和权限
- 添加作用域:
chat:write,chat:write.public - 安装到工作区→ 复制Bot用户OAuth令牌
预期AI响应
AI将提供:
- 根本原因分析:确定主要问题
- 立即行动:可采取的下一步行动
- 调查检查表:要检查什么
- 长期预防:防止再次发生的建议
- 代码参考:特定文件和行号(如果启用了代码上下文)
- 日志分析:Kibana的相关错误模式
配置
工作流通道
在n8n工作流中编辑:
- 输入通道:发布警报的位置(默认值:
#mcp-testing) - 输出通道:发送分析的位置(默认值:
#n8n-output)
AI温度
在OpenAI节点中调整:
0.1-0.3:更确定、更一致的响应0.4-0.7:更具创意、更多样化的回应
严重性路由
编辑“按严重性路由”节点以更改哪些警报可以进行详细分析:
- 关键的:全面的根本原因分析
- 高/中:快速分析
项目结构
hackathon-2025/
├── dockers/ # MCP server setup
│ ├── multi-mcp-docker-compose.yml
│ ├── mcp-bridge/ # HTTP bridge for MCP servers
│ ├── kibana-bridge/ # Kibana-specific bridge
│ ├── MULTI_MCP_SETUP.md
│ └── QUICK_START.md
├── n8n-workflow/ # n8n workflows
│ ├── production-alert-analyzer.json
│ ├── WORKFLOW_GUIDE.md
│ └── CODE_CONTEXT_GUIDE.md
├── sample-app/ # Spring Boot test application
│ └── src/main/java/...
├── sample-logs/ # Sample Kibana logs
│ ├── kibana-sample-logs.json
│ ├── convert-to-bulk.js
│ └── README.md
├── sample-alerts/ # Sample Slack alerts
│ ├── sample-slack-alerts.md
│ └── test-workflow.sh
└── TESTING_GUIDE.md # Complete testing guide文档
- 测试指南.md -包含场景的完整测试指南
- n8n工作流/workflow_GUIDE.md -n8n工作流详细信息
- n8n工作流/代码_输出_用户.md -添加代码上下文
- 码头工人/MOLI_MCP_SETUP.md -多MCP服务器设置
- 示例日志/README.md -日志导入和测试
- 日志样本/KIBANA_IIMPORT_GUIDE.md -Kibana导入详细信息
故障排除
MCP服务器未启动
# Check logs
docker compose -f multi-mcp-docker-compose.yml logs
# Verify environment variables
cat .env
# Restart services
docker compose -f multi-mcp-docker-compose.yml restartn8n工作流未触发
- 验证工作流是否 活跃的 (在右上角切换)
- 检查Slack凭据是否有效
- 验证通道ID是否与您的工作区匹配
- 使用简单消息进行测试:“测试关键警报”
AI响应过于通用
- 为警报添加更多上下文(服务、指标、堆栈跟踪)
- 在工作流中启用代码上下文
- 较低的AI温度(0.1-0.3)
- 通过示例增强系统提示
MCP连接问题
# Test bridges
curl http://localhost:3000/health
curl http://localhost:3001/health
# If n8n in Docker, use:
# http://host.docker.internal:3000/message
# http://host.docker.internal:3001/message演出
- 平均响应时间:5-10秒
- 令牌使用情况:每个警报500-1500个令牌
- 成本:每个警报约0.001-0.003美元(GPT-4o-mini)
- 吞吐量:100+警报/小时
安全说明
⚠️ 重要:
- 永不承诺
.env文件到版本控制 - 尽可能使用只读存储库装载
- 限制对MCP网桥端口的网络访问
- 使用具有最低权限的API密钥
- 考虑在生产环境中为HTTP网桥添加身份验证
后续步骤
- ✅ 使用所有样本警报进行测试
- ✅ 为您的服务自定义提示
- ✅ 添加事故工单创建(Jira/ServiceNow)
- ✅ 与监控系统(Datadog/Prometheus)集成
- ✅ 构建runbook数据库以供AI参考
- ✅ 添加历史事件匹配
- ✅ 创建指标仪表板
- ✅ 设置随叫随到升级
贡献
这是一个黑客马拉松项目。请随意:
- 添加更多MCP服务器
- 增强AI提示
- 添加新的警报类型
- 改进错误处理
- 添加更多测试场景
许可证
MIT许可证-有关详细信息,请参阅许可证文件
支持
对于问题或疑问:
- 检查子目录中的相关文档
- 查看Docker日志:
docker compose logs - 测试MCP电桥:
curl http://localhost:3000/health - 验证UI中的n8n执行日志
