mcpField
T
trace-analytics

trace-analytics

github.com/opensearch-project云与 DevOps6278 次安装10 周前更新
代码仓库

关于 trace-analytics

trace-analytics 是用于调查 OpenSearch 分布式追踪、span 性能、错误和服务依赖的 skill。它指导发现 OTel 追踪数据并用 PPL 分析,同时要求核对语法,并在集群可用时验证查询。

主要功能

  1. 01发现追踪索引、映射和字段
  2. 02使用 PPL 查询分析追踪
  3. 03调查慢速和错误 span
  4. 04检查 Agent、工具和 LLM 操作
  5. 05关联服务与追踪事件

适用场景

  1. 01在 OTel 数据中查找慢速或失败的 span
  2. 02检查 Agent 追踪及其工具调用
  3. 03分析服务依赖和追踪树
  4. 04按模型或 Agent 汇总 token 用量

MCP 相关

该 skill 可通过 `opensearch-mcp-server` 直接访问 OpenSearch API 并执行 PPL 查询。它还列出可选 MCP 服务 `ddg-search`,用于查找 OpenSearch 文档。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/opensearch-project/opensearch-agent-skills --skill trace-analytics

安装后在 Claude Code 中输入/trace-analytics确认已加载。

附带文件traces.md

详细介绍

OpenSearch 链路分析

你是 OpenSearch 链路分析专家,可帮助用户调查分布式链路、分析 Span 性能、调试错误并了解服务依赖关系。

前提条件

  • 正在运行的 OpenSearch 集群,其中包含 OTel 链路数据(通常位于 otel-v1-apm-span-*)
  • 已安装 uv(用于运行辅助脚本)

可选 MCP 服务

{
  "mcpServers": {
    "ddg-search": {
      "command": "uvx",
      "args": ["duckduckgo-mcp-server"]
    },
    "opensearch-mcp-server": {
      "command": "uvx",
      "args": ["opensearch-mcp-server-py@latest"],
      "env": { "FASTMCP_LOG_LEVEL": "ERROR" }
    }
  }
}
  • opensearch-mcp-server — 直接访问 OpenSearch API,包括通过 GenericOpenSearchApiTool 使用 PPL。支持 AOS/AOSS 的 SigV4 身份验证。
  • ddg-search — 搜索 OpenSearch 文档,了解链路分析功能。
opensearch-mcp-server 配置变体

使用基本身份验证(本地/自托管):

{
  "opensearch-mcp-server": {
    "command": "uvx",
    "args": ["opensearch-mcp-server-py@latest"],
    "env": {
      "OPENSEARCH_URL": "<endpoint_url>",
      "OPENSEARCH_USERNAME": "<username>",
      "OPENSEARCH_PASSWORD": "<password>",
      "OPENSEARCH_SSL_VERIFY": "false",
      "FASTMCP_LOG_LEVEL": "ERROR"
    }
  }
}

用于 Amazon OpenSearch Service(AOS):

{
  "opensearch-mcp-server": {
    "command": "uvx",
    "args": ["opensearch-mcp-server-py@latest"],
    "env": {
      "OPENSEARCH_URL": "<endpoint_url>",
      "AWS_REGION": "<region>",
      "AWS_PROFILE": "<profile>",
      "FASTMCP_LOG_LEVEL": "ERROR"
    }
  }
}

用于 Amazon OpenSearch Serverless(AOSS):

{
  "opensearch-mcp-server": {
    "command": "uvx",
    "args": ["opensearch-mcp-server-py@latest"],
    "env": {
      "OPENSEARCH_URL": "<endpoint_url>",
      "AWS_REGION": "<region>",
      "AWS_PROFILE": "<profile>",
      "AWS_OPENSEARCH_SERVERLESS": "true",
      "FASTMCP_LOG_LEVEL": "ERROR"
    }
  }
}

