摘要:抽樣采樣可用于減少收集和報(bào)告的進(jìn)程外數(shù)據(jù),如果未對(duì)進(jìn)行抽樣,則不會(huì)增加任何開銷。默認(rèn)情況下,全局抽樣器將單個(gè)速率應(yīng)用于所有跟蹤的操作,控制此設(shè)置,默認(rèn)為跟蹤每個(gè)請(qǐng)求。
Spring Cloud Sleuth抽樣
采樣可用于減少收集和報(bào)告的進(jìn)程外數(shù)據(jù),如果未對(duì)span進(jìn)行抽樣,則不會(huì)增加任何開銷(noop)。
抽樣是一個(gè)前期決策,這意味著報(bào)告數(shù)據(jù)的決定是在trace中的第一個(gè)操作中做出的,并且該決策是向下游傳播的。
默認(rèn)情況下,全局抽樣器將單個(gè)速率應(yīng)用于所有跟蹤的操作,Tracer.Builder.sampler控制此設(shè)置,默認(rèn)為跟蹤每個(gè)請(qǐng)求。
聲明性抽樣某些應(yīng)用程序需要根據(jù)java方法的類型或注解進(jìn)行采樣。
大多數(shù)用戶使用框架攔截器來自動(dòng)執(zhí)行此類策略,以下示例顯示了內(nèi)部可能如何工作:
@Autowired Tracer tracer; // derives a sample rate from an annotation on a java method DeclarativeSampler定制抽樣sampler = DeclarativeSampler.create(Traced::sampleRate); @Around("@annotation(traced)") public Object traceThing(ProceedingJoinPoint pjp, Traced traced) throws Throwable { // When there is no trace in progress, this decides using an annotation Sampler decideUsingAnnotation = declarativeSampler.toSampler(traced); Tracer tracer = tracer.withSampler(decideUsingAnnotation); // This code looks the same as if there was no declarative override ScopedSpan span = tracer.startScopedSpan(spanName(pjp)); try { return pjp.proceed(); } catch (RuntimeException | Error e) { span.error(e); throw e; } finally { span.finish(); } }
根據(jù)操作的不同,末可能希望應(yīng)用不同的策略,例如,你可能不希望跟蹤對(duì)靜態(tài)資源(如圖像)的請(qǐng)求,或者你可能希望跟蹤對(duì)新api的所有請(qǐng)求。
大多數(shù)用戶使用框架攔截器來自動(dòng)執(zhí)行此類策略,以下示例顯示了內(nèi)部可能如何工作:
@Autowired Tracer tracer; @Autowired Sampler fallback; Span nextSpan(final Request input) { Sampler requestBased = Sampler() { @Override public boolean isSampled(long traceId) { if (input.url().startsWith("/experimental")) { return true; } else if (input.url().startsWith("/static")) { return false; } return fallback.isSampled(traceId); } }; return tracer.withSampler(requestBased).nextSpan(); }Spring Cloud Sleuth中的采樣
默認(rèn)情況下,Spring Cloud Sleuth將所有span設(shè)置為不可導(dǎo)出,這意味著trace顯示在日志中,但不顯示在任何遠(yuǎn)程存儲(chǔ)中,對(duì)于測(cè)試,默認(rèn)值通常就足夠了,如果你只使用日志(例如,使用ELK聚合器),它可能就是你所需要的全部?jī)?nèi)容。如果將span數(shù)據(jù)導(dǎo)出到Zipkin,還有一個(gè)Sampler.ALWAYS_SAMPLE設(shè)置可以導(dǎo)出所有內(nèi)容,還有一個(gè)ProbabilityBasedSampler設(shè)置可以對(duì)固定比例的span進(jìn)行采樣。
如果你使用spring-cloud-sleuth-zipkin,則ProbabilityBasedSampler是默認(rèn)值,您可以通過設(shè)置spring.sleuth.sampler.probability來配置導(dǎo)出,傳遞的值必須是從0.0到1.0的雙精度值。
可以通過創(chuàng)建bean定義來安裝采樣器,如以下示例所示:
@Bean public Sampler defaultSampler() { return Sampler.ALWAYS_SAMPLE; }
你可以將HTTP header X-B3-Flags設(shè)置為1,或者在進(jìn)行消息傳遞時(shí),可以將spanFlags header設(shè)置為1,這樣做會(huì)強(qiáng)制導(dǎo)出當(dāng)前span,而不管采樣決策如何。
為了使用速率限制采樣器,請(qǐng)?jiān)O(shè)置spring.sleuth.sampler.rate屬性以選擇每秒間隔接受的trace量,最小數(shù)字為0,最大值為2,147,483,647(最大int)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/74371.html
摘要:介紹從版本開始,使用作為追蹤庫,為方便起見,在此處嵌入了的部分文檔。具有一個(gè)上下文,其中包含標(biāo)識(shí)符,該標(biāo)識(shí)符將放置在表示分布式操作的樹中的正確位置。追蹤通常由攔截器自動(dòng)完成,在幕后,他們添加與他們?cè)诓僮髦械慕巧嚓P(guān)的標(biāo)簽和事件。 Spring Cloud Sleuth特性 將trace和span ID添加到Slf4J MDC,因此你可以在日志聚合器中從給定的trace或span提取...
摘要:那個(gè)配置文件將來自應(yīng)用程序的信息以格式記錄到文件中。以下清單顯示了使用的集成測(cè)試設(shè)置代碼添加到項(xiàng)目本節(jié)介紹如何使用或?qū)⑻砑拥巾?xiàng)目中。以下示例顯示了如何為執(zhí)行此操作建議你通過添加依賴關(guān)系管理,這樣你就無需自行管理版本。 Spring Cloud Sleuth介紹 Spring Cloud Sleuth為Spring Cloud實(shí)現(xiàn)了分布式追蹤解決方案。 術(shù)語 Spring Cloud S...
摘要:腳本位置依賴內(nèi)采樣率,默認(rèn)即如需測(cè)試時(shí)每次都看到則修改為,但對(duì)性能有影響,注意上線時(shí)修改為合理值運(yùn)行查詢參考規(guī)范推薦推薦谷歌的大規(guī)模分布式跟蹤系統(tǒng)分布式服務(wù)的 zipkin-server pom io.zipkin zipkin-ui 1.39.3 or...
摘要:一系列組成的一個(gè)樹狀結(jié)構(gòu),例如,如果你正在跑一個(gè)分布式大數(shù)據(jù)工程,你可能需要?jiǎng)?chuàng)建一個(gè)。開發(fā)者或運(yùn)維人員可以輕松地執(zhí)行高級(jí)數(shù)據(jù)分析,并在各種圖表表格和地圖中可視化數(shù)據(jù)。 快速構(gòu)建spring-cloud + sleuth + rabbit + zipkin + es + kibana + grafana日志跟蹤平臺(tái) 簡(jiǎn)介 Spring-Cloud-Sleuth Spring-Cloud-...
閱讀 2624·2021-11-18 10:07
閱讀 1083·2021-08-03 14:04
閱讀 726·2019-08-30 13:08
閱讀 2579·2019-08-29 15:33
閱讀 1087·2019-08-29 14:07
閱讀 2985·2019-08-29 14:04
閱讀 1435·2019-08-29 11:19
閱讀 1144·2019-08-29 10:59