用一个标识串起全链路
网关生成请求标识并通过请求头传给上游,访问日志与引擎日志都带上它;排障时用一个标识就能拉出全链路记录,不必再靠时间戳猜对应关系。关键约定是标识只在网关生成一次,各层只透传不改写,并把标识回写进响应头交给调用方。
基本信息
| 适用平台 | 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典型使用场景
- 用户报障:让对方提供请求标识,直接检索全链路
- 跨系统排查:网关、引擎、应用三段日志按同一个标识串联
- 慢请求分析:按标识把同一请求在各层的耗时拼起来
- 审计与对账:请求标识是调用记录的最小定位单位
- 接口文档注明标识字段名:调用方才知道该记哪个头,跨系统排查才连得起来
各层日志怎么用
| 日志层 | 标识来源 | 排查用途 |
|---|---|---|
| 网关访问日志 | 网关生成并记录 | 确认请求是否到达与整体耗时 |
| 引擎日志 | 从请求头透传 | 确认生成何时开始与结束 |
| 客户端日志 | 从响应头读取 | 确认调用方实际等待时长 |
标识由网关生成;上游引擎的日志字段以实际版本为准,能记录请求标识的格式优先启用。
把标识回写进响应头:客户端记进自己的日志之后,跨系统排查不必再对时间戳。
别在同一层重复生成标识:中途再生成一个,链路就断成两截,前面的记录全部失去关联。
确认标识能进检索系统:日志集中收集时要检查字段被正确解析,否则只能回到单机文件里去翻。
标识是随请求生成的短随机串:网关重启不会影响可用性,也不需要额外持久化存储。