X-Request-ID日志追踪使用
# 说明
# 使用改值对日志进行标志,可以过滤出本次请求的日志(便于单个微服务快速定位问题)
当您操作客户端访问的 WebService 时,可能难以将请求(客户端可以看到)与服务器日志(服务端可以看到)相关联。
X-Request-id 的想法是客户端可以创建一些随机 ID 并将其传递给服务器。 然后,服务端在其创建的每个日志语句中包含该 ID。 如果客户端收到错误,它可以在错误报告中包含 ID,允许服务端开发者查找相应的日志语句(而无需依赖时间戳,IPS等)。
由于此 ID 由客户端随机生成,因此它不包含任何敏感信息,也不会侵犯用户的隐私。 由于每个请求创建的 ID 唯一,因此它对追踪用户信息毫无帮助。
1
2
3
4
2
3
4
# 入口系统
# 使用apisix的 x-request-id
1
# 内部系统
# https://github.com/mercari/go-grpc-interceptor/blob/master/xrequestid/README.md
# 在拦截器中添加 request_id 或者使用链路追踪的id
# 在 metadata 里面设置字段
service_name、request_id、error_msg
import grpc
channel = grpc.insecure_channel('your_server_address')
metadata = [('X-Request-id', 'your_request_id')]
stub = YourServiceStub(channel)
response = stub.YourRpcMethod(request, metadata=metadata)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 参考
上次更新: 2023-09-26 17:02:27