使用说明
Sumo逻辑调查MCP服务器
模型上下文协议(MCP)服务器,与Sumo Logic的API集成以执行日志搜索和全面的错误调查。该服务器提供了一个完整的调查工具包,其中包含10个工具,用于日志分析、错误模式检测、堆栈跟踪解析和用户影响分析。
特性
- 搜索Sumo逻辑日志 使用带有系统预设的自定义查询
- 时间范围计算 -解析人类可读的时间,如“过去19小时”
- 自动日志解析 -从原始日志中提取结构化字段
- 堆栈跟踪分析 -解析Ruby、Python、Java和JavaScript错误
- 错误模式检测 -将类似错误分组以识别系统性问题
- 用户影响分析 -确定生产问题的爆破半径
- 大结果处理 -自动将150多条日志保存到带分页的文件中
- 请求上下文 -获取任何request_id的完整时间线
先决条件
- Node.js 18+ 或更高版本(本机需要
fetchAPI支持) - 具有API访问权限的Sumo Logic帐户
- Sumo逻辑访问ID和访问密钥
安装
- 克隆或导航到此目录:
cd sumologic-mcp-server
- 安装依赖项:
npm install
- 构建TypeScript代码:
npm run build
配置
环境变量
创建一个 .env 项目根目录中的文件,其中包含您的Sumo Logic凭据:
SUMO_ACCESS_ID=your_access_id_here
SUMO_ACCESS_KEY=your_access_key_here
SUMO_ENDPOINT=https://api.sumologic.com/api
可用工具
1. calculate_time_range
将人类可读的时间描述解析为ISO 8601时间戳。
参数:
description(必填):人类可读时间(例如,“过去19小时”、“过去7天”)
例子:
{
"description": "past 19 hours"
}
2. list_systems
列出所有可查询的可用系统。
参数: 无
3. search_logs
通过自动解析和摘要增强日志搜索。
参数:
system(必填):系统名称(例如“msuper-bsd”、“星云生成”)time_from(必填):ISO 8601格式的开始时间time_to(必填):ISO 8601格式的结束时间query(可选):搜索查询(CFID、request_id、关键字)severity(可选):按错误、警告、信息或调试筛选
退货:
summary:日志总数,按级别计数,has_errors标志logs:解析日志,包括时间戳、级别、消息、request_id等。- 返回150多条日志时自动保存到文件
4. parse_log_file
从保存的文件中筛选日志并对其进行分页。
参数:
file_path(必填):已保存日志文件的路径filter_level(可选):按日志级别筛选limit(可选):要返回的最大日志数(默认值:100)offset(可选):跳过N个日志进行分页
5. get_error_context
获取特定request_id的完整时间线。
参数:
request_id(必填):要跟踪的request_idsystem(必填):系统名称time_from(必填):开始时间time_to(必填):结束时间context_window_minutes(可选):扩展时间范围(默认值:5)
退货:
timeline:所有日志按时间顺序排序duration_ms:请求开始到结束时间summary:错误计数、入口点、最终状态error_details:完整上下文中的第一个错误
6. analyse_error_patterns
将错误分组以识别不同的问题。
参数:
logs(必需):来自search_logs的已解析日志数组group_by(可选):消息模式、状态代码、错误类型或路径min_occurrences(可选):要包括的最少出现次数
退货:
groups:带计数和示例的分组错误total_errors:错误总数unique_patterns:不同问题的数量most_common:最常见的错误模式
7. parse_error_stack_trace
解析Ruby、Python、Java或JavaScript的堆栈跟踪。
参数:
message(必需):包含堆栈跟踪的错误消息
退货:
error_type:TypeError、RuntimeError等。error_message:错误描述root_cause:文件、行、方法、is_application_codestack_frames:完整的呼叫链language:检测到的语言summary:人类可读摘要
8. analyse_user_impact
确定有多少用户受到错误的影响。
参数:
logs(必填):已解析日志数组identifier_field(可选):用户ID字段(默认值:“cfid”)system(可选):上下文的系统名称
退货:
total_unique_users:受影响用户数severity_distribution:高/中/低故障most_affected_users:错误计数前10位的用户impact_by_time:按小时计算的错误
9. get_next_batch
获取下一页结果进行分页。
参数:
job_id(必填):上次搜索的作业IDoffset(必填):要跳过的记录数limit(可选):要返回的记录(默认值:100)
10. admin-sumologic (遗产)
直接求和逻辑搜索向后兼容性。
参数:
query(必填):Sumo Logic搜索查询from(可选):ISO 8601中的开始时间to(可选):ISO 8601中的结束时间
快速入门:错误调查
步骤1:获取时间范围
calculate_time_range("past 19 hours")
→ Returns validated ISO 8601 timestamps
第二步:查找错误
search_logs(
system="msuper-bsd",
time_from="...",
time_to="...",
query="cea37eb6-8aee-44ba-9b0e-ac36b7202e3e",
severity="ERROR"
)
步骤3:分析结果
- 很少出错? 直接检查消息和状态代码
- 很多错误? 使用
analyse_error_patterns将他们分组 - 堆栈跟踪? 使用
parse_error_stack_trace根本原因 - 有request_id吗? 使用
get_error_context关于时间线 - 150+根原木? 使用
parse_log_file过滤/分页
项目结构
sumologic-mcp-server/
├── src/
│ ├── index.ts # Main MCP server with tool handlers
│ ├── sumologic-client.ts # Sumo Logic API client
│ ├── time-utils.ts # Time parsing utilities
│ ├── systems-config.ts # System name configuration
│ ├── log-parser.ts # Log parsing and sanitization
│ ├── stack-trace-parser.ts # Multi-language stack trace parser
│ ├── analysis-utils.ts # Pattern and impact analysis
│ └── file-storage.ts # Large result file management
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md
故障排除
“未知系统”
使用 list_systems 查看可用系统。在中添加新系统 systems-config.ts.
“时间描述无效”
支持的格式:“过去X小时”、“过去X天”、“最近X分钟”和“过去X周”
“未找到堆栈跟踪”
解析器支持Ruby、Python、Java和JavaScript。检查消息是否包含可识别的堆栈跟踪格式。
“搜索超时”
尝试缩小时间范围或添加更具体的过滤器。
许可证
麻省理工学院
贡献
欢迎投稿!请随时提交问题或拉取请求。
