Skip to content

微服务可观测性面试题:OpenTelemetry、Trace、采样与SLO

本页只放标准回答和原理跳转。完整数据链、Demo与Runbook见微服务可观测性主线

高频问题

问题标准回答原理页
监控和可观测性区别监控用已知指标发现已知异常;可观测性提供足够上下文探索未知问题。Metrics发现范围,Trace定位链路,Logs解释细节,Profiles定位资源热点。信号
OpenTelemetry是什么它是遥测规范、API、SDK、语义约定、协议和Collector生态,不是固定存储数据库。架构
API和SDK区别API供库和业务创建遥测;SDK实现采样、聚合、处理和导出。只有API没有SDK时可能不会导出。组件关系
一次HTTP Trace怎样形成入口提取或创建Context并创建Server Span,客户端创建Client Span并注入traceparent,下游提取后创建子Server Span,各Span结束后异步导出。请求流程
traceparent四段是什么version、32位十六进制trace-id、16位parent-id和trace-flags;trace-id和parent-id不能全0。Trace Context
tracestate和Baggage区别tracestate承载追踪厂商受限状态;Baggage传播应用键值。Baggage不会自动成为Span属性,也不能放敏感或无限业务数据。Trace ContextBaggage
异步线程为什么断链任务在线程池其他线程执行,ThreadLocal Context不会天然传播;要在提交时捕获、执行时恢复、结束后清理。异步传播
MDC为什么会串链MDC通常基于ThreadLocal,线程池线程会复用。如果任务结束后没有在finally清理或恢复旧上下文,下一个请求可能复用上一个请求的traceId、userId或tenantId,造成日志串链甚至用户串号排查困难。线程池上下文Demo
Span Parent和Span Link区别Parent表达主要层级;Link表达与一个或多个其他Span的因果关联,适合批量消费、多来源和异步处理。MQ追踪
Head Sampling是什么Trace开始时决定,成本可控但不知道最终是否错误,可能漏掉关键故障。采样
Tail Sampling是什么Collector收到Trace后按错误、延迟和属性决定保留,诊断价值高,但需要缓存、同Trace路由和更多资源。采样
采样导致关键错误查不到怎么办先用Metrics和日志确认事故存在,再查Head Sampling、Parent-based sampled位、业务错误是否标记Span、SDK队列、Collector Tail Sampling、Exporter和后端写入。关键错误不能只靠Trace保留,应把错误率、业务失败码、审计日志和事实源作为稳定证据。采样决策链
Trace未采样会不会没有指标不应该。Metrics负责全量聚合,Trace负责抽样解释,二者应是独立但可关联的信号。采样边界
traceId、requestId、幂等键有什么区别traceId用于观测一条调用链,requestId用于一次入口请求或一次尝试,幂等键表示一次业务意图且跨重试保持不变。traceId和requestId都不能直接替代幂等键;写请求去重要靠唯一约束、幂等表或业务状态机。ID边界
RT、P95和P99是什么RT是Response Time,表示一次请求响应耗时,但要说明观测层级。P95/P99是百分位延迟,把请求耗时排序后,95%或99%位置的值就是对应分位。它们不是平均值,也不是最大值;平均RT正常但P99高,说明少量尾部请求很慢,常见于慢实例、锁等待、GC、连接池等待、热点参数或下游长尾。RT与百分位延迟
Counter、Gauge、Histogram区别Counter累计只增量,Gauge表示当前值,Histogram累计值分布并支持聚合分位数估算。Metrics
Exemplar是什么在Histogram样本和具体Trace之间保存少量关联,让延迟尖峰可跳到代表性Trace,避免traceId成为Metric Label。Exemplar
为什么不能把orderId做Label时间序列数量是标签取值组合乘积,百万orderId会造成内存、索引、存储和查询爆炸。高基数
Collector Pipeline怎样走Receiver接收,Processor限内存、补资源、过滤、批处理或采样,Exporter写后端;失败使用有界队列和退避。Collector
Collector挂了能阻塞业务吗不应。应用Exporter应异步有界,必要时丢遥测并记录Dropped指标,也不能让观测故障拖垮核心交易。Collector边界
RED和USE区别RED面向请求:Rate、Errors、Duration;USE面向资源:Utilization、Saturation、Errors。方法
SLI、SLO、SLA区别SLI是测量,SLO是内部目标,SLA是带外部承诺的协议;Error Budget是允许不满足SLO的空间。SLO
Burn Rate是什么实际错误比例除以允许错误比例,表示错误预算消耗速度;多窗口告警兼顾快速发现和持续确认。Burn Rate
Sleuth与Boot 3怎样迁移Boot 2存量常见Sleuth/Brave;Boot 3主线是Micrometer Observation/Tracing并桥接OTel或Brave,要校验传播格式、采样、MDC和Exporter。Java基线
Trace断链怎么排查先确定最后一个有Span的服务和第一个缺失的调用边,再逐层查Gateway入口、Header转发、Feign/RestTemplate/WebClient、gRPC/Dubbo拦截器、线程池、Reactor、MQ消息属性、SDK导出、Collector和后端查询条件。最后用Metrics、日志和业务事实交叉验证,不能只看Trace平台。Trace断链深度排查

场景题:Trace平台没有数据是否说明请求没发生

不能。可能是未采样、Context未传播、SDK未注册、Batch未刷新、Exporter失败、Collector拒绝、Tail Sampling丢弃、后端写入失败或查询条件错误。应从应用生成、SDK队列、Collector accepted/dropped、Exporter和后端逐层取证,并用Metrics、日志和业务事实交叉证明。核心交易是否发生要看数据库状态机、幂等表、消息表、审计日志和对账结果,不能把Trace当事实源。

项目回答模板

我们用W3C Trace Context传播同步调用,MQ消费按单消息Parent或批量Span Link关联;Boot 3使用Micrometer Observation/Tracing桥接OpenTelemetry。Metrics按规范化route、version和状态聚合,订单号只进脱敏日志和Trace,P99 Histogram通过Exemplar跳Trace。Collector使用内存限制、批处理、有界队列和Tail Sampling,自身监控accepted、dropped与export失败。告警基于业务SLI、SLO和多窗口Burn Rate,而不是只看CPU。

本章小结

可观测性面试不能只背Trace ID。应讲清信号语义、上下文传播、采样、指标基数、Collector数据链和SLO告警。