首页/AI/大模型部署与运维速查/日志关联:用请求 ID 串起全链路
运维监控与排障50 条

日志关联:用请求 ID 串起全链路

网关生成请求 ID 并通过头透传,访问日志与引擎日志都带上它;排障时用一个 ID 就能拉出全链路记录,不再靠时间猜对应关系。

用一个标识串起全链路

网关生成请求标识并通过请求头传给上游,访问日志与引擎日志都带上它;排障时用一个标识就能拉出全链路记录,不必再靠时间戳猜对应关系。关键约定是标识只在网关生成一次,各层只透传不改写,并把标识回写进响应头交给调用方。

基本信息

适用平台Nginx 网关与自托管推理服务
生成位置网关生成一次,向上游透传
记录位置访问日志、引擎日志、客户端日志
约定各层只透传不改写,响应头回带给调用方

Nginx 生成与透传

Nginx 生成与透传
log_format llm '$remote_addr [$time_local] rid=$request_id '
                '$status rt=$request_time urt=$upstream_response_time';
proxy_set_header X-Request-Id $request_id;
add_header X-Request-Id $request_id always;

按标识拉全链路

按标识拉全链路
grep 'rid=abc123' <nginx访问日志>
grep 'abc123' <引擎日志> | head -20

典型使用场景

  • 用户报障:让对方提供请求标识,直接检索全链路
  • 跨系统排查:网关、引擎、应用三段日志按同一个标识串联
  • 慢请求分析:按标识把同一请求在各层的耗时拼起来
  • 审计与对账:请求标识是调用记录的最小定位单位
  • 接口文档注明标识字段名:调用方才知道该记哪个头,跨系统排查才连得起来

各层日志怎么用

日志层标识来源排查用途
网关访问日志网关生成并记录确认请求是否到达与整体耗时
引擎日志从请求头透传确认生成何时开始与结束
客户端日志从响应头读取确认调用方实际等待时长
标识由网关生成;上游引擎的日志字段以实际版本为准,能记录请求标识的格式优先启用。
把标识回写进响应头:客户端记进自己的日志之后,跨系统排查不必再对时间戳。
别在同一层重复生成标识:中途再生成一个,链路就断成两截,前面的记录全部失去关联。
确认标识能进检索系统:日志集中收集时要检查字段被正确解析,否则只能回到单机文件里去翻。
标识是随请求生成的短随机串:网关重启不会影响可用性,也不需要额外持久化存储。

易错点

  • 各层各自生成标识:网关、引擎与应用三份互不相干,关联时依旧靠猜
  • 只在请求头透传不落到日志:知道有标识却检索不到对应记录
  • 日志格式里没打印标识:要先确认格式串里有它,否则配了也白配
  • 标识用可预测的短序号:多实例下容易撞号,建议用随机串并带上节点信息

数据来源与参考

  • nginx 官方文档:ngx_http_core_module($request_id,nginx.org)
  • vLLM 官方文档:日志与请求记录(docs.vllm.ai)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