日志智能分析服务器

基于模型上下文协议(MCP)的AI日志分析服务器,支持多源日志采集、异常检测、错误聚类、回归分析和可视化展示。

  • by eamonboyle
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 eamonboyle/log-intelligence-mcp

使用说明

日志智能MCP服务器

基于AI的日志分析服务器 模型上下文协议(MCP)它从多个来源获取结构化日志,检测异常,对类似错误进行聚类,总结重复出现的故障,并识别部署后的回归。

特性

  • 多源摄入 --Serilog JSON/CREF、Elasticsearch转储、SQLite数据库、纯文本日志文件
  • 指纹识别错误 --自动对类似的错误消息进行标准化和聚类
  • 异常检测 --基于时间跳跃错误率的z-score分析的统计尖峰检测
  • 回归检测 --比较部署日期之前/之后的错误模式
  • 全文搜索 --搜索所有摄入的日志条目
  • 时间线可视化 --使用ASCII条形图随时间变化的错误频率

安装

# From npm (recommended)
npm install -g log-intelligence-mcp

# Or run without installing
npx log-intelligence-mcp

快速入门(来源)

# Install dependencies
npm install

# Build
npm run build

# Run (stdio transport for MCP clients)
npm start

MCP客户端配置

光标(推荐:npx)

添加到您的 .cursor/mcp.json:

{
  "mcpServers": {
    "log-intelligence": {
      "command": "npx",
      "args": ["log-intelligence-mcp"]
    }
  }
}

游标(全局安装)

如果您使用全局安装 npm install -g log-intelligence-mcp:

{
  "mcpServers": {
    "log-intelligence": {
      "command": "log-intelligence-mcp"
    }
  }
}

光标(本地开发)

从源代码开发时:

{
  "mcpServers": {
    "log-intelligence": {
      "command": "node",
      "args": ["path/to/log-intelligence-mcp/dist/index.js"]
    }
  }
}

克劳德桌面版

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "log-intelligence": {
      "command": "npx",
      "args": ["log-intelligence-mcp"]
    }
  }
}

工具

工具 说明
ingest_logs 从源加载日志(serilog、elastic、sql、flatfile)
summarise_errors 对错误级别条目进行聚类和总结
detect_new_error_pattern 在没有基线的比较窗口中查找错误
regression_after_date 比较部署前后的错误模式
search_logs 对所有摄入的条目进行全文搜索
get_error_timeline 随时间变化的错误频率,可选异常检测

资源

URI 描述
logs://sources 列出所有摄入的日志源及其条目计数
logs://summary 总体统计数据:总条目、错误计数、独特模式

提示

提示 描述
analyse-logs 引导式工作流程:摄取、总结、检测异常
investigate-error 深入了解特定的错误模式

日志来源

Serilog JSON(clef)

倒像 精简日志事件格式 files——每行一个JSON对象 @t, @l, @mt, @m, @x 领域。还支持标准的Serilog JSON输出。

# Example: ingest a Serilog file
ingest_logs(source="serilog", path="./logs/app.clef")

Elasticsearch转储

接受JSON数组 _source 文件,完整的ES响应格式(hits.hits[]._source)或NDJSON。还可以查询实时Elasticsearch端点。

# File dump
ingest_logs(source="elastic", path="./dumps/errors.json")

# Live query
ingest_logs(source="elastic", endpoint="http://localhost:9200", index="app-logs", filter="level:error")

SQLite调试表

从SQLite数据库文件读取。按惯例自动映射列(Timestamp, Level, Message, Exception).

ingest_logs(source="sql", path="./debug.db", table="Logs", filter="Level = 'Error'")

平面文件

使用ISO时间戳、日志级别和消息解析常见格式。处理多行堆栈跟踪。支持自定义正则表达式模式。

ingest_logs(source="flatfile", path="./logs/app.log")

配置

可选择放置a log-intelligence.config.json 在您的工作目录中预配置源代码:

{
  "sources": [
    { "name": "app-logs", "type": "serilog", "path": "./logs/app.clef" },
    { "name": "db-errors", "type": "sql", "path": "./debug.db", "table": "Logs", "filter": "Level = 'Error'" }
  ],
  "defaults": {
    "bucketMinutes": 60,
    "anomalyThreshold": 2.0,
    "maxSamples": 3
  }
}

服务器启动时,会自动接收预配置的源。

运作原理

指纹错误

消息通过剥离变量令牌(UUID、数字、时间戳、路径、URL、IP、引号字符串)进行标准化,然后进行SHA-256散列以生成16个字符的指纹。共享指纹的条目被分组到错误簇中。

异常检测

错误条目被分组到时间窗口中。计算基线平均值和标准偏差,并计算其中的桶 count > mean + threshold * stddev 被标记为异常。每个桶都有一个z分数用于排名。

回归检测

给定一个部署日期,检测器将日志拆分为前后窗口,在每个窗口中独立地对错误进行聚类,然后执行一组diff来识别:

  • 新错误 --仅在部署后出现
  • 错误增加 --以前存在,但增长率>2倍
  • 已解决的错误 --部署后消失

样品数据

这 samples/ 目录包含用于测试的示例日志文件:

  • app.clef --Serilog CLEF格式,模拟部署+Redis中断
  • webserver.log --带Java堆栈跟踪的平面文件格式
  • elastic-dump.json --Elasticsearch JSON转储
  • log-intelligence.config.json --配置为自动摄取所有样本

要使用示例数据进行测试,请将配置复制到您的工作目录中:

cp samples/log-intelligence.config.json .
npm start

发展

# Run in dev mode with hot reload
npm run dev

# Type-check without emitting
npx tsc --noEmit

许可证

麻省理工学院