mcpField
S
SigNoz MCP Server

SigNoz MCP Server

本地服务
github.com/SigNoz数据与分析129今天更新

关于 SigNoz MCP Server

SigNoz MCP Server 将 AI 助手和大模型连接到 SigNoz 可观测性数据。它提供指标、追踪、日志、告警、仪表板和服务查询,并支持云端托管连接或自托管部署。

主要功能

  1. 01查询指标、追踪和日志
  2. 02访问告警与仪表板
  3. 03检查服务
  4. 04连接托管云端服务
  5. 05自托管 stdio 或 HTTP 模式

适用场景

  1. 01向 AI 助手查询服务指标
  2. 02调查追踪记录和日志
  3. 03通过 MCP 客户端查看告警与仪表板

MCP 相关

该服务通过工具向 MCP 客户端提供 SigNoz 可观测性数据,支持 stdio 或 HTTP。它可连接托管的 SigNoz Cloud 或自托管实例。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"signoz-signoz": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/signoz/signoz-mcp-server:v0.16.0"
]
}
}
}
启动命令docker run -i --rm docker.io/signoz/signoz-mcp-server:v0.16.0

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocidocker.io/signoz/signoz-mcp-server:v0.16.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

SigNoz MCP 服务

Go Version License MCP Protocol

一个 Model Context Protocol(MCP)服务,可通过 AI 助手和大模型无缝访问 SigNoz 可观测性数据。使用自然语言查询指标、追踪、日志、告警、仪表板和服务。

📖 完整文档

目录

连接到 SigNoz Cloud

将你的 AI 工具连接到 SigNoz Cloud 托管的 MCP 服务。无需安装;只需添加托管 MCP URL 并完成身份验证。

https://mcp.<region>.signoz.cloud/mcp

请确保选择与 SigNoz Cloud 账户相匹配的区域。使用错误的区域会导致身份验证失败。

可在 SigNoz 的 Settings → Ingestion 中查看区域,或参阅 SigNoz Cloud 区域参考。

一键安装链接

GitHub 在 README 渲染时无法可靠地将 cursor:// 和 vscode: 这类自定义协议链接显示为可点击链接。

请使用文档页面中的一键安装按钮:

你也可以使用本 README 中下方的手动配置示例。

Cursor
手动配置

将此配置添加到 .cursor/mcp.json:

{
  "mcpServers": {
    "signoz": {
      "url": "https://mcp.<region>.signoz.cloud/mcp"
    }
  }
}

需要帮助?请参阅 Cursor MCP 文档。

VS Code / GitHub Copilot
手动配置

将此配置添加到 .vscode/mcp.json:

{
  "servers": {
    "signoz": {
      "type": "http",
      "url": "https://mcp.<region>.signoz.cloud/mcp"
    }
  }
}

需要帮助?请参阅 VS Code MCP 文档。

Claude Desktop

在 Claude Desktop 中将 SigNoz Cloud 添加为自定义连接器:

  1. 打开 Claude Desktop。
  2. 前往 Settings → Developer(或 Features,具体取决于你的版本)。
  3. 点击 Add Custom Connector 或 Add Remote MCP Server。
  4. 输入你的 SigNoz MCP URL:https://mcp.<region>.signoz.cloud/mcp

出现提示时,完成身份验证流程。

Claude Code

运行此命令以添加托管的 SigNoz MCP 服务:

claude mcp add --scope user --transport http signoz https://mcp.<region>.signoz.cloud/mcp

配置 MCP 服务后,在终端中进行身份验证:

claude /mcp

选择 signoz 服务并完成身份验证流程。

OpenAI Codex

运行此命令以添加托管的 SigNoz MCP 服务:

codex mcp add signoz --url https://mcp.<region>.signoz.cloud/mcp

也可以将此配置添加到 config.toml:

[mcp_servers.signoz]
url = "https://mcp.<region>.signoz.cloud/mcp"

添加服务后,进行身份验证:

codex mcp login signoz

然后在 Codex 中运行 /mcp 以验证连接。

Grok Build

运行以下命令,添加托管的 SigNoz MCP 服务:

grok mcp add -t http signoz https://mcp.<region>.signoz.cloud/mcp

或者将此配置添加到 ~/.grok/config.toml:

[mcp_servers.signoz]
url = "https://mcp.<region>.signoz.cloud/mcp"
enabled = true

添加服务并不会完成身份验证。启动 Grok Build,运行 /mcps,选择 signoz 服务,然后在浏览器中完成 OAuth 流程:

grok
/mcps

配置文件中不会存储 API 密钥;OAuth 流程完成后,凭据会单独保存。

在 add 命令中使用 -s project,即可改为写入 ./.grok/config.toml,让该目录下的所有协作者共用此服务。

使用以下命令验证连接:

grok mcp list
grok mcp doctor
SigNoz Cloud 身份验证

将托管的 MCP URL 添加到客户端后,客户端会发起身份验证流程。系统会提示你输入:

  1. 你的 SigNoz 实例 URL(例如,your-instance.signoz.cloud)。可以使用不带协议的 URL;路径、查询参数和片段会被忽略。
  2. 你的 API 密钥

在 SigNoz 的 设置 → API 密钥 中创建 API 密钥。只有 管理员 用户可以创建 API 密钥。

自托管安装

下载二进制文件(推荐)

从 GitHub Releases 下载最新的二进制文件:

# macOS (Apple Silicon)
curl -L https://github.com/SigNoz/signoz-mcp-server/releases/latest/download/signoz-mcp-server_darwin_arm64.tar.gz | tar xz

# macOS (Intel)
curl -L https://github.com/SigNoz/signoz-mcp-server/releases/latest/download/signoz-mcp-server_darwin_amd64.tar.gz | tar xz

# Linux (amd64)
curl -L https://github.com/SigNoz/signoz-mcp-server/releases/latest/download/signoz-mcp-server_linux_amd64.tar.gz | tar xz

这会在当前目录中解压出 signoz-mcp-server 二进制文件。将它移动到 PATH 中的某个位置,或记下它的绝对路径,以便填写下方的配置。

Go 安装
go install github.com/SigNoz/signoz-mcp-server/cmd/server@latest

二进制文件会以 server 的名称安装到 $GOPATH/bin/(默认为 $HOME/go/bin/server)。你可能需要重命名它:

mv "$(go env GOPATH)/bin/server" "$(go env GOPATH)/bin/signoz-mcp-server"
Docker

可从 Docker Hub 获取 Docker 镜像:

docker pull signoz/signoz-mcp-server:latest

以 HTTP 模式运行:

docker run -p 8000:8000 \
  -e TRANSPORT_MODE=http \
  -e MCP_SERVER_PORT=8000 \
  -e SIGNOZ_URL=https://your-signoz-instance.com \
  -e SIGNOZ_API_KEY=your-api-key \
  signoz/signoz-mcp-server:latest

对于固定版本的部署,请使用特定版本标签(例如 v0.1.0),而不是 latest。

从源代码构建
git clone https://github.com/SigNoz/signoz-mcp-server.git
cd signoz-mcp-server
make build

二进制文件位于 ./bin/signoz-mcp-server。

连接到自托管的 SigNoz

前提条件
  • 一个运行最新版本的 SigNoz 实例。每个服务版本都针对最新的 SigNoz 版本,不会针对旧版本进行测试;如有不兼容变更,请参阅 CHANGELOG.md。
  • 一个 SigNoz API 密钥(在 SigNoz UI 中的“设置 → API 密钥”下)
  • signoz-mcp-server 二进制文件(请参阅自托管安装)
Stdio 模式(Claude Desktop / Cursor / 任意 MCP 客户端)

将以下内容添加到 MCP 客户端配置(claude_desktop_config.json、.cursor/mcp.json 等)中。将 command 路径替换为 signoz-mcp-server 二进制文件的绝对路径:

{
    "mcpServers": {
        "signoz": {
            "command": "/absolute/path/to/signoz-mcp-server",
            "args": [],
            "env": {
                "SIGNOZ_URL": "https://your-signoz-instance.com",
                "SIGNOZ_API_KEY": "your-api-key-here",
                "LOG_LEVEL": "info"
            }
        }
    }
}
HTTP 模式

HTTP 模式默认监听所有接口。当服务只应接受环回连接时,请设置 MCP_SERVER_HOST=127.0.0.1。

内存占用

服务器会将 SigNoz 文档搜索索引保留在内存中。对标题和标题层级启用词干提取,并使用一个标准分析的正文栏位后,在八次本地 Go 1.26 整包测试运行中,内嵌的 746 页索引占用了 28 至 36 MiB 的常驻堆内存。使用 64 页批次时,构建峰值比构建前的堆基线高出 97 至 134 MiB。这些是索引测量值,并非整个进程的 RSS 或容器内存保证;请求处理和刷新工作也会增加内存占用。

时机索引内存行为
从内嵌语料构建启动索引(746 页)在测量运行中,最多比构建前的堆基线高出 134 MiB
定时全量重建构建新索引时旧索引仍在提供服务;尚未使用此配置重新测量合并峰值
定时刷新时有少量页面发生变化将变更页面作为一个原子批次应用到实时索引;峰值取决于变更内容,尚未使用此配置重新测量
定时刷新时未发现页面变化不执行索引操作;使用 If-None-Match 重新验证页面,未变化页面的请求会返回 304

定时刷新(默认每 6h 一次)会先将实时站点地图与已提供的站点地图进行比较;如果没有变化,则到此为止。否则,刷新会使用 If-None-Match 重新验证每个页面,并且只有至少一个页面的内容发生变化时才会更新索引。变更集涵盖的页面不超过总页数的四分之一时,会原地应用到实时索引;如果变更集更大、同一索引上的原地更新达到第 25 次,或强制刷新(默认每 24h 一次)发现内容变化,则会从头重建索引,同时压缩原地更新遗留的分段。全量重建使用 64 页批次。原地更新使用一个原子批次,大小受页面总数四分之一的阈值限制,而非全量构建的批次大小。

