日志分析与错误调查工具

Sumo Logic Investigation MCP Server 是一个集成 Sumo Logic API 的服务器,提供全面的日志搜索和错误调查工具集,支持日志分析、错误模式检测、堆栈跟踪解析和用户影响分析等功能。

  • by marknguyen-myob
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 marknguyen-myob/sumologic-mcp-server

使用说明

Sumo逻辑调查MCP服务器

模型上下文协议(MCP)服务器,与Sumo Logic的API集成以执行日志搜索和全面的错误调查。该服务器提供了一个完整的调查工具包,其中包含10个工具,用于日志分析、错误模式检测、堆栈跟踪解析和用户影响分析。

特性

  • 搜索Sumo逻辑日志 使用带有系统预设的自定义查询
  • 时间范围计算 -解析人类可读的时间,如“过去19小时”
  • 自动日志解析 -从原始日志中提取结构化字段
  • 堆栈跟踪分析 -解析Ruby、Python、Java和JavaScript错误
  • 错误模式检测 -将类似错误分组以识别系统性问题
  • 用户影响分析 -确定生产问题的爆破半径
  • 大结果处理 -自动将150多条日志保存到带分页的文件中
  • 请求上下文 -获取任何request_id的完整时间线

先决条件

  • Node.js 18+ 或更高版本(本机需要 fetch API支持)
  • 具有API访问权限的Sumo Logic帐户
  • Sumo逻辑访问ID和访问密钥

安装

  1. 克隆或导航到此目录:
cd sumologic-mcp-server
  1. 安装依赖项:
npm install
  1. 构建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_id
  • system (必填):系统名称
  • 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_code
  • stack_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 (必填):上次搜索的作业ID
  • offset (必填):要跳过的记录数
  • 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。检查消息是否包含可识别的堆栈跟踪格式。

“搜索超时”

尝试缩小时间范围或添加更具体的过滤器。

许可证

麻省理工学院

贡献

欢迎投稿!请随时提交问题或拉取请求。