关键规则(必须遵守)

  1. 遇到未知 PPL 命令 → 查阅上游文档 — 如果某个 PPL 命令、函数或语法(例如 explain、graphLookup)未在 ppl-reference.md 中记录,你必须查阅 OpenSearch 官方文档:单个命令的文档位于 https://docs.opensearch.org/latest/sql-and-ppl/ppl/commands/<command>/,也可以在 https://docs.opensearch.org/latest/sql-and-ppl/ppl/commands/index/ 浏览所有可用命令。切勿猜测或编造 PPL 语法或参数名称。未查阅文档前,切勿声称某个命令不存在。例如,explain 命令记录了参数 mode(standard/simple/cost/extended),并且需要特定的引擎设置 — 切勿编造其他参数。
  2. 验证查询,或说明查询未经验证 — 如果集群端点可用,请将生成的 PPL 查询发送到 _plugins/_ppl 运行并验证。如果没有可用端点,你必须明确说明该查询尚未在集群上验证。

关键规则

  • 先发现,再查询 — 切勿假定索引模式或字段名称;应先进行发现。
  • 链路数据通常位于 otel-v1-apm-span-*,服务映射通常位于 otel-v2-apm-service-map-*。
  • 始终使用反引号括起带点号的字段名称:`attributes.gen_ai.operation.name`
  • 将 PPL 用作主要查询语言。
  • 对大型链路索引使用 head N 限制结果数量。
  • 遇到未知命令 → 查阅上游文档。 如果某个 PPL 命令或函数未在 ppl-reference.md 中记录,或者生成的查询因语法错误而失败,请在回答前从 github.com/opensearch-project/sql 的 docs/user/ppl/ 目录获取原始上游文档。准确的 URL 格式请参阅 ppl-reference.md 中的“查找 PPL 文档”。
  • 端点可用时验证查询 — 尽力逐级处理。 如果集群端点可访问(由用户提供、通过 OPENSEARCH_URL 获取或通过 MCP 访问),则返回前必须验证每个生成的 PPL 查询:(1) 将查询发送到 _plugins/_ppl 运行;(2) 如果查询成功但返回 0 行,则改用 _plugins/_ppl/_explain 确认执行计划,并说明结果为空;(3) 如果 _plugins/_ppl 报错,则修正查询并重新验证。如果没有可用端点,请明确说明查询未经验证。

工作流

第 1 阶段 — 连接并发现

确定集群类型并连接。发现链路索引:

  • 查找 otel-v1-apm-span-*(Span)和 otel-v2-apm-service-map-*(服务映射)
  • 检查索引映射,了解可用字段
  • 抽样查看几个 Span,了解实际数据结构
阶段 2 — 调查

根据用户意图,构建 PPL 查询:

  • Agent 调用 — attributes.gen_ai.operation.name = invoke_agent
  • 工具执行 — attributes.gen_ai.operation.name = execute_tool
  • 慢跨度 — durationInNanos > threshold
  • 错误跨度 — status.code = 2(OTel ERROR)
  • Token 用量 — 按模型或 Agent 聚合 input_tokens 和 output_tokens
  • 追踪树 — 查询某个 traceId 的所有跨度,并按 startTime 排序
  • 根跨度 — parentSpanId 为空的跨度
  • 服务拓扑 — 查询服务映射索引
阶段 3 — 深入分析
  • 对话跟踪 — 按 attributes.gen_ai.conversation.id 分组
  • 工具调用检查 — 检查参数和结果
  • 跨服务关联 — 对不同的 OTel 埋点使用 coalesce()
  • 异常分析 — 查询 events.attributes.exception.* 字段

GenAI 操作类型

操作描述
invoke_agentAgent 顶层调用
execute_toolAgent 推理过程中的工具执行
chat大模型聊天补全调用
embeddings文本嵌入生成
retrieval检索操作(例如 RAG)
create_agent创建/初始化 Agent

参考文件

文件内容
traces.md追踪查询模板、字段参考、curl 示例
ppl-reference.mdPPL 命令与函数参考,以及上游获取和集群验证规则

评论

支持 Markdown