容器化 HTTP 部署建议:

  • 将内存限制设为至少 512Mi,并在刷新和并发请求期间监控内存。测得的索引构建峰值最高比基线高出 134 MiB,常驻索引占用 28 至 36 MiB;重建时还会保留正在提供服务的索引。设置 Go 的 GOMEMLIMIT 是可选的:它可以更早回收垃圾,但无法缩小索引批次中的存活数据。
  • 如果希望直接提供随版本发布的文档快照,而不执行任何刷新,请将 SIGNOZ_DOCS_REFRESH_INTERVAL=0 和 SIGNOZ_DOCS_FULL_REFRESH_INTERVAL=0 都设为 0。新的文档页面会在下次服务器升级时更新。只设置前者仍会保留每日强制刷新。
  • 每次刷新都会记录 docs refresh starting,并以完成或失败日志结束,例如 docs refresh no-op; sitemap unchanged、docs refresh found no page changes; index kept、docs refresh applied delta、docs refresh rebuilt index,或 docs refresh failed / docs full refresh failed 警告。刷新通常会在几分钟内完成。如果容器最后一条文档日志是 docs refresh starting、docs refresh fetching pages 或 docs refresh rebuilding index,随后又重启,则很可能是在刷新过程中退出。
使用 OAuth(多租户 / 云端)

启动服务器:

TRANSPORT_MODE=http \
MCP_SERVER_PORT=8000 \
OAUTH_ENABLED=true \
OAUTH_TOKEN_SECRET=$(openssl rand -base64 32) \
OAUTH_ISSUER_URL=https://your-public-mcp-url.com \
./signoz-mcp-server

客户端配置只需提供 URL,无需密钥:

{
    "mcpServers": {
        "signoz": {
            "url": "https://your-public-mcp-url.com/mcp"
        }
    }
}

客户端会自动发现 OAuth 端点,打开浏览器以获取凭据,并处理令牌交换。

不使用 OAuth(简单配置)

API 密钥和 SigNoz URL 只需在一个位置提供:服务器端或客户端。

选项 A — 在服务器端配置凭据(客户端配置更简单):

SIGNOZ_URL=https://your-signoz-instance.com \
SIGNOZ_API_KEY=your-api-key \
TRANSPORT_MODE=http \
MCP_SERVER_PORT=8000 \
./signoz-mcp-server
{
    "mcpServers": {
        "signoz": {
            "url": "http://localhost:8000/mcp"
        }
    }
}

选项 B — 在客户端配置 API 密钥(服务器保存 URL,客户端发送密钥):

SIGNOZ_URL=https://your-signoz-instance.com \
TRANSPORT_MODE=http \
MCP_SERVER_PORT=8000 \
./signoz-mcp-server
{
    "mcpServers": {
        "signoz": {
            "url": "http://localhost:8000/mcp",
            "headers": {
                "SIGNOZ-API-KEY": "your-api-key-here"
            }
        }
    }
}

MCP 协议兼容性

SigNoz 使用官方 MCP Go SDK v1.8.0,并支持通过 HTTP 和 stdio 使用当前的两种生命周期模型:

协议时期生命周期
2025-11-25旧版客户端先调用 initialize,然后发送 notifications/initialized,再发送普通请求。
2026-07-28客户端可以调用 server/discover,然后直接发送请求,并在每个请求的 _meta 中携带协议和客户端能力;无需 initialize 握手。

HTTP /mcp 端点无状态且无会话。MCP 消息使用 JSON POST 请求,成功响应使用 application/json;服务端不会发送或要求 Mcp-Session-Id。GET /mcp 和 DELETE /mcp 会返回 405 Method Not Allowed,因此部署无需粘性路由,也不需要旧版 GET 监听器或心跳检测。现有客户端配置无需更改。

stdio 输入的帧大小上限为 16 MiB。较大的请求应拆分为多个较小的调用。MCP_MAX_REQUEST_BYTES 仅控制 HTTP 请求体。

服务端有意不声明已弃用的日志记录能力。发现结果的排序不属于兼容性保证。对于未知工具、资源和提示词,服务端采用官方 SDK 的标准无效参数处理方式,而不是旧版实现特有的措辞或错误代码。

HTTP 探测端点

HTTP 模式提供无需身份验证的探测端点。新的 Kubernetes 部署应使用 /livez 作为 livenessProbe,使用 /readyz 作为 readinessProbe。

端点用途
/livez浅层存活探测。当服务端进程能够响应 HTTP 请求时返回 200 OK。不会检查依赖项。
/readyz就绪探测。仅当 Pod 已准备好接收流量时返回 200 OK;目前要求文档索引已就绪。否则返回 503。
/healthz为保持向后兼容而保留的旧版/通用健康检查。它遵循与 /readyz 相同的严格状态;浅层存活探测请使用 /livez。

可以用它做什么?

"Show me all available metrics"
"What's the p99 latency for http_request_duration_seconds?"
"List all active alerts"
"Show me error logs for the paymentservice from the last hour"
"How many errors per service in the last hour?"
"Search traces for the checkout service from the last hour"
"Get details for trace ID abc123"
"Create a dashboard with CPU and memory widgets"
"How do I send Docker logs to SigNoz?"

可用工具

工具元数据: 每个工具都接受 searchContext。请原封不动地复制用户的完整原始请求,包括预检或确认上下文;该内容用于 MCP 可观测性,不会转发给 SigNoz API。

输入验证: 调用不会因架构不匹配而被拒绝。参数会根据每个工具声明的架构进行验证;即使调用不匹配,仍会尽力执行,成功结果中会附加确定性的 Input validation notice:,并在能够安全地从声明的架构推导时指出受影响的顶层参数。仅根节点的复杂不匹配会使用通用回退提示。不匹配也会计入 mcp.tool.validation.mismatches 指标。

上游错误: 上游 SigNoz 的 401 和 403 工具失败会携带稳定的结构化 code(UNAUTHORIZED 或 PERMISSION_DENIED)以及数值型 status。可识别的 SigNoz 错误信封还可能包含有界的 upstreamURL、upstreamSuggestions、upstreamDetails([{message, suggestions}])和 upstreamRetry(以纳秒表示的 {delay});相同的恢复指导也会出现在 Agent 可读文本中。对于无法识别的响应正文,会使用基于本地状态派生的带代码回退信息,而不是原始透传;授权失败仍会指出失败的工具和直接的恢复操作。这项仅针对错误的附加内容不会更改工具名称、架构或说明、成功载荷、资源或模板,也不会更改提示词。 | 工具 | 描述 | |------|-------------| | signoz_get_org_overview | 获取 SigNoz 部署的当前状态和整体情况,提供类型化投影,以及包含所有已报告统计字段的 sourceStats | | signoz_list_metrics | 发现活跃指标名称和目录元数据 | | signoz_query_metrics | 查询已知指标的值、趋势、细分数据或公式 | | signoz_get_top_metrics | 返回按摄取样本量排名的前 100 个指标,并提供预计算百分比,用于成本和用量分析 | | signoz_check_metric_usage | 给定指标名称列表(每次调用最多 50 个),返回各指标被哪些仪表板和告警引用 | | signoz_check_metric_cardinality | 返回单个指标的标签/属性键、基数计数和样本值,并按基数从高到低排序 | | signoz_get_field_keys | 发现指标、追踪或日志的可用字段键 | | signoz_get_field_values | 获取某个字段键的可能值 | | signoz_list_alerts | 列出正在触发/已静默/已抑制的 Alertmanager 告警实例(不是规则定义) | | signoz_list_alert_rules | 列出已配置的告警规则摘要,包括未触发/正常和已禁用的规则 | | signoz_get_alert | 按 id 获取一条告警规则的完整定义 | | signoz_get_alert_history | 获取一条规则的触发历史或状态转换历史 | | signoz_create_alert | 创建 v2 直接路由/策略路由告警,或直接路由的 v1 异常告警 | | signoz_update_alert | 按 id 完整替换现有告警规则 | | signoz_delete_alert | 按 UUIDv7 id 永久删除已确认的告警规则 | | signoz_list_dashboards | 列出租户仪表板摘要并发现 UUID | | signoz_get_dashboard | 获取一个仪表板的完整布局、变量、面板和查询 | | signoz_create_dashboard | 创建自定义多面板仪表板 | | signoz_update_dashboard | 完整替换已获取的仪表板,同时保留未请求的字段 | | signoz_patch_dashboard | 应用部分 RFC 6902 JSON Patch,无需重新发送整个仪表板 | | signoz_delete_dashboard | 按 id 永久删除已确认的仪表板 | | signoz_import_dashboard | 从已知的精选模板路径创建仪表板 | | signoz_list_dashboard_templates | 搜索精选模板并发现导入路径 | | signoz_list_services | 列出指定时间范围内有追踪活动的 APM 服务 | | signoz_get_service_top_operations | 获取某个被追踪服务的操作排名 | | signoz_list_views | 列出已保存的 Explorer 视图(适用于追踪/日志/指标/Cost Meter)并发现 UUID | | signoz_get_view | 按 id 获取一个已保存 Explorer 视图的完整定义 | | signoz_search_docs | 未选定确切页面时,查找排名靠前的官方文档匹配项 | | signoz_fetch_doc | 以 Markdown 格式获取一个已知的官方文档页面或标题 | | signoz_create_view | 保存一份可重复使用的 Explorer 查询规范 | | signoz_update_view | 完整替换已获取的已保存视图,同时保留未请求的字段 | | signoz_delete_view | 按 id 永久删除已确认的已保存视图 | | signoz_aggregate_logs | 汇总日志统计数据,并按分组或前 N 项进行细分 | | signoz_search_logs | 返回符合筛选条件的单条日志记录 | | signoz_aggregate_traces | 汇总跨度统计数据,并按分组或前 N 项进行细分 | | signoz_search_traces | 返回单条跨度行或发现追踪 ID | | signoz_get_trace_details | 获取一个已知追踪的所有跨度和层级结构 | | signoz_execute_builder_query | 执行专用工具无法表达的 Query Builder v5 请求 | | signoz_list_notification_channels | 列出通道 ID、名称和显示名称,不包含提供方设置 | | signoz_get_notification_channel | 按 ID 获取某个通道的所有提供方专属设置 | | signoz_create_notification_channel | 创建通知通道 | | signoz_update_notification_channel | 完整替换已获取通道的配置 | | signoz_delete_notification_channel | 按 ID 永久删除已确认的通道 | 有关详细用法和示例,请参阅完整文档。

