不再淹没在仪表板中。开始与您的遥测数据进行对话。
现代应用程序通过OpenTelemetry生成大量的可观测性数据——追踪、指标和日志,这些数据包含了每一个运营问题的答案。但找到这些答案需要导航复杂的查询语言,构建自定义仪表板,并手动关联不同数据类型中的信号。
如果您可以直接提问呢?
这个MCP服务器弥合了AI助手与您的OpenTelemetry数据之间的差距,使您能够以自然语言与整个可观测性堆栈进行交互:
OpenTelemetry (OTEL) 是一个行业标准框架,用于从您的应用程序收集和管理遥测数据。它提供了一种供应商中立的方式来对应用程序进行工具化、生成、收集和导出遥测数据。
OpenTelemetry捕获三种基本类型的遥测数据:
传统的监控工具经常将您锁定在专有格式中。OpenTelemetry打破了这些孤岛,通过以下方式:
虽然OpenTelemetry解决了数据收集的问题,但分析这些数据仍然需要专业知识。这个MCP服务器使您的OpenTelemetry数据变得可以对话:
了解更多:
传统的可观测性工具擅长收集和存储数据,但仍需要人类专业知识来提取见解。通过将AI直接连接到您的遥测数据,您可以获得:
当凌晨三点发生故障时,您没有时间去构建复杂的查询。让AI用自然语言调查错误模式,跟踪系统中的故障,并确定根本原因。
无需设置数百个静态警报,让AI持续分析您的数据以查找异常。询问诸如“今天的流量中是否有任何不寻常的模式?”等问题,并基于历史基线获得智能分析。
您的团队中并非每个人都是查询专家。有了自然语言访问,开发人员、SRE和产品经理都可以探索系统行为,而无需学习复杂的查询语言。
在审查代码或设计功能时,开发人员可以立即检查类似代码在生产中的表现,它产生的错误以及它如何影响系统性能。
此服务器实现了模型上下文协议(MCP),为AI助手提供了与存储在Elasticsearch/OpenSearch中的OpenTelemetry数据进行结构化交互的接口。当您提出一个问题时,AI:
在您的MCP设置中添加以下内容:
{
"mcpServers": {
"otel-mcp-server": {
"command": "npx",
"args": ["-y", "otel-mcp-server"],
"env": {
"OPENSEARCH_URL": "http://localhost:9200",
"USERNAME": "elastic",
"PASSWORD": "changeme",
"OPENAI_API_KEY": "sk-..." // 可选:用于ML功能
}
}
}
}
注意:您可以使用ELASTICSEARCH_URL或OPENSEARCH_URL中的任何一个——两者都适用。
# 克隆并安装
git clone https://github.com/ryanwith/melchi.git
cd melchi
npm install
# 配置您的连接
cp .env.example .env
# 编辑.env以包含您的Elasticsearch详细信息
# 构建并运行
npm run build
# 使用直接node命令运行dist/server.js集成到您的MCP客户端
您: "显示具有高延迟的服务依赖关系"
AI: 我将分析服务依赖及其性能指标。
[AI 执行依赖分析并返回]:
找到了15个服务依赖关系。以下是关键的几个:
1. checkout-service → payment-service
- 平均延迟:450毫秒(第95百分位:1200毫秒)
- 错误率:2.3%
- 调用量:每分钟1,250次调用
2. frontend → recommendation-service
- 平均延迟:890毫秒(第95百分位:2100毫秒)
- 错误率:0.5%
- 调用量:每分钟3,400次调用
- ⚠️ 这是一个瓶颈——高延迟影响用户体验
推荐服务是主要瓶颈,其第95百分位延迟超过2秒。
您: "为什么今天的结账服务变慢了?"
AI: 我将分析结账服务的性能。让我:
1. 检查延迟异常
2. 识别缓慢的操作
3. 查找错误模式
[AI 执行查询并返回]:
结账服务在支付处理操作上经历了三倍于正常水平的延迟。
这种情况从下午2:15开始,并与来自支付网关的错误率增加相关。
该服务在5秒后超时,导致级联故障。
您: "查找过去一小时内的所有身份验证失败"
AI: 我将在日志和追踪中搜索身份验证失败。
[AI 执行查询并返回]:
在过去一小时内发现了847个身份验证失败:
- 92%是来自移动应用(v2.3.1)的“无效令牌”错误
- 失败每15分钟激增一次,表明存在令牌刷新问题
- 所有失败都源自三个特定的API端点
- 这种模式始于下午1:30的部署后
使用真实的微服务数据测试:
# 使用Kubernetes部署OTEL演示
kubectl create namespace otel-demo
helm install demo open-telemetry/opentelemetry-demo -n otel-demo --values demo/otel-demo-values.yaml
# 端口转发OpenSearch
kubectl port-forward -n elastic svc/opensearch 9200:9200
# 使用以下环境变量启动您的MCP客户端:
# OPENSEARCH_URL=http://localhost:9200
一旦连接,探索您的数据:
要启用ML功能,请设置OPENAI_API_KEY环境变量。
我们欢迎贡献!最大的贡献是尝试它,并根据贡献指南提交问题。对于直接贡献,无论是添加新的分析工具、改进查询能力还是增强文档,您的意见有助于使可观测性对所有人来说更加容易获取。
MIT许可证 - 为OpenTelemetry社区打造,充满爱心
准备好改变您与可观测性数据互动的方式了吗? 今天就开始与您的遥测数据进行对话吧。