随着大模型技术的快速发展,我们对可观测性数据的查询方式也在发生变革。本文将带你体验如何利用 Dynatrace MCP Server,通过自然语言查询 Dynatrace 中收集的 OpenTelemetry (OTel) 数据。我们将深入探讨 MCP Server 的配置、使用方法,并分享实践中遇到的问题与解决方案,让你也能轻松驾驭这项强大的技术。
1. 为什么选择 MCP Server + 自然语言查询 OTel 数据?
传统的可观测性数据查询往往需要掌握复杂的查询语言,例如 DQL。这对于不熟悉这些语言的开发人员来说,无疑是一道门槛。而 MCP Server 的出现,为我们提供了一种全新的选择:通过自然语言与可观测性平台进行交互。
MCP Server 充当了 大模型 和可观测性平台之间的桥梁,它接收来自 大模型 的自然语言查询请求,将其转化为平台可以理解的查询语言(例如 DQL),然后将查询结果返回给 大模型,最终以自然语言的形式呈现给用户。
这种方式的优势在于:
- 降低学习成本:无需学习复杂的查询语言,直接使用自然语言即可进行查询。
- 提高查询效率:大模型 可以理解自然语言中的意图,并自动生成相应的查询语句,节省了手动编写查询语句的时间。
- 扩展查询能力:大模型 可以结合上下文信息,进行更复杂的查询和分析,从而发现隐藏在数据中的关联关系。
2. Dynatrace MCP Server:快速配置与上手
本文以 Dynatrace MCP Server 为例,演示如何实现自然语言查询 OpenTelemetry 数据。Dynatrace MCP Server 允许你使用 GitHub Copilot 等工具,通过自然语言与 Dynatrace 进行交互,从而查询 OTel 数据。
2.1 环境准备
在开始之前,请确保你已经完成了以下准备工作:
- Dynatrace 租户:你需要一个 Dynatrace 租户来存储和查询 OTel 数据。
- OpenTelemetry Demo App:如果你还没有 OTel 数据,可以使用 OpenTelemetry Demo App 向 Dynatrace 发送数据。
- VSCode:推荐使用 VSCode 作为开发环境,因为它提供了 GitHub Copilot 的集成。
- GitHub Copilot:你需要安装并启用 GitHub Copilot 插件,并确保它处于 Agent 模式。
- NodeJS 和 npm:Dynatrace MCP Server 依赖 NodeJS 和 npm,请确保你的环境中已经安装了它们。
2.2 配置 MCP Server
-
创建 mcp.json 文件:在你的 VSCode 项目根目录下创建一个
.vscode
文件夹,然后在其中创建一个mcp.json
文件。mkdir .vscode touch .vscode/mcp.json
-
添加 Dynatrace MCP Server 配置:将以下配置添加到
mcp.json
文件中。{ "servers": { "npx-dynatrace-mcp-server": { "type": "stdio", "command": "npx", "args": ["-y", "@dynatrace-oss/dynatrace-mcp-server@latest"], "envFile": "${workspaceFolder}/.env" } } }
servers
:根配置元素,用于定义所有的 MCP Server。npx-dynatrace-mcp-server
:MCP Server 的名称,可以自定义。type
:连接类型,stdio
表示 MCP Server 将在本地运行。command
:运行 MCP Server 的命令,npx
用于运行 npm 包。args
:传递给npx
命令的参数,-y
表示自动安装依赖,@dynatrace-oss/dynatrace-mcp-server@latest
表示要运行的 MCP Server 包。envFile
:环境变量文件,包含了连接 Dynatrace 所需的凭据。
-
配置 .env 文件:在项目根目录下创建一个
.env
文件,并添加以下环境变量。OAUTH_CLIENT_ID="<your_dt_oauth_client_id>" OAUTH_CLIENT_SECRET="<your_dt_oauth_secret>" DT_ENVIRONMENT="https://<your_dt_tenant>.apps.dynatrace.com" DT_API_TOKEN="<your_dt_api_token>"
OAUTH_CLIENT_ID
和OAUTH_CLIENT_SECRET
:Dynatrace OAuth 客户端 ID 和密钥,用于身份验证。DT_ENVIRONMENT
:你的 Dynatrace 租户的 URL。DT_API_TOKEN
:Dynatrace API token,用于授权访问 Dynatrace API。
注意:你需要创建一个 Dynatrace OAuth 客户端,并生成一个具有必要权限的 API token。
-
启动 MCP Server:在 VSCode 中打开
mcp.json
文件,你应该看到 MCP Server 名称上方有一个 “Start” 按钮。点击该按钮启动 MCP Server。启动成功后,”Start” 按钮会变为 “Running”。
3. 使用自然语言查询 OpenTelemetry 数据
配置完成后,你就可以使用 GitHub Copilot 通过自然语言查询 Dynatrace 中的 OpenTelemetry 数据了。
3.1 打开 GitHub Copilot Chat
点击 VSCode 侧边栏中的 “Chat” 图标,然后选择 “Open Chat” 打开 GitHub Copilot Chat 窗口。
3.2 使用自然语言提问
在 Chat 窗口中,你可以使用自然语言提出你的问题。例如:
- “How many unique services are running in Dynatrace?” (Dynatrace 中正在运行多少个不同的服务?)
- “List all of the logs under the most recent trace_id” (列出最近 trace_id 下的所有日志)
- “What’s the average response time for the currency service?” (货币服务的平均响应时间是多少?)
- “What does this DQL query do: timeseries { sum(apprecommendationscounter), value.A = avg(apprecommendationscounter, scalar: true) }” (这条 DQL 查询语句做什么?)
3.3 查看查询结果
GitHub Copilot 会将你的自然语言查询转化为 DQL 查询语句,并将其发送到 Dynatrace MCP Server。MCP Server 会执行该查询,并将结果返回给 GitHub Copilot,最终以自然语言的形式呈现给你。
3.4 案例分析
让我们通过一个实际案例来演示如何使用自然语言查询 OpenTelemetry 数据。
假设你的应用程序出现了性能问题,你想要找出导致问题的根本原因。你可以首先使用以下自然语言查询:
"Show me the slowest traces in the last 5 minutes"
(显示过去 5 分钟内最慢的 trace)
GitHub Copilot 会生成如下 DQL 查询语句:
fetch traces
| sort by duration desc
| limit 10
| filter timerange(5m)
该查询语句会返回过去 5 分钟内持续时间最长的 10 个 trace。你可以查看这些 trace 的详细信息,例如 span 的持续时间、错误信息等,从而找出导致性能问题的瓶颈。
如果你发现某个 trace 包含了大量的错误日志,你可以使用以下自然语言查询:
"Show me all the logs for trace with id <trace_id>"
(显示 trace id 为 的 所有日志)
将 替换为实际的 trace id。GitHub Copilot 会生成相应的 DQL 查询语句,并返回该 trace 包含的所有日志。你可以分析这些日志,找出导致错误的原因。
4. 实践中的问题与解决方案
在使用 Dynatrace MCP Server 进行自然语言查询的过程中,你可能会遇到一些问题。以下是一些常见问题及其解决方案:
-
缺少 NodeJS 和 npm:如果你没有安装 NodeJS 和 npm,请先安装它们。你可以从 NodeJS 官网下载安装包,或者使用包管理器(例如 apt、yum)进行安装。
-
GitHub Copilot 无法连接到 MCP Server:请确保你的 MCP Server 已经启动,并且 GitHub Copilot 处于 Agent 模式。你可以在 VSCode 的 “Output” 窗口中查看 MCP Server 的日志,以了解其运行状态。
-
MCP Server 启动失败:请检查你的
.env
文件中的环境变量是否正确。特别是,请确保你的DT_API_TOKEN
具有必要的权限。 -
自然语言查询结果不准确:大模型 对自然语言的理解可能存在偏差,导致生成的 DQL 查询语句不符合你的预期。在这种情况下,你可以尝试修改你的自然语言查询,使其更加明确。你也可以查看 GitHub Copilot 生成的 DQL 查询语句,并手动修改它,以获得更准确的结果。
-
API Token 过期:Dynatrace API Token 有效期有限,如果 API Token 过期,MCP Server 将无法连接到 Dynatrace。你需要重新生成 API Token,并将其更新到
.env
文件中。 -
查询字段名称不匹配:在使用自然语言查询时,需要注意查询字段的名称是否与 Dynatrace 中实际的字段名称匹配。例如,在查询 trace id 时,应该使用
trace_id
而不是traceId
。
5. MCP Server 的未来展望
Dynatrace MCP Server 仍然是一项新兴技术,但它具有巨大的潜力。随着 大模型 技术的不断发展,我们可以期待 MCP Server 在以下方面取得更大的突破:
- 更强大的自然语言理解能力:未来的 MCP Server 将能够更好地理解自然语言中的意图,并生成更准确、更复杂的查询语句。
- 更广泛的应用场景:MCP Server 不仅可以用于查询 OpenTelemetry 数据,还可以用于管理 Dynatrace 配置、自动化运维任务等。
- 更智能的告警和分析:MCP Server 可以结合 大模型 的分析能力,对可观测性数据进行智能告警和分析,从而帮助开发人员更快地发现和解决问题。
6. 总结
通过本文的介绍,相信你已经对 Dynatrace MCP Server 有了一定的了解。MCP Server 结合 大模型 技术,使得利用自然语言查询 OpenTelemetry 数据 成为可能,极大地降低了可观测性数据查询的门槛。虽然目前 MCP Server 仍处于发展阶段,但其强大的潜力和广阔的应用前景值得我们期待。希望本文能够帮助你快速上手 Dynatrace MCP Server,并利用这项技术提升你的可观测性分析能力。 让我们一起拥抱 大模型 时代,利用 自然语言 探索 OpenTelemetry 数据的无限可能!