**资源深层链接:**资源读取工具(signoz_list_dashboards、signoz_get_dashboard、signoz_list_alerts、signoz_list_alert_rules、signoz_get_alert、signoz_list_services、signoz_search_traces、signoz_get_trace_details)和仪表板写入工具(signoz_create_dashboard、signoz_update_dashboard、signoz_patch_dashboard、signoz_import_dashboard)会在请求携带 SigNoz 实例 URL 时包含 webUrl 字段,其中提供指向 SigNoz Web UI 中相应资源的绝对深层链接(对于 signoz_search_traces,每个结果行都会提供)。MCP 服务会从每个 SigNoz 后端的 global.external_url 中获取浏览器基址。API 请求仍使用请求中的后端 URL。请参阅自托管 SigNoz 的浏览器链接。

Agent 路由指南

如果尚未选定确切的文档页面,请使用 signoz_search_docs 按主题查找,然后使用 signoz_fetch_doc 获取选定的页面或标题。对于租户遥测数据、告警状态、仪表板、已保存视图和通知渠道,请使用实时数据工具。

文档工具与其他 MCP 工具使用相同的身份验证路径。

可用资源
资源在以下情况下读取
signoz://alert/instructions告警架构、字段、阈值、评估和通知工作流
signoz://alert/examplesSigNoz OpenAPI 规范中的告警负载(阈值、公式、PromQL、异常、分层路由、通知设置),以及 Cost Meter 预算示例
signoz://dashboard/instructions仪表板字段、变量、链接和布局
signoz://dashboard/widgets-instructions面板选项和特定查询指南
signoz://dashboard/widgets-examples面板示例和验证模式
signoz://dashboard/list-filter-guidesignoz_list_dashboards 过滤器 DSL:语法、各键运算符和示例
signoz://dashboard/patch-instructionssignoz_patch_dashboard JSON Patch 配方和精确路径(添加/编辑/移动/移除面板、查询、变量)
signoz://dashboard/examplesSigNoz OpenAPI 规范中的仪表板负载:创建请求体、完整替换内容和 JSON Patch 数组
signoz://dashboard/query-builder-example仪表板 Query Builder 聚合、过滤器、图例和函数
signoz://promql/instructionsPromQL 小组件或告警,尤其是带点号的 OTel 指标名称
signoz://dashboard/clickhouse-schema-for-logs用于仪表板 SQL 的捆绑日志架构快照
signoz://dashboard/clickhouse-logs-example原始 ClickHouse 日志小组件模式
signoz://dashboard/clickhouse-schema-for-metrics用于仪表板 SQL 的捆绑指标架构快照
signoz://dashboard/clickhouse-metrics-example原始 ClickHouse 指标小组件模式
signoz://dashboard/clickhouse-schema-for-traces用于仪表板 SQL 的捆绑追踪架构快照
signoz://dashboard/clickhouse-traces-example原始 ClickHouse 追踪小组件模式
signoz://logs/query-builder-guideLogs Query Builder v5 JSON 或不熟悉的日志字段
signoz://traces/query-builder-guideTraces Query Builder v5 JSON 或不熟悉的追踪字段
signoz://metrics-aggregation-guide指标聚合、公式、分组、限制和 Cost Meter 查询
signoz://query-builder/examplesSigNoz OpenAPI 规范中 signoz_execute_builder_query 各查询类型和请求类型对应的 query_range 请求
signoz://notification-channel/examples每种通知渠道类型、其 config.spec 字段,以及每种类型的完整负载示例
signoz://view/instructions已保存视图字段、v2 类型化规范以及先读取再替换的工作流
signoz://view/examplesSigNoz OpenAPI 规范中的已保存视图负载,涵盖日志、追踪、指标和 Cost Meter,以及替换请求体
signoz://docs/sitemap已索引的官方文档目录和页面 URL
资源模板迁移

实时的 signoz://dashboard/{id}/summary 和 signoz://alert/{id}/summary 资源模板已停用。resources/templates/list 现在会返回空目录。获取仪表板定义时,请使用 signoz_get_dashboard。要获取原先的告警摘要,请调用 signoz_get_alert,然后调用 signoz_get_alert_history;不指定时间范围即可使用相同的六小时窗口,并设置 limit: 10 和 order: "desc",以获取最接近的历史结果。

参数参考 #### `signoz_get_org_overview`

在深入查看具体资源之前,获取 SigNoz 部署的当前状态和整体情况。data.sourceStats 是权威且完整的扁平数据集合,包含部署统计端点报告的所有键和值,包括当前字段和未来字段。类型化便捷投影涵盖遥测数据的新鲜度和数量、基础设施状况、仪表板、告警规则和运行时、通知渠道、已保存视图、日志管道、云集成、用户、身份验证、服务账号、角色、许可和配置。

  • 参数:无任务参数;与每个工具一样,它接受非必需的 searchContext,用于 MCP 可观测性。
  • 权威数据源:sourceStats 会保留从上游 data 对象成功解码的每个条目及其原始点分隔键。可使用分组字段便于解读;需要精确了解后端覆盖范围或查询新引入的字段时,则使用 sourceStats。计数是部署范围的汇总;如需精确清单,请使用 signoz_list_dashboards、signoz_list_alert_rules、signoz_list_notification_channels 或 signoz_list_views;查询指标名称请使用 signoz_list_metrics;查询当前告警实例请使用 signoz_list_alerts;查询时间范围内或按服务划分的数据,请使用 signoz_search_logs、signoz_search_traces 或 signoz_query_metrics。
  • 缺失字段:sourceStats 中不存在的键表示上游采集器未报告该字段,不得将其解读为零。如果某个采集器失败,端点可能会返回部分数据,但 HTTP 状态码仍为 200。在类型化投影中,分组总数缺失时会产生 available: false;报告值为零时则会产生 available: true。预期字段缺失或无效时,会设置 metadata.projectionPartial,并在 incompleteGroups 中添加条目,其中包含受影响的输出路径、原因、后续操作,以及适用时的精确回退工具。无效的投影值仍会原样保留在 sourceStats 中,并列入 invalidProjectionFields。
  • 云集成的完整性:cloudIntegrations.sourceAvailability 会报告当前 AWS/Azure 提供商计数是否均已报告。每个提供商都有各自的 dataAvailable;缺失的提供商计数绝不会被转换为零。如果两个提供商均未报告,源数据可用性为 unavailable,但不会设置整体 metadata.projectionPartial;这可能意味着云集成不受支持或受版本限制,也可能是两个提供商的查询均失败,因此不要将其解读为“未配置云集成”。如果仅报告一个提供商,源数据可用性为 partial,并会为缺失的提供商提供非递归恢复指引。connectedAccounts 表示未移除、具有账号 ID 且至少收到过一次 Agent 报告的账号,并不代表近期有签到记录,也不能证明集成服务已启用。
  • 投影元数据:reportedStatCount 是 sourceStats 中权威条目的数量;projectedStatCount 统计也由类型化分组表示的条目;unprojectedStatCount 统计仅在 sourceStats 中可用的条目,包括未来字段。projectionPartial、incompleteGroups 和 invalidProjectionFields 仅描述类型化投影的缺失情况;它们不表示 sourceStats 中的数据已被删除,也不代表整个端点数据完整。
signoz_list_metrics

发现指标名称和目录元数据,例如类型、暂时性、单位和单调性。查询数值或趋势请使用 signoz_query_metrics。此列表有数量上限,但不支持偏移分页。

  • 参数:
    • searchText(可选)- 按名称子字符串筛选指标(例如,'cpu'、'memory')
    • limit(可选)- 返回的指标数量上限(默认值:50)
    • timeRange(可选)- 相对时间范围:30m、1h、6h、24h、7d(默认值:1h;同时提供 start 和 end 时会忽略)
    • start/end(可选)- Unix 毫秒时间戳。同时提供两者时,会覆盖 timeRange。
    • source(可选)- 数据源筛选条件。使用 "meter" 列出 Cost Meter 指标,即 SigNoz 计量的用量/计费指标(目前为遥测数据摄取量);省略则使用默认指标存储
    • 完整性说明:响应会附加一条说明,报告 hasMore(根据 returnedRows == limit 推断),避免将被 limit 截断的列表误认为完整列表;可使用 searchText 缩小范围以获得更具体的结果
signoz_query_metrics

查询已知指标的数值、趋势、细分数据或公式。此工具会应用适合指标的默认值,并自动获取省略的元数据;已知 metricName 时可直接调用。只有在发现名称或查看目录元数据时,才使用 signoz_list_metrics。

  • 参数:
    • metricName(必需)- 要查询的指标名称
    • metricType(可选)- gauge、sum、histogram、exponential_histogram(缺省时自动获取)
    • isMonotonic(可选)- 布尔值(或字符串 "true"/"false");缺省时自动获取。无效值会被拒绝,不会被静默视为 false
    • temporality(可选)- cumulative、delta、unspecified(缺省时自动获取)
    • timeAggregation(可选)- 时间聚合(根据类型自动设置默认值)
    • spaceAggregation(可选)- 跨维度聚合(根据类型自动设置默认值)
    • groupBy(可选)- 以逗号分隔的字段名称或数组。对于 k8s.*、container.*、host.*、cloud.*、deployment.*、process.*、service.*、telemetry.* 和 os.*,会推断为资源上下文;其他名称使用属性上下文
    • filter(可选)- 筛选表达式
    • timeRange(可选)- 相对时间范围 <number><unit>,其中单位为 m/h/d(例如,'30m'、'1h'、'6h'、'7d';默认值:'1h';同时提供 start 和 end 时会忽略)
    • start/end(可选)- Unix 毫秒时间戳。同时提供两者时,会覆盖 timeRange。
    • stepInterval(可选)- 步长,单位为秒(省略时自动计算)
    • requestType(可选)- 响应格式。枚举值:time_series(默认值)、scalar。不支持的值会被拒绝。
    • reduceTo(可选)- 用于标量:sum、count、avg、min、max、last、median
    • formula(可选)- 对命名查询执行的表达式(例如,"A / B * 100")
    • formulaQueries(可选)- 公式所需的其他命名指标查询数组或 JSON 编码的数组字符串。每个对象支持 name、metricName、metricType、isMonotonic、temporality、timeAggregation、spaceAggregation、groupBy 和 filter;name 和 metricName 为必需项。
    • source(可选)- 数据源筛选条件。使用 "meter" 查询 Cost Meter 数据;省略则使用默认指标存储
    • 结果上限:独立生成的指标查询和公式结果使用 limit: 100,并按 __result desc 排序。由于组件数量上限会在公式计算前应用,因此每个供公式使用的查询都采用 limit: 10000,避免相互独立的前 100 条输入遗漏高比率分组。响应中的决策说明会报告这两种上限。若公式输入的基数可能超过 10000,请缩小筛选或分组范围。
    • 未找到键的错误:筛选条件引用了工作区指标元数据中不存在的键时会失败;错误文本会提供恢复指导,结构化错误内容中还会包含机器可读的 missingKeys 数组。
