分布式链路追踪:从 Span 到调用链
FreeGuideOnline
最新
2026-06-30
python from opentelemetry import trace tracer = trace.get_tracer(name)
def handle_request(): with tracer.start_as_current_span("service-A-main") as span: span.set_attribute("http.method", "POST") # 执行业务... headers = {} # 将追踪上下文注入到HTTP头 propagate_context(headers) response = call_service_b(headers) span.add_event("called service B")
**服务 B(被调用方)**
```python
def call_service_b(headers):
# 从请求头中提取上下文,并创建一个新Span
context = extract_context(headers)
with tracer.start_as_current_span("service-B-handler", context=context) as span:
span.set_attribute("http.status_code", 200)
# 模拟数据库查询
with tracer.start_as_current_span("db-query") as db_span:
db_span.set_attribute("db.statement", "SELECT...")
return "OK"