|
1 | | - # OpenTelemetry MCP Instrumentation |
| 1 | +# OpenTelemetry MCP Instrumentation |
2 | 2 |
|
3 | 3 | ## 概述 |
4 | 4 |
|
@@ -76,7 +76,7 @@ MCPClientInstrumentor().instrument( |
76 | 76 |
|
77 | 77 | ### Spans |
78 | 78 |
|
79 | | -每个MCP操作都会生成相应的span: |
| 79 | +每个MCP操作都会生成相应的span,完全符合OpenTelemetry规范: |
80 | 80 |
|
81 | 81 | #### 标准命名格式(符合OpenTelemetry MCP语义约定) |
82 | 82 | - `mcp.client.initialize` - 客户端初始化 |
@@ -123,6 +123,91 @@ MCPClientInstrumentor().instrument( |
123 | 123 | - `mcp.resource.uri` - 资源URI |
124 | 124 | - `status` - 操作状态(success/error) |
125 | 125 |
|
| 126 | +## 业务意义说明 |
| 127 | + |
| 128 | +### Spans 业务意义 |
| 129 | + |
| 130 | +#### 1. `mcp.client.initialize` |
| 131 | +**业务意义**: 追踪MCP客户端与服务器的初始化过程 |
| 132 | +- **用途**: 监控连接建立时间、协议版本兼容性 |
| 133 | +- **关键指标**: 初始化耗时、成功率、协议版本信息 |
| 134 | + |
| 135 | +#### 2. `mcp.client.list_tools` |
| 136 | +**业务意义**: 追踪获取可用工具列表的操作 |
| 137 | +- **用途**: 监控工具发现过程、可用工具数量 |
| 138 | +- **关键指标**: 工具列表获取时间、工具数量、工具类型分布 |
| 139 | + |
| 140 | +#### 3. `mcp.client.call_tool` |
| 141 | +**业务意义**: 追踪工具调用的执行过程 |
| 142 | +- **用途**: 监控工具执行性能、参数传递、结果处理 |
| 143 | +- **关键指标**: 工具执行时间、参数大小、结果大小、成功率 |
| 144 | + |
| 145 | +#### 4. `mcp.client.read_resource` |
| 146 | +**业务意义**: 追踪资源读取操作 |
| 147 | +- **用途**: 监控资源访问性能、内容大小、资源类型 |
| 148 | +- **关键指标**: 资源读取时间、资源大小、内容类型分布 |
| 149 | + |
| 150 | +#### 5. `mcp.client.send_ping` |
| 151 | +**业务意义**: 追踪连接健康检查 |
| 152 | +- **用途**: 监控连接状态、网络延迟 |
| 153 | +- **关键指标**: Ping响应时间、连接稳定性 |
| 154 | + |
| 155 | +### Metrics 业务意义 |
| 156 | + |
| 157 | +#### 1. `mcp.client.operation.duration` |
| 158 | +**业务意义**: 监控所有MCP操作的执行时间 |
| 159 | +- **用途**: 性能分析、瓶颈识别、SLA监控 |
| 160 | +- **应用场景**: |
| 161 | + - 识别慢操作 |
| 162 | + - 性能趋势分析 |
| 163 | + - 容量规划 |
| 164 | + |
| 165 | +#### 2. `mcp.client.operation.count` |
| 166 | +**业务意义**: 统计MCP操作的调用次数 |
| 167 | +- **用途**: 使用量监控、错误率统计、业务活跃度 |
| 168 | +- **应用场景**: |
| 169 | + - 业务活跃度监控 |
| 170 | + - 错误率计算 |
| 171 | + - 使用模式分析 |
| 172 | + |
| 173 | +#### 3. `mcp.client.connection.duration` |
| 174 | +**业务意义**: 监控连接建立时间 |
| 175 | +- **用途**: 网络性能分析、连接优化 |
| 176 | +- **应用场景**: |
| 177 | + - 网络延迟监控 |
| 178 | + - 连接池优化 |
| 179 | + - 服务器性能评估 |
| 180 | + |
| 181 | +#### 4. `mcp.client.connection.count` |
| 182 | +**业务意义**: 统计连接建立次数 |
| 183 | +- **用途**: 连接模式分析、资源使用监控 |
| 184 | +- **应用场景**: |
| 185 | + - 连接频率监控 |
| 186 | + - 资源使用分析 |
| 187 | + - 异常连接检测 |
| 188 | + |
| 189 | +### 关键属性业务意义 |
| 190 | + |
| 191 | +#### 请求/响应相关 |
| 192 | +- **`mcp.request.size`**: 监控请求数据量,用于网络带宽分析和性能优化 |
| 193 | +- **`mcp.response.size`**: 监控响应数据量,用于存储和传输成本分析 |
| 194 | +- **`mcp.response.type`**: 分析响应类型分布,了解业务模式 |
| 195 | + |
| 196 | +#### 工具调用相关 |
| 197 | +- **`mcp.tool.name`**: 识别最常用的工具,优化热门工具性能 |
| 198 | +- **`mcp.tool.arguments`**: 分析工具调用模式,优化参数传递 |
| 199 | +- **`mcp.tools.count`**: 监控可用工具数量,评估服务完整性 |
| 200 | + |
| 201 | +#### 资源访问相关 |
| 202 | +- **`mcp.resource.uri`**: 分析资源访问模式,优化热门资源 |
| 203 | +- **`mcp.resource.size`**: 监控资源大小,用于存储规划 |
| 204 | +- **`mcp.contents.count`**: 分析资源内容复杂度 |
| 205 | + |
| 206 | +#### 错误处理相关 |
| 207 | +- **`mcp.error.message`**: 详细错误信息,用于问题诊断 |
| 208 | +- **`mcp.error.type`**: 错误类型分类,用于错误模式分析 |
| 209 | +- **`mcp.error.code`**: 标准化错误代码,用于自动化处理 |
| 210 | + |
126 | 211 | ## 开发 |
127 | 212 |
|
128 | 213 | ### 运行测试 |
|
0 commit comments