signoz_get_top_metrics

按摄取的样本量排名,返回排名前 100 的指标及预先计算的百分比。使用此工具可以识别哪些指标带来了最多的摄取量和成本。封装了 POST /api/v2/metrics/treemap。响应字段:metricName、percentage(占总样本量的比例)、totalValue(样本绝对数量)。

  • 参数:
    • timeRange(可选)- 相对时间范围 <number><unit>,其中单位为 m/h/d(例如 '1h'、'24h'、'3d'、'7d'、'30d';默认值:'7d';如果同时提供 start 和 end,则忽略此参数)。从 7d 开始;如果查询超时,则依次使用 3d、24h 重试
    • start/end(可选)- Unix 毫秒时间戳。如果同时提供,则覆盖 timeRange
    • 完整性说明:按摄取样本量固定返回排名前 100 的结果;响应会附加一条说明标记列表是否已达到上限并被截断(hasMore)
signoz_check_metric_usage

给定一组指标名称,返回引用了每个指标的仪表板和告警。针对每个指标封装 /api/v3/metrics/dashboards?metricName=... 和 /api/v2/metrics/alerts?metricName=...。

  • 参数:
    • metricNames(必填)- 要检查的指标名称字符串数组(每次调用最多 50 个)。示例:["system.disk.io", "k8s.node.condition"]。若列表更长,请拆分为每批 50 个并合并结果。
  • 响应:针对每个指标,dashboards(引用该指标的仪表板名称列表)、alerts(引用该指标的告警名称列表)、error(非空表示查询失败;此时不要将该指标视为未使用)
  • 限制:每次调用最多 50 个指标;整体超时为 30 秒(超时后返回部分结果)
signoz_check_metric_cardinality

返回单个指标的标签/属性键及其基数计数和样本值,并按基数从高到低排序。样本有助于区分 UUID 等无界值和状态代码等有界维度。此工具不会显示该指标是否正在使用;建议移除前请先调用 signoz_check_metric_usage。

  • 参数:
    • metricName(必填)- 要检查的指标名称。示例:k8s.container.memory_limit
    • timeRange(可选)- 相对时间范围 <number><unit>,其中单位为 m/h/d(例如 '30m'、'1h'、'6h'、'24h'、'3d'、'7d';默认值:'7d';如果同时提供 start 和 end,则忽略此参数)
    • start/end(可选)- Unix 毫秒时间戳。如果同时提供,则覆盖 timeRange
signoz_list_alerts

列出 Alertmanager 中当前正在触发/已静默/已抑制的告警实例,而非规则定义。要查看已配置的规则,请使用 signoz_list_alert_rules;要查看某条完整规则定义,请使用带有 id 的 signoz_get_alert;要查看状态时间线,请使用 signoz_get_alert_history。

  • 参数:
    • limit(可选)- 每页告警的最大数量(默认值:50)
    • offset(可选)- 分页时跳过的结果数量(默认值:0)
    • active / silenced / inhibited(可选)- 三态筛选条件。接受布尔值(或字符串 "true"/"false")。省略时采用后端默认值(包含所有状态)。无效值会被拒绝,而非静默丢弃
    • filter(可选)- 以逗号分隔的告警标签比较条件,支持 =、!=、=~(正则表达式)或 !~(负向正则表达式),例如 alertname="HighCPU",severity="critical"
    • receiver(可选)- 用于按接收器名称筛选告警的正则表达式
signoz_list_alert_rules

列出来自 GET /api/v2/rules 的已配置告警规则摘要,包括未触发/状态为 OK 的规则和已禁用的规则。要查看某条完整定义,请使用 signoz_get_alert;要查看当前 Alertmanager 实例,请使用 signoz_list_alerts。

  • 参数:
    • limit(可选)- 每页返回的规则最大数量(默认值:50,最大值:1000;超出时会限制为最大值)
    • offset(可选)- 分页时跳过的规则数量(默认值:0)
signoz_get_alert

获取一条告警规则的完整定义(GET /api/v2/rules/{id})。使用 signoz_list_alert_rules 查找 ID。调用 signoz_update_alert 前,仅当当前操作尚未获得完整的现行定义时才调用此工具;如果已有仍然有效的结果,请重复使用并保留未更改的字段。

  • 参数:id(必填)——告警规则 ID(支持 v2 的服务上为 UUIDv7)。
  • 注意:响应结构取决于 SigNoz 服务版本。#10997 之后的服务会返回规范的 Rule 类型,其中包含 createdAt/updatedAt/createdBy/updatedBy;较早版本会返回 GettableRule,其中包含 createAt/updateAt/createBy/updateBy(不带「d」)。
signoz_list_dashboards

列出分页的租户仪表板摘要(名称、UUID、描述、标签、时间戳)。使用 signoz_get_dashboard 获取面板和查询定义;在确认某个仪表板不存在之前,请逐页将 offset 增加 limit,直到覆盖 total。

  • 参数:
    • limit(默认值为 50)、offset(默认值为 0)——基于偏移量的分页
    • filter(可选)——针对仪表板元数据(名称、描述、标签、创建者、时间戳、锁定状态)的服务端过滤 DSL
    • sort(可选)——updated_at(默认值)、created_at 或 name
    • order(可选)——asc 或 desc(默认值)

只有 source: user 的仪表板才能更新、打补丁或删除。source 不是服务端列表过滤列;需要时,请在多页结果中本地过滤返回的行。

filter DSL 是由 AND/OR/NOT 和括号连接的 key operator value 布尔表达式,也可以包含独立的自由文本词语(例如 name CONTAINS 'overview' AND locked = true)。完整语法、可过滤键及其运算符、值格式和示例请参阅 signoz://dashboard/list-filter-guide;列表响应还会在 reservedKeywords 中回显权威的保留键集合。

signoz_get_dashboard

获取一个已知租户仪表板的完整布局、变量、面板和查询。使用 signoz_list_dashboards 查找 UUID。

  • 参数:id(必填)——仪表板 UUID
signoz_create_dashboard

创建一个自定义多面板仪表板。适合使用精选模板时,请使用 signoz_import_dashboard;要保存一条 Explorer 查询,请使用 signoz_create_view。构建负载前,请阅读 signoz://dashboard/instructions、signoz://dashboard/widgets-instructions 和 signoz://dashboard/widgets-examples。

  • 参数:
    • schemaVersion(必填)——必须为 "v6"
    • name(DNS-1123 标签),或使用 generateName: true 从 spec.display.name 推导名称
    • tags(必填)——键值标签数组(可以为空)
    • spec(必填)——Perses spec:display、variables(数组)、panels(以面板 ID 为键的映射)、layouts(数组)

静态 Markdown 面板使用 signoz/TextPanel,并设置 queries: [],同时提供 plugin.spec.mode: "markdown"、text、presentation 和 headerOptions。 请包含该面板的布局引用。包含查询的面板仍需一个查询;Text 面板不需要执行查询试运行。组件示例和补丁说明涵盖这两种面板。面积图使用 signoz/AreaChartPanel 和一个 time_series 查询;visualization.stack(none、normal 或 percent)用于堆叠分组序列,chartAppearance.fillMode 可设为 solid 或 gradient。仪表板输入使用规范的 id;已更改的仪表板工具不接受旧版 uuid 输入。

signoz_import_dashboard

从 SigNoz/dashboards 仓库(main 分支)中托管的精选模板创建仪表板。服务会获取模板 JSON,并通过一次调用创建仪表板。

如果不知道相对模板路径,请先调用 signoz_list_dashboard_templates。请传入其返回的 path,而不是 URL 或绝对路径。

  • 参数:
    • path(必填)——SigNoz/dashboards 仓库中的模板路径,例如 hostmetrics/hostmetrics.json
signoz_list_dashboard_templates

搜索 SigNoz 内置的精选仪表板模板目录,并以 {"templates": [...], "total": N} 的形式返回匹配项,其中每个条目都包含 id、标题、路径、描述、类别和关键词。此工具不会列出租户中已创建的仪表板;如需列出,请使用 signoz_list_dashboards。

  • 参数:
    • searchText(可选)– 与每个模板的 id、标题、路径、类别、描述和关键词进行不区分大小写的匹配;模板必须匹配所有单词,例如 postgres 或 kubernetes pod。最多 2048 个字符。不填写则返回完整目录。
signoz_update_dashboard

完全替换现有仪表板。使用 signoz_get_dashboard 获取仪表板,从响应中取出 data 对象,仅将请求的更改合并到该对象中,然后在顶层发送该对象的字段,并保留所有其他字段。{status, data} 响应封装不能作为输入。对于已保存的 Explorer 查询,请使用 signoz_update_view。

  • 参数:
    • id(必填)– 仪表板 id(也接受旧版 uuid 键)
    • schemaVersion、name、tags、spec – 更新后的完整状态(请参阅该工具的 JSON Schema)
signoz_patch_dashboard

对仪表板应用 RFC 6902 JSON Patch:无需重新发送整个仪表板即可进行部分更新。对于有针对性的编辑(重命名、添加或编辑一个面板或查询、微调变量),优先使用此工具,而非 signoz_update_dashboard。请阅读 signoz://dashboard/patch-instructions,了解示例操作步骤和准确路径;特别是,添加面板需要两项操作(面板和网格项),否则面板不会显示。

  • 参数:
    • id(必填)– 仪表板 id(也接受旧版 uuid 键)
    • patch(必填)– {op, path, value} 操作数组;路径是指向仪表板可提交结构的 JSON Pointer,例如 /spec/display/name、/spec/panels/<panelId>、/spec/layouts/0/spec/items/-、/tags/-
signoz_list_services

