使用说明
🔍 Graylog MCP服务器
一 主控程序 服务器,让人工智能助手直接访问您的Graylog日志——通过自然语言搜索、聚合、分析和聚类日志数据。
它的作用
此服务器将您的Graylog实例作为MCP工具公开,因此Claude、Cursor等AI助手可以代表您查询日志。您无需切换到Graylog UI的上下文,只需描述您要查找的内容,助手即可处理其余内容。
25工具 涵盖:
- 日志搜索 --具有分页、精确/模糊匹配和可配置字段选择的全文和字段过滤查询
- 上下文分析 --获取特定日志条目的周围消息
- 聚合 --直方图、字段统计和二维字段随时间分解
- 日志聚类 --使用Drain3将类似的消息分组到结构模板中,每个连接都有持久的模板库
- 事件 --搜索Graylog事件,列出事件定义和通知
- 保存的搜索 --保存、列出和重用查询配置
- 多连接 --在一个会话中在Graylog实例之间切换(例如,nonpd与prod)
- 流和油田发现 --列出流,发现不同的字段值
先决条件
- Node.js 18+
- Graylog 6.x(在6.2上测试)
- 非常感谢。如何创建一个)
安装
通过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
添加聚类算法
- 创建
src/clustering/strategies/<name>.js实施hydrate,serialize,以及cluster(参见drain3.js) - 在中注册
src/clustering/index.js - 通过
algorithm: "<name>"到cluster_log_messages