nginx-链路追踪(trace)实现

一. 需求场景:

 在日常运维工作中,会经常遇到在有多重调用链的场景下,如请求遇到非致命error时,在各环节的定位会非常麻烦,举个例子:比如说,在一个有多重调用链的服务环境下,一个请求正常的处理时间是1s,但某一天,某一时刻,有个别的请求出现长时间的延迟/响应慢的情况, 这时,如果想在系统/服务无明显瓶颈的情况下,会非常难定位到具体在请求的哪一个环节出了问题,导致处理过慢,对于这种需求, 就需要对这类多重调用链的服务做请求追踪,既:为每一个请求打一个标识,相当于牵一根线,不管请求走到哪一步,都会知道处理的请求对应 上游请求是哪一个,从而快速定位出问题节点。

二. 环境实现:

        不同环境可能存在差异, 重在提供思路,抛砖引玉。

        整体的多重调用链机制,是需要和相关研发同学配合实现的(比如:需要研发同学添加相应的trace到request的head),运维需要做的是在我们维护的服务中做相应配置;我们的业务前端统一使用了nginx作为代理层, 在nginx中,1.11版本后有一个$request_id可以解决这个问题(为请求生成一个请求id),如果是1.11之前的,就需要我们采用自定义/多重组合的方式来生成一个唯一性的trace_id了 :

[/etc/nginx]#vim trace.setting    #定义trace配置

set $request_trace_id $http_x_request_id;     #定义trace id号(请求head中的request_id [需要开发add])
set $request_trace_seq $http_x_request_req;   #定义trace调用的次数(会由研发进行+1操作[除自己编写插件外,暂未在nginx中发现有相关方式])

if ( $request_trace_id = '' ) {               #当id为null,即:首次访问
    set $re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值