列出指定时间范围内有跟踪活动的分页 APM 服务。未列出表示该时间段内没有跟踪活动,并不表示相同的 service.name 从未出现在日志中;如需获取日志值,请使用 signoz_get_field_values 并设置 signal="logs"。

  • 参数:
    • timeRange(可选)- 相对时间范围 <number><unit>,其中单位为 m/h/d(例如 '30m'、'1h'、'6h'、'7d';默认最近 6 小时;如果同时提供 start 和 end,则忽略此参数)
    • start(可选)- 开始时间,单位为 unix 毫秒(默认 6 小时前)。
    • end(可选)- 结束时间,单位为 unix 毫秒(默认当前时间)
    • limit(可选)- 每页最多返回的服务数(默认:50,最大:1000;更高的值会被限制)
    • offset(可选)- 分页时跳过的结果数量(默认:0)
signoz_get_service_top_operations

获取一个有跟踪记录的服务的内置操作表,按 p99 延迟排序,并列出每项操作的 p50、p95、p99、调用次数和错误次数。对于自定义聚合、分组、时间序列、跨服务比较或任意跟踪筛选,请使用 signoz_aggregate_traces。

  • 参数:
    • service(必填)- 精确的跟踪服务名称,通常来自 signoz_list_services
    • timeRange(可选)- 相对时间范围 <number><unit>,其中单位为 m/h/d(例如 '30m'、'1h'、'6h'、'7d';默认最近 6 小时;如果同时提供 start 和 end,则忽略此参数)
    • start(可选)- 开始时间,单位为 unix 毫秒(默认 6 小时前)。
    • end(可选)- 结束时间,单位为 unix 毫秒(默认当前时间)
    • tags(可选)- 以字符串形式传递的 JSON 编码 TagQueryParam 数组,例如 [{"key":"http.method","tagType":"SpanAttribute","operator":"In","stringValues":["GET"]}];不填写则不进行标签筛选
signoz_get_alert_history

获取某条已配置规则的触发或状态转换历史记录。默认查询最近 6 小时。使用 state 和 filter 缩小结果范围。获取下一页时,将 data.nextCursor 作为 cursor 传入,并重复使用原始筛选条件、时间范围和排序方式。

响应为 { "status": "success", "data": { "items": [...], "total": <n>, "nextCursor": "<opaque>" } };最后一页会省略 nextCursor。

  • 参数:
    • id(必填)— 来自 signoz_list_alert_rules 的告警规则 ID
    • timeRange(可选)— 相对时间范围,格式为 <number><unit>,其中单位为 m/h/d(例如 '30m'、'1h'、'6h'、'7d';默认查询最近 6 小时;若同时提供 start 和 end,则忽略此参数)
    • start(可选)— Unix 毫秒时间戳的起始时间(默认为 6 小时前)。
    • end(可选)— Unix 毫秒时间戳的结束时间(默认为当前时间)
    • state(可选)— 按告警状态筛选:inactive、pending、recovering、firing、nodata 或 disabled(省略则包含所有状态转换)
    • filter(可选)— 对时间线标签使用的 SigNoz 查询构建器表达式。使用 AND、OR 和括号组合条件;字符串使用单引号。示例:severity = 'critical' AND (team = 'payments' OR service.name = 'checkout')。要查找键,先不带筛选条件调用并检查 data.items[].labels[].key.name。为保持兼容性,仍接受后端格式的 filterExpression 别名,但标准参数为 filter。
    • cursor(可选)— 不透明的续页游标。获取下一页时,重复使用原始时间范围、状态、筛选条件和排序方式。获取第一页时省略 cursor。
    • limit(可选)— 每页行数。默认值:20;最大值:10000(超过上限的值会被截断)。
    • order(可选)— 排序顺序。枚举值:asc、desc(默认值:'asc')
    • 旧版 offset:不再支持;请改用返回的游标。
    • 完整性说明:响应会追加一条说明,根据 data.nextCursor 报告 hasMore,并给出下一页的游标名称。
signoz_list_views

列出已保存的 Explorer 视图,或查找 Logs、Traces、Metrics 或 Cost Meter 页面中的某个视图 UUID。一个视图保存一份可重复使用的 Explorer 查询规范;它不是多面板仪表板。分页前先应用名称筛选,并在 pagination.hasMore 为 true 时继续使用 pagination.nextOffset。

  • 参数:
    • source(可选)— 要筛选的 Explorer,例如 traces、logs、metrics 或 meter(Cost Meter 是独立的 Explorer 页面);SigNoz 会验证该值。省略则列出所有 Explorer 中的视图
    • name(可选)— 按视图名称进行部分匹配筛选(服务端执行)
    • limit(可选)— 每页大小(默认值:50,最大值:1000;超过上限的值会被截断)
    • offset(可选)— 要跳过的结果数量(默认值:0)
signoz_get_view

按 UUID 获取某个已保存 Explorer 视图的完整定义。调用 signoz_update_view 前先调用此工具;signoz_update_view 会完整替换该视图。

  • 参数:id(必填)— 已保存视图的 UUID
signoz_search_docs

搜索 SigNoz 官方文档,并根据产品、设置、插桩、配置、API、部署或故障排除问题,返回按相关性排序的页面、URL 和摘要。针对一个主题发送 2 到 6 个关键词,并保留用户原样输入的产品和技术名称;将包含多个意图的问题拆分为单独的调用。如果排名靠前的结果不相关,请用更少或不同的词重试。不要用于查询实时租户数据;如需所选结果的完整内容或指定的文档 URL,请使用 signoz_fetch_doc。

  • 参数:
    • searchText(必填)- 针对一个主题的 2 到 6 个关键词,例如“Kubernetes pod logs”。保留用户原样输入的产品和技术名称。
    • limit(可选)- 要返回的最大结果数,以字符串形式提供(默认值:10,最大值:25;也接受数值)。25 的上限是有意设置的:每个结果都会从进程内的文档索引中载入文档文本,因此更大的上限会增加此服务的常驻内存。
    • section_slug(可选)- 精确的顶级文档分区筛选条件,例如 setup、logs-management、apm-distributed-tracing、metrics、alerts、dashboards、signoz-apis、querying 或 collection-agents。缩小搜索范围时,可复用先前结果中的 section_slug;未知的 slug 会返回零个结果。
    • searchContext - 用户的原始问题

文档搜索遥测会通过 signoz_docs_searches_total 统计已执行的搜索,并记录 outcome=ok|error。只有成功的搜索才会有 result_count_bucket(0、1-4、 5-9 或 10+)。signoz_docs_search_top_score 仅会在成功且有结果的搜索中记录排名第一的命中结果的原始 Bleve 分数。 分数未经校准,并取决于查询词、权重和分析器设置;它们不是相关性概率或阈值。 搜索 span 会记录 mcp.docs.search_text(已执行的查询,截断至 256 个 Unicode 码位)、mcp.docs.section_slug 和 mcp.docs.result_count。成功且有结果的搜索 还会记录 mcp.docs.top_score。这些 span 属性会区分客户端的关键词查询与用户在 mcp.search_context 中的原始请求;查询文本不是指标属性。如果查询不符合 Bleve 查询字符串语法,搜索会丢弃该子句、继续进行文本匹配,并记录 mcp.docs.query_string_dropped=true。空查询或仅包含空格的查询仍会导致验证错误。

signoz_fetch_doc

获取一个已知的 SigNoz 官方文档页面的完整 Markdown 内容或指定标题。请先使用 signoz_search_docs 查找页面;可接受的输入为 https://signoz.io/docs/... URL 或 /docs/... 路径。

  • 参数:
    • url(必填)- 文档页面的 URL 或路径
    • heading(可选)- 标题锚点 ID 或标题文本
    • searchContext - 用户的原始问题
signoz_create_view

保存一个可复用的 Explorer 查询规范。多面板仪表板请使用 signoz_create_dashboard。Cost Meter 视图使用 source="meter"、signal="metrics" 和 builder-spec source="meter"。

  • 参数(v2 类型化结构):
    • name(可选)- 视图名称(DNS-1123 标签)。除非 generateName 为 true,否则必填
    • generateName(可选)- 为 true 时,服务会根据 spec.displayName 生成 name,且 name 必须为空
    • source(必填)- 此视图所属的 Explorer,例如 traces、logs、metrics 或 meter;SigNoz 会验证该值
    • spec(必填)- 类型化视图内容:displayName、panelType、requestType、queries、selectedFields、display
    • schemaVersion(可选)- 始终为 v2;省略时使用默认值
  • 必需:编写任何负载前,请阅读两个 MCP 资源 signoz://view/instructions 和 signoz://view/examples。
signoz_update_view

完全替换现有的已保存 Explorer 视图。使用 signoz_get_view 获取视图,修改其返回的 data 对象,保留所有未要求更改的字段,并将完整对象作为 view 传入。上游在更新时会保持 name 不变;显示标签位于 spec.displayName 中。

  • 参数:
    • id(必需)- 要替换的视图的 UUID
    • view(必需)- 完整的 source/spec 对(必需);移除 name 和服务器填充的字段
  • 迁移:已弃用的扁平结构(source 和 spec 与 id 并列)会返回带代码的 VALIDATION_FAILED 错误,并指出 view 包装对象;请传入 {"id": "<uuid>", "view": {"source": ..., "spec": ...}}。
  • 资源规则:更改 source 或 spec 时,请读取 signoz://view/instructions 和 signoz://view/examples。如果原样传递获取到的正文,则跳过。先调用 signoz_get_view;不完整的正文会清除未指定的字段。
signoz_delete_view

按 UUID 永久删除已确认的已保存 Explorer 视图。使用 signoz_list_views 查找 ID;删除仪表板请使用 signoz_delete_dashboard。

  • 参数:id(必需)- 已保存视图的 UUID
signoz_aggregate_logs

