Graylog日志分析服务

通过MCP协议为AI助手提供Graylog日志的自然语言搜索、聚合、分析和聚类功能。

  • by jagadeesh52423
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 jagadeesh52423/graylog-mcp

使用说明

🔍 Graylog MCP服务器

一 主控程序 服务器,让人工智能助手直接访问您的Graylog日志——通过自然语言搜索、聚合、分析和聚类日志数据。

它的作用

此服务器将您的Graylog实例作为MCP工具公开,因此Claude、Cursor等AI助手可以代表您查询日志。您无需切换到Graylog UI的上下文,只需描述您要查找的内容,助手即可处理其余内容。

25工具 涵盖:

  • 日志搜索 --具有分页、精确/模糊匹配和可配置字段选择的全文和字段过滤查询
  • 上下文分析 --获取特定日志条目的周围消息
  • 聚合 --直方图、字段统计和二维字段随时间分解
  • 日志聚类 --使用Drain3将类似的消息分组到结构模板中,每个连接都有持久的模板库
  • 事件 --搜索Graylog事件,列出事件定义和通知
  • 保存的搜索 --保存、列出和重用查询配置
  • 多连接 --在一个会话中在Graylog实例之间切换(例如,nonpd与prod)
  • 流和油田发现 --列出流,发现不同的字段值

先决条件

安装

通过npx(推荐)

无需安装。配置您的MCP客户端以运行:

{
  "mcpServers": {
    "graylog": {
      "command": "npx",
      "args": ["graylog-mcp-server"]
    }
  }
}

来源

git clone https://github.com/jagadeesh52423/graylog-mcp.git
cd graylog-mcp
npm install

然后将您的MCP客户端指向本地入口点:

{
  "mcpServers": {
    "graylog": {
      "command": "node",
      "args": ["/absolute/path/to/graylog-mcp/src/index.js"]
    }
  }
}

配置

创建 ~/.graylog-mcp/config.json:

{
  "connections": {
    "nonprod": {
      "baseUrl": "http://graylog-nonprod:9000",
      "apiToken": "your_api_token"
    },
    "prod": {
      "baseUrl": "http://graylog-prod:9000",
      "apiToken": "your_prod_api_token",
      "defaultFields": ["timestamp", "message", "level", "source", "PODNAME"]
    }
  },
  "defaultFields": ["timestamp", "gl2_message_id", "source", "env", "level", "message", "logger_name"]
}
选项 范围 描述
connections Root 命名Graylog实例,每个实例都有 baseUrl 和 apiToken
defaultFields 根 搜索结果中返回的全局默认字段
defaultFields 连接 每个连接覆盖(优先于全局)

如果不 defaultFields 已设置,所有字段(*)被退回。

用覆盖配置路径 GRAYLOG_CONFIG_PATH 环境变量:

{
  "mcpServers": {
    "graylog": {
      "command": "npx",
      "args": ["graylog-mcp-server"],
      "env": {
        "GRAYLOG_CONFIG_PATH": "/path/to/custom/config.json"
      }
    }
  }
}

MCP客户端配置位置

客户端 配置文件
克劳德代码 ~/.claude/mcp.json
光标 ~/.cursor/mcp.json
克劳德桌面(macOS) ~/Library/Application Support/Claude/claude_desktop_config.json

用法

连接后,自然地与您的AI助手交谈。一些例子:

Connect to nonprod and show me error logs from the last hour
What are the top error sources in production over the past 6 hours?
Show me a histogram of level 3 errors over the past day, broken down by hour
Cluster the last 1000 error messages and show me the top patterns
Show me the messages surrounding log ID 01KH5PDR893AZJQBYJJ87AQTW5

时间范围

相对: 30m, 1h, 2d, 1w, 3M, 1y

绝对:提供 from/to 作为ISO时间戳(2024-01-15T09:00:00Z)或Unix毫秒。

如果未指定,默认值为15分钟。

可用工具

连接管理

工具 说明
list_connections 列出已配置的Graylog连接
use_connection 切换到命名连接

日志搜索

工具 说明
fetch_graylog_messages 使用查询、过滤器、时间范围、分页搜索日志
get_surrounding_messages 通过ID或时间戳获取特定日志条目的消息
list_streams 列出可用的Graylog流
list_field_values 发现字段的不同值(按计数前N)

聚合

工具 说明
get_log_histogram 时间戳消息计数
get_field_aggregation 按字段和指标(计数、总和、平均值、最小值、最大值)分组
get_field_time_aggregation 二维:时间间隔内的字段值
debug_histogram_query 空直方图结果的调试助手

日志聚类

工具 说明
cluster_log_messages 将类似的消息分组到结构模板中(Drain3)
list_log_templates 列出活动连接的学习模板
delete_log_template 删除模板
rename_log_template 给模板一个人类可读的标签
export_log_templates 将模板库导出为JSON
import_log_templates 批量导入模板(合并或替换)

模板保存在 ~/.graylog-mcp/templates/<connection>.json 并且随着更多消息的聚集而随着时间的推移而改进。

事件

工具 说明
search_events 使用筛选器搜索Graylog事件
get_event_definitions 列出事件定义
get_event_notifications 列出事件通知

保存的搜索

工具 说明
save_search 保存查询配置以供重用
list_saved_searches 列出所有已保存的搜索
get_saved_search 按名称检索已保存的搜索
delete_saved_search 删除已保存的搜索

项目结构

src/
├── index.js                          Server bootstrap and request routing
├── config.js                         Connection config and field defaults
├── query.js                          Query building and Graylog API client
├── tools.js                          Tool schema definitions (25 tools)
├── timerange.js                      Flexible time range parsing
├── aggregations.js                   Histogram, field stats, time-series
├── events.js                         Graylog events API
├── saved-searches.js                 Persistent saved search store
├── clustering/
│   ├── index.js                      Strategy registry
│   ├── preprocess.js                 Message normalization and tokenization
│   ├── formatter.js                  Cluster response formatting
│   ├── template-store.js             Per-connection template persistence
│   └── strategies/
│       └── drain3.js                 Drain3 log clustering algorithm
└── tools/
    ├── cluster-errors.js             cluster_log_messages handler
    └── template-mgmt.js              Template CRUD handlers

添加聚类算法

  1. 创建 src/clustering/strategies/<name>.js 实施 hydrate, serialize,以及 cluster (参见 drain3.js)
  2. 在中注册 src/clustering/index.js
  3. 通过 algorithm: "<name>" 到 cluster_log_messages

许可证

麻省理工学院