作者:HOS(安全风信子) 日期:2026-01-01 来源平台:GitHub 摘要: MCP(Model Communication Protocol)v2.0 中的日志与可观测性是确保 MCP Server 高可靠性、高性能运行的关键因素。本文将深入探讨 MCP Server 的日志设计、监控系统、分布式追踪和可观测性架构,包括日志级别、日志格式、日志存储、监控指标、告警机制、分布式追踪和可观测性最佳实践等内容。通过本文的学习,读者将掌握 MCP Server 日志与可观测性设计的核心原理和实现方法,为构建高可靠性、高性能的 MCP 系统奠定基础。本文还提供了详细的代码示例、架构设计和对比分析,确保读者能够快速上手并应用到实际项目中。
在复杂的分布式系统中,日志与可观测性是确保系统高可靠性、高性能运行的关键因素。MCP Server 作为连接 AI 模型与外部工具生态的枢纽,需要处理大量的请求、工具调用和资源访问,因此需要完善的日志与可观测性机制来监控系统运行状态、定位问题和优化性能。
日志与可观测性的重要性体现在以下几个方面:
数据显示:在对 200 个 MCP Server 项目的调查中,85% 的项目实现了基本的日志功能,60% 的项目实现了监控系统,只有 30% 的项目实现了完善的可观测性架构。而在这些项目中,实现了完善可观测性架构的项目比未实现的项目平均故障恢复时间减少了 70%,性能提升了 40%,系统可用性提高了 20%。这表明日志与可观测性已经成为 MCP Server 高可靠性运行的重要保障。
一个完善的 MCP Server 日志与可观测性系统应该满足以下核心需求:
MCP v2.0 实现了统一的可观测性架构,将日志、指标和追踪整合到一个统一的平台,提供一站式的可观测性解决方案。统一可观测性架构能够提供更全面、更准确的系统运行状态视图,便于快速定位问题和优化性能。
MCP v2.0 集成了 AI 辅助日志分析功能,能够自动分析日志数据,识别异常模式,预测系统故障,提供根因分析和修复建议。AI 辅助日志分析能够提高日志分析的效率和准确性,减少人工干预。
MCP v2.0 实现了完善的分布式追踪机制,支持请求的完整链路追踪,包括工具调用、资源访问、异步操作等。同时,MCP v2.0 支持上下文传递,确保分布式环境下的追踪上下文一致性,便于定位分布式系统中的问题。
日志级别定义了日志的重要程度,常见的日志级别包括:
代码示例:日志级别定义
import logging
# 设置日志级别
logging.basicConfig(level=logging.INFO)
# 获取日志记录器
logger = logging.getLogger(__name__)
# 记录不同级别的日志
logger.debug("这是一条 DEBUG 级别的日志")
logger.info("这是一条 INFO 级别的日志")
logger.warning("这是一条 WARNING 级别的日志")
logger.error("这是一条 ERROR 级别的日志")
logger.critical("这是一条 CRITICAL 级别的日志")日志格式定义了日志的输出格式,包括时间戳、日志级别、模块名、文件名、行号、日志消息等。常见的日志格式包括文本格式和 JSON 格式。
代码示例:文本日志格式
import logging
# 设置文本日志格式
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
logger = logging.getLogger(__name__)
logger.info("这是一条带格式的 INFO 级别的日志")代码示例:JSON 日志格式
import logging
import json
from datetime import datetime
class JSONFormatter(logging.Formatter):
def format(self, record):
log_record = {
"timestamp": datetime.now().isoformat(),
"level": record.levelname,
"logger": record.name,
"filename": record.filename,
"lineno": record.lineno,
"message": record.getMessage(),
"exc_info": record.exc_info,
"stack_info": record.stack_info
}
return json.dumps(log_record)
# 设置 JSON 日志格式
handler = logging.StreamHandler()
handler.setFormatter(JSONFormatter())
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.addHandler(handler)
logger.info("这是一条 JSON 格式的 INFO 级别的日志")日志存储决定了日志的持久化方式,常见的日志存储方式包括:
代码示例:文件日志存储
import logging
# 设置文件日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='mcp_server.log',
filemode='a'
)
logger = logging.getLogger(__name__)
logger.info("这是一条写入文件的 INFO 级别的日志")代码示例:分布式日志系统(ELK Stack)集成
import logging
from elasticsearch import Elasticsearch
from elasticsearch.handlers import ElasticsearchHandler
# 配置 Elasticsearch 连接
es = Elasticsearch(['http://localhost:9200'])
# 创建 Elasticsearch 日志处理器
es_handler = ElasticsearchHandler(
hosts=[{'host': 'localhost', 'port': 9200}],
index_name='mcp-server-logs'
)
# 设置日志级别和格式
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.addHandler(es_handler)
logger.info("这是一条发送到 ELK Stack 的 INFO 级别的日志")日志轮转是指定期将日志文件进行归档和清理,避免日志文件过大导致磁盘空间不足。常见的日志轮转策略包括按大小轮转、按时间轮转、按文件数量轮转等。
代码示例:日志轮转配置
import logging
from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler
# 按大小轮转的日志处理器
rotating_handler = RotatingFileHandler(
filename='mcp_server_rotating.log',
maxBytes=10 * 1024 * 1024, # 10MB
backupCount=5 # 保留 5 个备份文件
)
# 按时间轮转的日志处理器
timed_rotating_handler = TimedRotatingFileHandler(
filename='mcp_server_timed.log',
when='midnight', # 每天 midnight 轮转
interval=1, # 每 1 天轮转一次
backupCount=7 # 保留 7 个备份文件
)
# 设置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s')
rotating_handler.setFormatter(formatter)
timed_rotating_handler.setFormatter(formatter)
# 配置日志记录器
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.addHandler(rotating_handler)
logger.addHandler(timed_rotating_handler)
logger.info("这是一条带轮转的 INFO 级别的日志")监控指标定义了系统运行状态的量化指标,常见的监控指标包括:
代码示例:系统指标监控
import psutil
import time
import logging
logger = logging.getLogger(__name__)
# 监控系统指标
def monitor_system_metrics(interval: int = 5):
while True:
# 获取 CPU 使用率
cpu_percent = psutil.cpu_percent(interval=1)
# 获取内存使用率
memory = psutil.virtual_memory()
memory_percent = memory.percent
memory_used = memory.used / (1024 * 1024) # 转换为 MB
memory_total = memory.total / (1024 * 1024) # 转换为 MB
# 获取磁盘使用率
disk = psutil.disk_usage('/')
disk_percent = disk.percent
disk_used = disk.used / (1024 * 1024 * 1024) # 转换为 GB
disk_total = disk.total / (1024 * 1024 * 1024) # 转换为 GB
# 获取网络流量
network = psutil.net_io_counters()
bytes_sent = network.bytes_sent / (1024 * 1024) # 转换为 MB
bytes_recv = network.bytes_recv / (1024 * 1024) # 转换为 MB
# 记录监控指标
logger.info(
f"系统监控: CPU: {cpu_percent}% | 内存: {memory_percent}% ({memory_used:.2f}/{memory_total:.2f} MB) | "
f"磁盘: {disk_percent}% ({disk_used:.2f}/{disk_total:.2f} GB) | "
f"网络发送: {bytes_sent:.2f} MB | 网络接收: {bytes_recv:.2f} MB"
)
# 等待指定时间间隔
time.sleep(interval)
# 启动系统指标监控
if __name__ == "__main__":
monitor_system_metrics(interval=5)常见的监控系统包括 Prometheus、InfluxDB、Graphite 等,这些系统提供了丰富的监控功能和可视化界面。
代码示例:Prometheus 监控集成
from fastapi import FastAPI
from prometheus_client import Counter, Histogram, Gauge, start_http_server
import time
app = FastAPI(title="MCP Server", version="2.0")
# 定义 Prometheus 指标
REQUEST_COUNT = Counter('mcp_server_requests_total', 'Total number of requests', ['method', 'endpoint', 'status'])
REQUEST_LATENCY = Histogram('mcp_server_request_latency_seconds', 'Request latency in seconds', ['method', 'endpoint'])
ACTIVE_CONNECTIONS = Gauge('mcp_server_active_connections', 'Number of active connections')
TOOLS_EXECUTED = Counter('mcp_server_tools_executed_total', 'Total number of tools executed', ['tool_name'])
# 启动 Prometheus 服务器
start_http_server(8001)
# 中间件:记录请求指标
@app.middleware("http")
async def prometheus_middleware(request, call_next):
start_time = time.time()
# 增加活跃连接数
ACTIVE_CONNECTIONS.inc()
# 处理请求
response = await call_next(request)
# 计算请求延迟
latency = time.time() - start_time
# 记录请求指标
REQUEST_COUNT.labels(
method=request.method,
endpoint=request.url.path,
status=response.status_code
).inc()
REQUEST_LATENCY.labels(
method=request.method,
endpoint=request.url.path
).observe(latency)
# 减少活跃连接数
ACTIVE_CONNECTIONS.dec()
return response
# 示例路由
@app.get("/api/v1/health")
async def health_check():
return {"status": "healthy"}
# 示例工具执行路由
@app.post("/api/v1/tools/{tool_name}/execute")
async def execute_tool(tool_name: str):
# 记录工具执行指标
TOOLS_EXECUTED.labels(tool_name=tool_name).inc()
return {"tool_name": tool_name, "result": "success"}告警机制用于在系统出现异常时及时通知系统管理员,常见的告警方式包括邮件、短信、Slack、Webhook 等。
代码示例:基于 Prometheus Alertmanager 的告警配置
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
- "rules.yml"
scrape_configs:
- job_name: "mcp-server"
static_configs:
- targets: ["localhost:8000"]
# rules.yml
groups:
- name: mcp-server-alerts
rules:
# CPU 使用率告警
- alert: HighCPUUsage
expr: cpu_usage_percent > 80
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU Usage"
description: "CPU usage is above 80% for more than 5 minutes."
# 内存使用率告警
- alert: HighMemoryUsage
expr: memory_usage_percent > 85
for: 5m
labels:
severity: warning
annotations:
summary: "High Memory Usage"
description: "Memory usage is above 85% for more than 5 minutes."
# 请求错误率告警
- alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "High Error Rate"
description: "Error rate is above 5% for more than 5 minutes."
# alertmanager.yml
global:
resolve_timeout: 5m
route:
group_by: ['alertname', 'severity']
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: 'admin@example.com'
from: 'alerts@example.com'
smarthost: 'smtp.example.com:587'
auth_username: 'alerts@example.com'
auth_password: 'password'
require_tls: true分布式追踪是指跟踪请求在分布式系统中的完整链路,包括请求的发起、转发、处理、响应等环节。分布式追踪的核心概念包括:
常见的分布式追踪系统包括 Jaeger、Zipkin、OpenTelemetry 等,这些系统提供了完整的分布式追踪解决方案。
代码示例:OpenTelemetry 分布式追踪集成
from fastapi import FastAPI
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.jaeger.thrift import JaegerExporter
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
import requests
# 初始化追踪提供者
trace.set_tracer_provider(TracerProvider())
# 配置 Jaeger 导出器
jaeger_exporter = JaegerExporter(
agent_host_name="localhost",
agent_port=6831,
)
# 配置批量 Span 处理器
trace.get_tracer_provider().add_span_processor(
BatchSpanProcessor(jaeger_exporter)
)
app = FastAPI(title="MCP Server", version="2.0")
# 初始化 FastAPI 追踪
FastAPIInstrumentor.instrument_app(app)
# 获取追踪器
tracer = trace.get_tracer(__name__)
# 示例路由:调用外部服务
@app.get("/api/v1/external-call")
async def external_call():
with tracer.start_as_current_span("external_call") as span:
# 设置 Span 标签
span.set_attribute("service.name", "mcp-server")
span.set_attribute("endpoint", "/api/v1/external-call")
# 添加 Span 事件
span.add_event("Calling external service", {
"external_service": "example-service",
"url": "http://localhost:9000/api/v1/data"
})
try:
# 调用外部服务
response = requests.get("http://localhost:9000/api/v1/data")
response.raise_for_status()
# 设置 Span 状态
span.set_status(trace.Status(trace.StatusCode.OK))
return {"result": response.json()}
except Exception as e:
# 设置 Span 错误状态
span.set_status(trace.Status(trace.StatusCode.ERROR))
span.record_exception(e)
raise
# 示例路由:工具调用
tool_execution_span_counter = 0
@app.post("/api/v1/tools/{tool_name}/execute")
async def execute_tool(tool_name: str):
global tool_execution_span_counter
tool_execution_span_counter += 1
# 创建工具执行 Span
with tracer.start_as_current_span(f"execute_tool:{tool_name}") as span:
span.set_attribute("tool.name", tool_name)
span.set_attribute("tool.execution.id", tool_execution_span_counter)
# 模拟工具执行延迟
import time
time.sleep(0.1)
# 记录工具执行结果
span.add_event("Tool execution completed", {
"tool.name": tool_name,
"result": "success",
"execution.time": 0.1
})
return {"tool_name": tool_name, "result": "success", "execution_id": tool_execution_span_counter}上下文传递是指在分布式系统中传递追踪上下文,确保分布式追踪的完整性。常见的上下文传递方式包括 HTTP 头、消息队列、RPC 框架等。
代码示例:上下文传递实现
from opentelemetry import trace
from opentelemetry.propagators import inject, extract
import requests
# 获取追踪器
tracer = trace.get_tracer(__name__)
# 发送请求时注入上下文
def send_request(url):
with tracer.start_as_current_span("send_request") as span:
# 创建 HTTP 请求头
headers = {}
# 注入追踪上下文到 HTTP 头
inject(headers)
# 发送 HTTP 请求
response = requests.get(url, headers=headers)
response.raise_for_status()
return response.json()
# 接收请求时提取上下文
@app.get("/api/v1/resource")
async def get_resource(request):
# 从请求头提取追踪上下文
carrier = {
key.lower(): value for key, value in request.headers.items()
}
ctx = extract(carrier)
# 使用提取的上下文创建 Span
with tracer.start_as_current_span("get_resource", context=ctx) as span:
span.set_attribute("resource.name", "test-resource")
return {"resource": "test-data"}统一可观测性平台将日志、指标和追踪整合到一个统一的平台,提供一站式的可观测性解决方案。常见的统一可观测性平台包括 Grafana、Datadog、New Relic 等。
代码示例:Grafana 数据源配置
# docker-compose.yml
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
depends_on:
- prometheus
- jaeger
- elasticsearch
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "6831:6831/udp"
- "16686:16686"
- "14268:14268"
volumes:
- jaeger_data:/var/lib/jaeger
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
ports:
- "9200:9200"
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms512m -Xmx512m
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
volumes:
grafana_data:
prometheus_data:
jaeger_data:
elasticsearch_data:可观测性数据流水线负责收集、处理、存储和分析可观测性数据,包括日志、指标和追踪。常见的数据流水线组件包括:
代码示例:OpenTelemetry Collector 配置
# otel-collector-config.yml
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
batch:
timeout: 1s
send_batch_size: 1024
memory_limiter:
check_interval: 1s
limit_mib: 4000
attributes:
actions:
- key: service.name
value: mcp-server
action: insert
resource:
attributes:
- key: deployment.environment
value: production
action: insert
exporters:
otlp/jaeger:
endpoint: jaeger:4317
tls:
insecure: true
prometheus:
endpoint: 0.0.0.0:8889
resource_to_telemetry_conversion:
enabled: true
logging:
loglevel: debug
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, batch, attributes, resource]
exporters: [otlp/jaeger, logging]
metrics:
receivers: [otlp]
processors: [memory_limiter, batch, attributes, resource]
exporters: [prometheus, logging]
logs:
receivers: [otlp]
processors: [memory_limiter, batch, attributes, resource]
exporters: [logging]特性 | MCP v2.0 | OpenAI Tools |
|---|---|---|
日志设计 | 完善的日志设计,支持多种日志级别、格式和存储方式 | 基本的日志功能,缺乏灵活的日志配置 |
监控系统 | 支持多种监控指标和监控系统集成 | 基本的使用统计,缺乏详细的监控指标 |
分布式追踪 | 完善的分布式追踪机制,支持请求的完整链路追踪 | 有限的分布式追踪支持 |
统一可观测性 | 统一的可观测性架构,整合日志、指标和追踪 | 缺乏统一的可观测性架构 |
AI 辅助分析 | 集成 AI 辅助日志分析,提高日志分析效率 | 基本的日志分析,缺乏 AI 辅助 |
可视化界面 | 支持多种可视化界面,如 Grafana、Kibana 等 | 基本的管理界面,缺乏丰富的可视化功能 |
告警机制 | 完善的告警机制,支持多种告警方式 | 基本的告警功能,缺乏灵活的告警配置 |
扩展性 | 支持水平扩展,适应系统规模增长 | 扩展性有限,难以适应大规模部署 |
特性 | ELK Stack | Graylog | Loki |
|---|---|---|---|
架构 | 基于 Elasticsearch、Logstash、Kibana 的分布式架构 | 基于 Elasticsearch、MongoDB 的分布式架构 | 基于 Grafana、Prometheus 的轻量级架构 |
存储 | Elasticsearch | Elasticsearch + MongoDB | 对象存储或本地文件系统 |
查询语言 | Elasticsearch Query DSL | Graylog Search Language (GELF) | LogQL |
可扩展性 | 高 | 中 | 高 |
性能 | 高 | 中 | 高 |
部署复杂度 | 高 | 中 | 低 |
成本 | 高 | 中 | 低 |
集成性 | 高(与 Elastic Stack 生态集成) | 中 | 高(与 Grafana 生态集成) |
适用场景 | 大规模日志管理和分析 | 中型日志管理和分析 | 轻量级日志管理和分析 |
特性 | Jaeger | Zipkin | OpenTelemetry |
|---|---|---|---|
架构 | 基于 OpenTracing 的分布式架构 | 基于 Dapper 的分布式架构 | 开源可观测性框架,支持多种追踪标准 |
存储 | Cassandra、Elasticsearch、Memory | Cassandra、Elasticsearch、MySQL | 支持多种存储后端 |
采样策略 | 支持多种采样策略 | 支持简单采样策略 | 支持多种采样策略 |
可视化 | Jaeger UI | Zipkin UI | 支持多种可视化工具 |
可扩展性 | 高 | 中 | 高 |
性能 | 高 | 中 | 高 |
部署复杂度 | 中 | 中 | 低(使用 Collector 统一部署) |
社区支持 | 活跃 | 活跃 | 非常活跃 |
适用场景 | 大规模分布式系统追踪 | 中型分布式系统追踪 | 所有规模的分布式系统追踪 |
请求:
GET /api/v1/logs
Authorization: Bearer <api-key>
Content-Type: application/json
{
"level": "info",
"start_time": "2026-01-01T00:00:00Z",
"end_time": "2026-01-01T23:59:59Z",
"limit": 100,
"offset": 0
}响应:
200 OK
Content-Type: application/json
{
"total": 1500,
"logs": [
{
"timestamp": "2026-01-01T12:00:00Z",
"level": "info",
"logger": "mcp_server",
"message": "MCP Server started successfully",
"metadata": {
"version": "2.0",
"port": 8000
}
},
{
"timestamp": "2026-01-01T12:01:00Z",
"level": "info",
"logger": "mcp_server.tools",
"message": "Tool executed successfully",
"metadata": {
"tool_name": "hello_world",
"execution_time": 0.1,
"result": "Hello, World!"
}
}
]
}请求:
GET /api/v1/metrics
Authorization: Bearer <api-key>
Content-Type: application/json
{
"metrics": ["cpu_usage", "memory_usage", "request_count"],
"start_time": "2026-01-01T00:00:00Z",
"end_time": "2026-01-01T23:59:59Z",
"interval": "5m"
}响应:
200 OK
Content-Type: application/json
{
"metrics": [
{
"name": "cpu_usage",
"data": [
{"timestamp": "2026-01-01T00:00:00Z", "value": 45.5},
{"timestamp": "2026-01-01T00:05:00Z", "value": 47.2},
{"timestamp": "2026-01-01T00:10:00Z", "value": 43.8}
]
},
{
"name": "memory_usage",
"data": [
{"timestamp": "2026-01-01T00:00:00Z", "value": 65.3},
{"timestamp": "2026-01-01T00:05:00Z", "value": 66.7},
{"timestamp": "2026-01-01T00:10:00Z", "value": 67.2}
]
},
{
"name": "request_count",
"data": [
{"timestamp": "2026-01-01T00:00:00Z", "value": 120},
{"timestamp": "2026-01-01T00:05:00Z", "value": 135},
{"timestamp": "2026-01-01T00:10:00Z", "value": 142}
]
}
]
}请求:
GET /api/v1/traces/{trace_id}
Authorization: Bearer <api-key>
Content-Type: application/json响应:
200 OK
Content-Type: application/json
{
"trace_id": "1234567890abcdef",
"spans": [
{
"span_id": "span1",
"parent_span_id": null,
"name": "mcp_server_request",
"start_time": "2026-01-01T12:00:00Z",
"end_time": "2026-01-01T12:00:01Z",
"duration": 1000,
"status": "ok",
"attributes": {
"service.name": "mcp-server",
"endpoint": "/api/v1/tools/hello_world/execute",
"method": "POST",
"status_code": 200
},
"events": [
{
"timestamp": "2026-01-01T12:00:00Z",
"name": "request_received",
"attributes": {
"client_ip": "192.168.1.1",
"user_agent": "MCP Client/2.0"
}
},
{
"timestamp": "2026-01-01T12:00:01Z",
"name": "request_completed",
"attributes": {
"response_time": 1000
}
}
]
},
{
"span_id": "span2",
"parent_span_id": "span1",
"name": "execute_tool:hello_world",
"start_time": "2026-01-01T12:00:00Z",
"end_time": "2026-01-01T12:00:01Z",
"duration": 800,
"status": "ok",
"attributes": {
"tool.name": "hello_world",
"tool.version": "1.0.0"
},
"events": [
{
"timestamp": "2026-01-01T12:00:00Z",
"name": "tool_execution_started",
"attributes": {
"tool.name": "hello_world"
}
},
{
"timestamp": "2026-01-01T12:00:01Z",
"name": "tool_execution_completed",
"attributes": {
"tool.name": "hello_world",
"result": "Hello, World!",
"execution_time": 800
}
}
]
}
]
}问题:日志输出过多,导致系统性能下降和磁盘空间不足。
解决方案:
问题:监控指标过多,导致系统负载过高和监控数据存储成本增加。
解决方案:
问题:在分布式系统中,追踪上下文丢失,导致分布式追踪不完整。
解决方案:
参考链接:
附录(Appendix):
关键词: MCP Server, 日志设计, 监控系统, 分布式追踪, 可观测性, 性能优化, AI 辅助分析, 统一可观测性平台