返回日志聚合统计信息(计数、速率、平均值、百分位数或分组/前 N 项明细),而非单条记录。查询日志行并检查消息时,请使用 signoz_search_logs。

  • 参数:
    • aggregation(必需)- 聚合函数:count、count_distinct、avg、sum、min、max、p50、p75、p90、p95、p99、rate
    • aggregateOn(可选)- 要聚合的字段(除 count 和 rate 外均必需)
    • groupBy(可选)- 用于分组的逗号分隔字段(例如:'service.name, severity_text')
    • filter(可选)- 使用 SigNoz 搜索语法的筛选表达式。使用 AND、OR 和括号组合条件。未知键会导致硬错误;有歧义的键默认归入资源上下文。日志键因工作区而异;只有在日志管道设置了 service.name 时,该字段才会存在。参见 signoz://logs/query-builder-guide
    • service(可选)- 服务名称的快捷筛选器(添加 service.name = '<value>';如果工作区的日志缺少该属性,则会报错 key service.name not found)
    • severity(可选)- 精确的 severity_text;DEBUG、INFO、WARN、ERROR 和 FATAL 是常见示例,并非完整枚举。使用 signoz_get_field_values(signal="logs", name="severity_text", fieldContext="log") 发现可用值
    • orderBy(可选)- 排序表达式和方向(例如:'count() desc')
    • limit(可选)- 返回的最大分组数(默认值:100,最大值:10000;更高的值会被截断,以限制服务器内存使用)
    • timeRange(可选)- 相对时间范围 <number><unit>,其中单位为 m/h/d(例如:'30m'、'1h'、'6h'、'24h'、'7d';默认值:'1h';若同时提供 start 和 end,则忽略此参数)
    • start / end(可选)- 开始/结束时间,单位为 Unix 毫秒。如果两者均已提供,则优先于 timeRange。
    • requestType(可选)- scalar(默认值;整个时间范围内的一个聚合值)或 time_series(每个时间桶一个值)。不接受未知值。
    • stepInterval(可选)- time_series 模式下的时间桶大小,单位为秒。可接受数字或数字字符串(省略时由后端自动选择)
    • 时间序列排序说明:limit 会选择整个请求时间窗口内排名靠前的分组,而非分别按每个时间桶选择。如果短时序列可能因此被隐藏,请缩短时间窗口或调整 limit。
    • 未找到键的错误:筛选器引用了此工作区日志元数据中不存在的键时,错误文本会提供恢复指导,结构化错误内容中还会包含机器可读的 missingKeys 数组。
signoz_search_logs

返回符合文本、服务、严重性或字段筛选条件的单条分页日志记录。对于计数、趋势或分组细分,请使用 signoz_aggregate_logs。

仅使用 searchText、service、severity、时间或分页参数的调用无需读取指南。只有在使用不熟悉的工作区字段编写 filter 之前,才需要读取 signoz://logs/query-builder-guide。

  • 参数:
    • filter(可选)- 使用 SigNoz 搜索语法的筛选表达式。使用 AND、OR 和括号组合条件(例如,"(severity_text = 'ERROR' OR body CONTAINS 'panic') AND service.name = 'payment-svc'")。日志键因工作区而异;只有在日志流水线设置了 service.name 时,日志中才会包含该字段。请参阅 signoz://logs/query-builder-guide
    • service(可选)- 要筛选的服务名称(添加 service.name = '<value>';如果工作区的日志中没有该属性,则会报错 key service.name not found)
    • severity(可选)- 精确的 severity_text;DEBUG、INFO、WARN、ERROR 和 FATAL 是常见示例,并非完整枚举值。使用 signoz_get_field_values(signal="logs", name="severity_text", fieldContext="log") 发现可用值
    • searchText(可选)- 要查找的字面文本;会自动转义,并与 filter 通过 AND 组合
    • searchScope(可选)- searchText 的匹配范围:body(默认值,body CONTAINS)、attribute 或 resource(键和值),或 all(不限定范围的 search(),在较宽的时间范围内速度较慢)
    • timeRange(可选)- 相对时间范围 <number><unit>,其中单位为 m/h/d(例如 '30m'、'1h'、'6h'、'24h'、'7d';默认值:'1h';如果同时提供 start 和 end,则忽略此参数)
    • start / end(可选)- 以 Unix 毫秒表示的开始/结束时间。如果同时提供两者,则会覆盖 timeRange。
    • limit(可选)- 返回的最大日志数(默认值:100,最大值:10000;超出上限的值会被截断;使用 offset 分页)
    • offset(可选)- 分页偏移量(默认值:0)
    • 排序:生成的原始日志查询使用 timestamp desc,然后使用 id desc,因此当多行具有相同时间戳时,偏移分页结果仍具有确定性。
    • 完整性说明:响应会附加一条说明,报告 hasMore(根据 returnedRows == limit 推断)以及要获取的 nextOffset,因此不会将被截断的页面误认为完整结果集
    • 键不存在错误:如果筛选条件引用了此工作区日志元数据中不存在的键,错误文本会提供恢复指导,结构化错误内容中还会包含机器可读的 missingKeys 数组

字段未知时,使用 filter: "search('timeout')"。 使用 search('checkout', body) 限定搜索范围,或通过 AND/OR/NOT 将该函数与字段 谓词组合。范围包括 body、attribute、resource 和 log。字段确定后,优先使用字段谓词。searchText 配合 searchScope 会为你构建这些谓词。表达式字面值中的反斜杠和撇号需要转义;显式筛选条件会直接传递,不会被改写。 相同的表达式也适用于日志聚合和已保存查询规范。

signoz_get_field_keys

发现可用于筛选或分组指标、追踪或日志的字段名称。此工具返回的是键,而非已观测到的值;选定键后,请使用 signoz_get_field_values。data.complete 为 false 表示 SigNoz 截断了键列表;请通过 searchText 或 fieldContext 缩小范围。

  • 参数:
    • signal(必填)- 信号类型。枚举:metrics、traces、logs
    • searchText(可选)- 按名称子字符串筛选字段键
    • metricName(可选)- 按指标名称筛选(适用于 metrics 信号)
    • fieldContext(可选)- 限定字段上下文。枚举:resource、attribute、scope、log/span/metric(固有列)、body(JSON 日志正文)。请使用 attribute,不要使用旧版 Query Builder 上下文 tag,SigNoz 在此处会忽略它。
    • fieldDataType(可选)- 限定数据类型:string、bool、int64、float64、number。像 []string 这样的数组形式会按其元素类型处理。
    • source(可选)- 对于指标,使用 meter 获取 Cost Meter 字段;默认指标存储则省略
signoz_get_field_values

获取已知字段键的观测值。若键未知,请使用 signoz_get_field_keys;并确保 signal 和 fieldContext 与将使用该值的查询一致。data.complete 为 false 表示 SigNoz 截断了值列表;请通过 searchText 缩小范围。

  • 参数:
    • signal(必填)- 信号类型。枚举:metrics、traces、logs
    • name(必填)- 要获取值的字段键名称(例如,service.name、http.method)
    • searchText(可选)- 按子字符串筛选值
    • metricName(可选)- 按指标名称筛选(适用于 metrics 信号)
    • fieldContext(可选)- 当同一键名存在于多个上下文时,限定查找的字段上下文(resource、attribute、scope、log/span/metric、body)。请使用 attribute,不要使用旧版 Query Builder 上下文 tag;对于 tag,SigNoz 不会返回任何值。
    • source(可选)- 对于指标,使用 meter 获取 Cost Meter 值;默认指标存储则省略
signoz_search_traces

返回与服务、操作、错误、耗时或字段筛选条件匹配的单条分页 span 行,并使用它们发现 trace ID。统计数据请使用 signoz_aggregate_traces;查询一个已知 trace 的详情请使用 signoz_get_trace_details。

  • 参数:
    • filter(可选)- 使用 SigNoz 搜索语法的筛选表达式。使用 AND、OR 和括号组合条件(例如:"service.name = 'payment-svc' AND (has_error = true OR attribute.http.response.status_code >= 500)")。为保持向后兼容,仍接受旧版 query,但规范参数为 filter。请参阅 signoz://traces/query-builder-guide
    • service(可选)- 用于筛选的服务名称
    • operation(可选)- 用于筛选的操作/span 名称
    • error(可选)- 按错误状态筛选。值为布尔值(或字符串 "true"/"false")。无效值会被拒绝,而不会被静默忽略
    • minDuration / maxDuration(可选)- span 耗时的最小值/最大值,单位为纳秒(例如,500000000 表示 500 毫秒)
    • timeRange(可选)- 相对时间范围,格式为 <number><unit>,其中 unit 为 m/h/d(例如,30m、1h、6h、24h、7d;默认值:1h;若同时提供 start 和 end,则忽略此参数)
    • start / end(可选)- 起始/结束时间,单位为 Unix 毫秒。若同时提供,则会覆盖 timeRange。
    • limit(可选)- 返回的 span 行数上限(默认值:100,最大值:10000;超过上限的值会被截断;使用 offset 分页)
    • offset(可选)- 要跳过的 span 行数(默认值:0)
    • selectFields(可选)- 每行需返回的额外字段,添加到默认字段中。接受字段名数组或逗号分隔的字符串,最多 50 个。字段名可以是 span 列(db_name)、资源属性(k8s.pod.name)或 span 属性(http.route);resource.、attribute. 或 span. 前缀用于指定上下文。使用 signoz_get_field_keys(signal="traces")发现字段名称
    • 默认字段:每行包含 timestamp、trace_id、span_id、parent_span_id、name、service.name、kind_string、duration_nano、has_error、status_code_string、status_message、response_status_code 和 http_method,以及任何 selectFields。所有字段都是扁平行键;某字段未出现在某行中,表示该字段未被选中
    • 排序:生成的原始 trace 查询使用 timestamp desc。
    • 完整性说明:响应会附加一条说明,报告 hasMore(根据 returnedRows == limit 推断)以及下一次抓取所用的 nextOffset,因此不会将截断的页面误认为完整结果集
    • 输出说明:原始结果行键采用规范的 Query Builder 字段名称(例如 trace_id、span_id、duration_nano、has_error)。旧版调用方提供的筛选条件(如 hasError)仍会传递给后端别名层,但新的响应解析器应读取规范的 snake_case 键。
    • 键未找到错误:若筛选条件引用的键不存在于此工作区的 traces 元数据中,将返回错误;错误文本中包含恢复指导,结构化错误内容中还包含机器可读的 missingKeys 数组
signoz_aggregate_traces

