当前位置: 首页 > 知识库问答 >
问题:

Spring sleuth运行时采样和跟踪决策

孔海超
2023-03-14

我正在尝试将我的应用程序与Spring侦探集成。我能够进行成功的集成,并且我可以看到跨度导出到Zipkin。
我正在通过超文本传输协议导出zipkin。

Spring Boot版本-1.5.10。RELEASE
Sleuth-1.3.2。RELEASE
Cloud-Edgware。SR2

但现在我需要以一种更可控的方式来实现这一点,因为应用程序已经在生产中运行,人们担心通过在方法上添加@NewSpan,侦探可能会带来的开销。

>

  • 我需要在运行时决定是否应该添加跟踪(不是说导出)。与执行器类似,根本没有添加跟踪。我假设这不会对应用程序产生任何开销。放置X-B3-Sampled=0不是导出,而是添加跟踪信息。类似于skipPattern属性,但在运行时。

    如果服务超过某个阈值或出现异常,请始终导出跟踪。

    如果我没有将跨度导出到zipkin,那么通过跟踪信息会有任何开销吗?

    这个解决方案怎么样?我想这将在运行时对特定请求进行采样。

        @Bean
        public Sampler customSampler(){
        return new Sampler() {
            @Override
            public boolean isSampled(Span span) {
                logger.info("Inside sampling "+span.getTraceId());
                HttpServletRequest html" target="_blank">httpServletRequest=HttpUtils.getRequest();
                if(httpServletRequest!=null && httpServletRequest.getServletPath().startsWith("/test")){
                    return true;
                }else
                    return false;
    
            }
        };
    }
    
  • 共有1个答案

    洪富
    2023-03-14

    人们害怕侦探在方法上添加@NewSpan会带来的开销。

    他们有关于开销的任何信息吗?他们是否打开了它,应用程序开始显著滞后?他们害怕什么?这是一个你正在做的每微秒都很重要的高频交易应用程序吗?

    我需要在运行时决定是否应该添加Trace(不是说导出)。就像执行器跟踪根本没有被添加一样。我假设这对应用程序没有开销。将X-B3-采样=0不是导出而是添加跟踪信息。类似于skipPattern属性但在运行时。

    我认为那是不可能的。插装是通过添加拦截器、方面等来设置的。它们在应用程序初始化时启动。

    如果服务超过某个阈值或出现异常,请始终导出跟踪。

    有了新的Brave tracer instrumentation(Sleuth 2.0.0),您将能够以更简单的方式完成这项工作。在此版本之前,您必须实现自己版本的验证标记的报告器(如果它包含错误标记),如果是这种情况,请将其发送给zipkin,否则不发送。

    如果我没有将Spans导出到zipkin,那么通过跟踪信息会有任何开销吗?

    是的,这是因为您需要传递跟踪数据。然而,开销很小。

     类似资料:
    • 如果在组件渲染时出现运行错误,错误将会被传递至全局Vue.config.errorHandler配置函数 (如果已设置)。利用这个钩子函数来配合错误跟踪服务是个不错的主意。比如Sentry,它为 Vue 提供了官方集成。

    • 尽管回顾了如何使用Java 11和JavaFX 11运行ControlsFX示例应用程序,以及如何运行ControlsFX Java 11和JavaFX 11以及web上的其他建议,但我仍然无法让ControlsFX示例应用程序在Java 11(OpenJDK 11.0.1)中运行。这是我的命令行: 和输出: 任何帮助将不胜感激,谢谢。

    • 本章介绍如何使用Zipkin或Jaeger收集启用了Istio的应用程序的调用链信息。 完成本章后,你可以理解有关应用程序的所有假设以及如何使其参与跟踪,无论您使用何种语言/框架/平台构建应用程序。 BookInfo示例用来作为此任务的示例应用程序。 环境准备 参照安装指南的说明安装Istio。 如果您在安装过程中未启动Zipkin或Jaeger插件,则可以运行以下命令启动: 启动Zipkin:

    • 跟踪行为控制着 Entity Framework Core 是否会在其变更跟踪器里维持实体实例的信息。如果实体是被跟踪的,任何检测到的该实体的变更都将在 SaveChanges() 时持久化到数据库中。Entity Framework Core 还会对已跟踪的、之前已加载到 DbContext 实例中的查询和实体进行相互的导航属性装配。 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。

    • 在Jboss EAP之外使用Spring Cloud Sleuth时,一切都运行良好,我们看到跟踪日志如下所示: 2018-03-19 16:34:35.947信息[identity,3EB8EBF7CA4B15F5,3EB8EBF7CA4B15F5,False]25456---[nio-8081-exec-2]Internal.Process:消息 但在EAP内部运行时,以下是相同的输出: 20

    • 在解决从平稳分布$$pi$$, 找到对应的马尔科夫链状态转移矩阵P之前,我们还需要先看看马尔科夫链的细致平稳条件。定义如下: 如果非周期马尔科夫链的状态转移矩阵P和概率分布$$pi(x)$$对于所有的i,j满足:$$pi(i)P(i,j) = pi(j)P(j,i)$$ 则称概率分布$$pi(x)$$是状态转移矩阵P的平稳分布。 证明很简单,由细致平稳条件有:$$sumlimits_{i=1}{i