HystrixHystrix

我们正在注册HystrixConcurrencyStrategy将所有Callable实例包装到他们的Sleuth代表 -TraceCallable中的定制。该策略是启动或继续跨越,这取决于调用Hystrix命令之前跟踪是否已经进行的事实。要禁用自定义Hystrix并发策略,将spring.sleuth.hystrix.strategy.enabled设置为false。

手动命令设置

假设您有以下HystrixCommand:

HystrixCommand<String> hystrixCommand = new HystrixCommand<String>(setter) {

@Override

protected String run() throws Exception {

return someLogic();

}

};

为了传递跟踪信息,您必须在HystrixCommand的HystrixCommand的Sleuth版本中包装相同的逻辑:

TraceCommand<String> traceCommand = new TraceCommand<String>(tracer, traceKeys, setter) {

@Override

public String doRun() throws Exception {

return someLogic();

}

};

RxJava

我们正在注册RxJavaSchedulersHook将所有Action0实例包装到他们的Sleuth代表 -TraceAction中的定制。钩子起动或继续一个跨度取决于跟踪在Action被安排之前是否已经进行的事实。要禁用自定义RxJavaSchedulersHook,将spring.sleuth.rxjava.schedulers.hook.enabled设置为false。

您可以定义线程名称的正则表达式列表,您不希望创建一个Span。只需在spring.sleuth.rxjava.schedulers.ignoredthreads属性中提供逗号分隔的正则表达式列表。

HTTP集成

可以通过提供值等于false的spring.sleuth.web.enabled属性来禁用此部分的功能。

HTTP过滤器

通过TraceFilter所有采样的进入请求导致创建Span。Span的名称是http:+发送请求的路径。例如,如果请求已发送到/foo/bar,则该名称将为http:/foo/bar。您可以通过spring.sleuth.web.skipPattern属性配置要跳过的URI。如果您在类路径上有ManagementServerProperties,则其值contextPath将附加到提供的跳过模式。

的HandlerInterceptor

由于我们希望跨度名称是精确的,我们使用的TraceHandlerInterceptor包装现有的HandlerInterceptor,或直接添加到现有的HandlerInterceptors列表中。TraceHandlerInterceptor向给定的HttpServletRequest添加了一个特殊请求属性。如果TraceFilter没有看到此属性集,它将创建一个“后备”跨度,这是在服务器端创建的一个额外的跨度,以便在UI中正确显示跟踪。看到最有可能意味着有一个缺失的仪器。在这种情况下,请在Spring Cloud Sleuth中提出问题。

异步Servlet支持

如果您的控制器返回Callable或WebAsyncTaskSpring Cloud,Sleuth将继续现有的跨度,而不是创建一个新的跨度。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容