返回跨度的自定义聚合统计信息(计数、比率、延迟百分位数、分组/前 N 项明细或时间序列),而不是单独的行或完整的跟踪层级结构。若要查看某个跟踪服务按 p99 排名的内置操作表,请使用 signoz_get_service_top_operations。调用此工具前,请先阅读 signoz://traces/query-builder-guide。

  • 参数:
    • aggregation(必填)- 聚合函数:count、count_distinct、avg、sum、min、max、p50、p75、p90、p95、p99、rate
    • aggregateOn(可选)- 要聚合的字段(例如,'duration_nano')。除 count 和 rate 外,其他聚合均必填
    • groupBy(可选)- 用逗号分隔的分组字段(例如,'service.name, name')
    • filter(可选)- 使用 SigNoz 搜索语法的筛选表达式。使用 AND、OR 和括号组合条件。未知键会导致硬错误;有歧义的键默认采用资源上下文。请参阅 signoz://traces/query-builder-guide
    • service(可选)- 服务名称的快捷筛选条件
    • operation(可选)- 跨度/操作名称的快捷筛选条件
    • error(可选)- 错误跨度的快捷筛选条件。接受布尔值(或字符串 "true"/"false")。无效值会被拒绝,不会静默丢弃
    • orderBy(可选)- 排序表达式和方向(例如,'avg(duration_nano) desc')
    • limit(可选)- 返回的最大分组数(默认值:100,最大值:10000;超出时会截断,以限制服务端内存占用)
    • timeRange(可选)- 相对时间范围 <number><unit>,其中单位为 m/h/d(例如,'30m'、'1h'、'6h'、'24h'、'7d';默认值:'1h';同时提供 start 和 end 时会忽略此参数)
    • start/end(可选)- 开始/结束时间,单位为 Unix 毫秒。同时提供两者时,它们会覆盖 timeRange。
    • requestType(可选)- scalar(默认值;整个范围内的一个聚合值)或 time_series(每个时间桶一个值)。不接受未知值。
    • stepInterval(可选)- time_series 模式下的时间桶大小,单位为秒。接受数字或数字字符串(省略时由后端自动选择)
    • 时间序列排名说明:limit 会选取整个请求时间窗口内的前 N 个分组,而不是独立选取每个时间桶的前 N 个分组。如果短暂出现的序列可能因此被隐藏,请缩小时间窗口或调整 limit。
    • 未找到键时的错误:如果筛选条件引用的键不存在于此工作区的跟踪元数据中,错误文本会提供恢复指导,结构化错误内容中还会包含机器可读的 missingKeys 数组
signoz_get_trace_details

对于已知的跟踪 ID,返回其跨度、元数据和层级结构。如果 ID 未知,请先使用 signoz_search_traces,并选择包含该跟踪的时间窗口;默认的最近 6 小时范围可能无法涵盖较早的跟踪。

  • 参数:
    • traceId(必填)- 已知的跟踪 ID,通常通过 signoz_search_traces 查得
    • timeRange(可选)- 相对时间范围 <number><unit>,其中单位为 m/h/d(例如,'30m'、'1h'、'6h'、'7d';默认为最近 6 小时;同时提供 start 和 end 时会忽略此参数)
    • start(可选)- 开始时间,单位为 Unix 毫秒(默认为 6 小时前)。
    • end(可选)- 结束时间,单位为 Unix 毫秒(默认为现在)
    • includeSpans(可选)- 是否包含详细的跨度信息。接受布尔值(或字符串 "true"/"false"),默认值:true
signoz_create_alert

通过 POST /api/v2/rules 在 SigNoz 中创建新的告警规则。

  • 参数:符合 SigNoz 告警规则架构的 JSON 负载。
  • 架构因 ruleType 而异:
    • threshold_rule / promql_rule → v2alpha1(结构化的 condition.thresholds、evaluation、notificationSettings)。
    • anomaly_rule → v1,仅限指标:顶层 evalWindow / frequency、条件中的异常字段,以及直接位于顶层的 preferredChannels。省略 thresholds、evaluation、notificationSettings 和 schemaVersion;不支持策略路由。
  • 通知路由:对于直接路由,仅当结果来自同一仍有效的已准备操作时,才复用完整分页的 signoz_list_notification_channels 结果;否则调用该工具,并且仅在状态可能已更改时刷新。v2 的每个层级都需要一个与返回的 displayName 完全匹配的名称:SigNoz 会拒绝没有渠道的层级,也会拒绝名称不存在的渠道,并且顶层 preferredChannels 不参与 v2 路由。v1 异常规则使用直接位于顶层的 preferredChannels。如果没有合适的渠道,询问用户,或提供 signoz_create_notification_channel,并使用用户提供的配置;绝不要自动创建。已确认的 v2 策略路由可以省略层级渠道。
  • 提示:仅当告警资源已在同一已准备操作中读取时才复用;否则读取 signoz://alert/instructions 和 signoz://alert/examples。必要时,为 PromQL 读取 signoz://promql/instructions。
signoz_update_alert

通过 PUT /api/v2/rules/{id} 更新现有告警规则。这会完整替换规则:仅当结果来自同一仍有效的已准备操作时,才复用 signoz_get_alert、signoz://alert/instructions、signoz://alert/examples 和完整分页的 signoz_list_notification_channels 结果;否则读取或调用它们,并且仅在状态可能已更改时刷新,然后保留未更改的字段。直接 v2 路由的每个层级都需要一个与已列出的 displayName 完全匹配的名称;已确认的 v2 策略路由可以省略这些名称。v1 异常规则使用直接位于顶层的 preferredChannels,且不能使用策略路由。

  • 参数:
    • id(必填)——要更新规则的 UUIDv7(从 signoz_list_alert_rules / signoz_get_alert 获取)。
    • 以及告警规则架构中的所有字段(结构与 signoz_create_alert 相同)。
signoz_delete_alert

通过 DELETE /api/v2/rules/{id} 删除告警规则。此操作不可撤销:使用 signoz_list_alert_rules 查找 ID,并先确认确切的规则。如果这两个步骤都已完成,则直接调用删除工具,无需重复进行删除前的列表查询或获取操作。

  • 参数:
    • id(必填)——要删除规则的 UUIDv7。服务器会对非 UUIDv7 值返回 invalid_input。
signoz_delete_dashboard

按 ID 永久删除已确认的租户仪表盘。删除操作不可撤销;使用 signoz_list_dashboards 查找 UUID。对于已保存的 Explorer 视图,请使用 signoz_delete_view。

  • 参数:id(必填)——要删除的仪表盘 UUID
signoz_list_notification_channels

列出分页的 v2 渠道摘要(id、name、displayName、kind、时间戳)。 告警路由使用 displayName;name 是不可变的机器标识符。 结果不包含提供商设置和凭据。使用 signoz_get_notification_channel 获取完整配置,并遍历所有页面后再确认某个渠道不存在。

  • 参数:query 搜索显示名称;kind 按提供商类型筛选; sort 为 updated_at、created_at 或 name;order 为 asc 或 desc。 limit 默认为 20,上限为 200;offset 默认为 0。
  • 默认值:按更新时间从新到旧排序。响应包含筛选后的总数 和明确的分页元数据。当 pagination.hasMore 为 true 时,继续使用 pagination.nextOffset;pagination.limit 表示实际生效的上限。
signoz_create_notification_channel

根据 config: {kind, spec} 创建通知渠道。创建渠道前先检查现有的 显示名称。

  • 参数:必需提供 config。提供符合 DNS1123 规范的 name,或使用 generateName: true 和 displayName。如果未提供 displayName,SigNoz 会将 显式提供的 name 设为默认值。创建后,这两个名称都不可更改。 警报路由引用的是 displayName,而不是 name。
  • 提供方类型:signoz://notification-channel/examples 列出了固定 SigNoz 版本接受的所有类型、每种类型的 config.spec 字段,以及对应的示例载荷;该列表 由 SigNoz OpenAPI 规范通过 make gen 生成。SigNoz 会验证类型,拒绝时会列出 可接受的类型。对于未知或缺失的 config.spec 字段,SigNoz 也会拒绝并提供 准确的要求;对于重复名称,会返回 already-exists。
  • 解析通知:省略 config.spec.sendResolved 时,会使用提供方的默认值。 Get 会返回其生效值;更新时请保留该值。
  • 测试发送:test 默认为 false。仅在确实需要发送测试通知时才设置 test: true。测试失败不会撤销已创建的渠道;重试前请检查返回的状态。 写入后发生的授权错误会包含 mutationCommitted: true 和已知 ID,以便调用方进行 身份验证并检查现有渠道,而无需再次创建。

不发送测试通知的示例:

{
  "name": "checkout-oncall",
  "displayName": "Checkout on-call",
  "config": {
    "kind": "webhook",
    "spec": {"url": "https://alerts.example.com/signoz", "sendResolved": true}
  },
  "test": false
}
signoz_update_notification_channel

使用 id 和完整的规范 config: {kind, spec} 对象,完整替换一个渠道的 config。先获取渠道,复制其 config,仅修改请求的字段,然后提交完整对象。 名称不可更改。保留所有未修改的设置和凭据,但不要回显机密。获取的 config 可直接写回;要取消设置可选字段,请将其省略,因为对于标题和消息等由模板支持的 字段,SigNoz 会拒绝空字符串。 test 默认为 false;显式设置为 true 会在更新后发送测试通知。 测试失败不会撤销更新。不要自动重放结果不确定的写入,也不要自动执行选择加入的测试。

signoz_get_notification_channel

获取一个渠道的规范 id、机器可读的 name、displayName、时间戳 和完整 config。config.spec 可能包含明文凭据;更新时可以使用,但不要显示或 记录机密。参数:id。

signoz_delete_notification_channel

通过 id 永久删除已确认的渠道。先解析并确认确切的渠道;如果这些步骤已完成, 则直接调用。若路由策略引用了该渠道,后端可能会拒绝删除。请传递该依赖错误, 并在重试前解除相关引用。

signoz_execute_builder_query

运行专用工具无法表达的 SigNoz Query Builder v5 请求,包括多查询请求、公式、PromQL 和 ClickHouse SQL。查询行数据时,优先使用 signoz_search_logs / signoz_search_traces;查询分组结果时,优先使用 signoz_aggregate_logs / signoz_aggregate_traces;查询常规指标时,优先使用 signoz_query_metrics。

  • 参数:query(必填)——完整的 query_range 请求。输入架构会使用 SigNoz OpenAPI 规范中的描述说明顶层字段(start、end、requestType、compositeQuery、variables、formatOptions、noCache);compositeQuery.queries 中的查询封装对象则为开放对象,相关说明见指南和 signoz://query-builder/examples。
  • 查询类型:每个封装对象的 compositeQuery.queries[i].type 用于选择规范形状:
    • builder_query:特定信号的规范(日志/追踪/指标),包含过滤器、聚合、分组等。
    • builder_formula:引用其他查询名称的公式表达式(例如 A / B * 100)。
    • promql:{name, query, disabled, step?, legend?}。OTel 指标的 PromQL 必须使用 Prometheus 3.x UTF-8 带引号选择器格式 {"metric.name.with.dots"};详情请阅读 signoz://promql/instructions 资源。
    • clickhouse_sql:{name, query, disabled, legend?}。
  • Builder 结果边界:为确保编写的查询结果可预测,请在每个 builder_query 和 builder_formula 中明确提供正数 spec.limit 和非空的 v5 spec.order(不是仪表板/编辑器的 orderBy)。如果省略、设为 null 或设为零,独立查询和公式结果的默认限制为 100;被公式引用的 builder 查询默认限制为 10000,因为基础查询的限制会在公式计算前应用。原始日志按 timestamp desc, id desc 排序;原始追踪按 timestamp desc 排序;指标标量/时间序列查询和公式按 __result desc 排序;日志/追踪标量/时间序列查询按主聚合降序排列。调用方提供的值会原样转发。插入默认值时,响应会附加一条决策说明。
  • 验证:除插入的边界值外,请求会原样传递给 SigNoz,由 SigNoz 进行验证。requestType 没有默认值(raw、trace、time_series 或 scalar);start 和 end 必须是 Unix 毫秒时间戳。
  • 指南路由:日志请阅读 signoz://logs/query-builder-guide,追踪请阅读 signoz://traces/query-builder-guide,指标/公式请阅读 signoz://metrics-aggregation-guide,PromQL 请阅读 signoz://promql/instructions。
  • 时间序列排名注意事项:Top-N 分组按整个请求时间窗口进行排名。即使某个短暂峰值在一个时间桶中占主导地位,也可能被省略;遇到这种情况时,请缩短时间窗口或调整限制。
  • 后端警告:后端返回的非致命警告(例如,存在歧义的键解析)会与原始响应一同作为说明呈现,并记录为 WARN 日志,这与搜索/聚合/query_metrics 工具的处理方式一致(此前会原样返回响应正文并丢弃警告)。
  • 未找到键的错误:如果过滤器引用的键不在工作区中所查询信号的元数据内,操作会失败;错误文本会提供恢复指导,结构化错误内容中还会包含机器可读的 missingKeys 数组。
  • 文档:请参阅 SigNoz Query Builder v5 文档

环境变量

变量描述必填
SIGNOZ_URLSigNoz 实例 URL是(stdio);可选(使用 OAuth 的 http)
SIGNOZ_API_KEYSigNoz API 密钥(在 SigNoz UI 的 Settings → API Keys 中获取)是(stdio);可选(使用 OAuth 的 http)
LOG_LEVEL日志级别:info(默认)、debug、warn、error否
TRANSPORT_MODEMCP 传输模式:stdio(默认)或 http否
MCP_SERVER_HOSTHTTP 传输模式的主机/接口(默认:空,表示监听所有接口)。设置为 127.0.0.1 可仅允许环回访问。否
MCP_SERVER_PORTHTTP 传输模式的端口(默认:8000)否
MCP_MAX_REQUEST_BYTESMCP HTTP 入站请求正文的最大字节数(默认:4194304 / 4 MiB)。限制单个超大请求占用的内存。否
CLIENT_CACHE_SIZE多租户 HTTP 模式下缓存的租户客户端最大数量(默认:256)否
CLIENT_CACHE_TTL_MINUTES租户客户端缓存的有效时间(分钟,默认:30)否
SIGNOZ_DOCS_REFRESH_INTERVAL文档的计划增量刷新间隔(Go 时长,默认:6h)。设置为 0(或 off)可禁用。若要停止所有计划刷新并保持内嵌文档索引不变,还需将 SIGNOZ_DOCS_FULL_REFRESH_INTERVAL=0。参见 内存占用。否
SIGNOZ_DOCS_FULL_REFRESH_INTERVAL文档的计划强制全量刷新间隔(Go 时长,默认:24h)。设置为 0(或 off)可仅禁用强制全量刷新。否
OAUTH_ENABLED启用 OAuth 2.1 身份验证流程(true/false)否(默认:false)
OAUTH_TOKEN_SECRETOAuth 令牌的加密密钥(至少 32 字节,例如 openssl rand -base64 32)OAUTH_ENABLED=true 时必填
OAUTH_ISSUER_URL此 MCP 服务的公开 URL(用于 OAuth 元数据发现)OAUTH_ENABLED=true 时必填
OAUTH_ACCESS_TOKEN_TTL_MINUTES访问令牌有效时间(分钟,默认:60)否
OAUTH_REFRESH_TOKEN_TTL_MINUTES刷新令牌有效时间(分钟,默认:43200 / 30d)否
OAUTH_AUTH_CODE_TTL_SECONDS授权码有效时间(秒,默认:600 / 10min)否
SIGNOZ_CUSTOM_HEADERS添加到每个 API 请求的额外 HTTP 标头;当 SigNoz 位于需要身份验证的反向代理之后时很有用(例如 CF-Access-Client-Id:id.access,CF-Access-Client-Secret:secret)。格式:Key1:Value1,Key2:Value2否
SIGNOZ_INSTANCE_URL_ALLOWLIST仅适用于多租户(http):以逗号分隔的允许列表,列出服务可代理到的 SigNoz 后端主机。条目可以是精确主机(signoz.example.com)或通配符(*.us.signoz.cloud,匹配以 .us.signoz.cloud 结尾的任何子域名);若条目中意外包含协议/端口/路径,会予以容忍并缩减为裸主机。设置后,不匹配的 SigNoz 实例 URL 会在每个入口处遭到拒绝:OAuth 设置表单和 X-SigNoz-URL 标头返回 HTTP 403,OAuth 令牌端点(包括现有刷新令牌)返回 invalid_grant,通过 OAuth 令牌发起的 /mcp 请求返回 403。所有这些情况都会递增带有 disallowed_signoz_url 标签的失败指标以供告警(不会按请求记录日志,以避免配置错误或循环请求的客户端造成噪声),拒绝消息会引导 SigNoz Cloud 用户前往其所在区域的 MCP URL(mcp.<region>.signoz.cloud),并附上文档链接。未设置或为空时允许任何主机。运维人员自己的 SIGNOZ_URL 不受此限制。否
ANALYTICS_ENABLED启用产品分析(true/false;默认:false)否
SEGMENT_KEY仅在启用分析时使用的 Segment 写入密钥否
OTEL_EXPORTER_OTLP_ENDPOINTMCP 服务自身的跟踪和指标所用的 OTLP gRPC 端点。未配置 OTLP 端点/导出器时,内部遥测导出会被禁用。对于明文收集器,请使用 http://localhost:4317 这类 http:// 端点。否
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT跟踪专用的 OTLP gRPC 端点;对跟踪数据而言,会覆盖 OTEL_EXPORTER_OTLP_ENDPOINT。否
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT指标专用的 OTLP gRPC 端点;对指标而言,会覆盖 OTEL_EXPORTER_OTLP_ENDPOINT。否
OTEL_TRACES_EXPORTER设置为 none,可在已配置 OTLP 端点时仍禁用内部跟踪导出。否
OTEL_METRICS_EXPORTER设置为 none,可在已配置 OTLP 端点时仍禁用内部指标导出和运行时指标。否
MCP 服务不会运行 OTLP 日志导出器;日志会以 JSON 格式写入 stderr。因此不会使用 OTEL_LOGS_EXPORTER。
自托管 SigNoz 的浏览器链接

注意: 在 SigNoz 服务上设置 global.external_url,使其指向用户在浏览器中打开的 URL。MCP 服务会从 GET /api/v1/global/config 读取此值,因此只需在一处配置实例 URL。

例如,将此环境变量添加到 SigNoz 部署中,然后重启 SigNoz:

SIGNOZ_GLOBAL_EXTERNAL__URL=https://observe.example.com

URL 前面有两个下划线。等效的 SigNoz YAML 配置如下:

global:
  external_url: https://observe.example.com

将 MCP 服务上的 SIGNOZ_URL 设置为其可访问的 API 地址,例如 http://signoz:8080。如果部署使用了路径前缀,请根据 SigNoz 和代理路由的要求,将其包含在 API 地址中。在 SIGNOZ_URL 中配置后端路径:目前,通过 OAuth 或 X-SigNoz-URL 提供的每请求 URL 仅支持来源地址。

浏览器链接使用发现的 URL(包括已配置的基础路径),而 API 请求保留其目标地址和凭据。每个租户客户端会缓存发现结果 15 分钟。如果未设置外部 URL,则使用请求的 API URL;如果全局配置不可用或无效,则会记录警告,并在一分钟后重试发现。身份验证和权限错误会返回给客户端。

Claude Desktop 扩展

构建安装包

需要 Node.js。详情请参阅 Anthropic MCPB。

make bundle
安装
  1. 打开 Claude Desktop → 设置 → 开发者 → 编辑配置 → 添加 bundle.mcpb
  2. 选择 ./bundle/bundle.mcpb
  3. 输入 SIGNOZ_URL、SIGNOZ_API_KEY,以及可选的 LOG_LEVEL
  4. 重启 Claude Desktop

如需使用浏览器链接,请配置 SigNoz 的全局外部 URL。

端到端测试

tests/ 下的端到端测试套件会使用工作树构建的服务,针对由 foundry 配置的真实 SigNoz 实例运行,并通过 MCP HTTP 传输与其交互:

make test-e2e          # cast SigNoz, run the suites, tear down
make test-e2e-reuse    # rerun against the cached environment

需要 Docker、foundryctl、Go 和 uv。完整工作流请参阅 tests/README.md。

架构

有关请求流、组件交互和设计决策的详细概述,请参阅 docs/architecture.md。

贡献

有关开发工作流、MCP 变更所需的文档/清单同步以及 PR 检查清单,请参阅 CONTRIBUTING.md。

为可观测性社区倾情打造 ❤️

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。