摘要:抽樣采樣可用于減少收集和報告的進程外數(shù)據(jù),如果未對進行抽樣,則不會增加任何開銷。默認情況下,全局抽樣器將單個速率應(yīng)用于所有跟蹤的操作,控制此設(shè)置,默認為跟蹤每個請求。
Spring Cloud Sleuth抽樣
采樣可用于減少收集和報告的進程外數(shù)據(jù),如果未對span進行抽樣,則不會增加任何開銷(noop)。
抽樣是一個前期決策,這意味著報告數(shù)據(jù)的決定是在trace中的第一個操作中做出的,并且該決策是向下游傳播的。
默認情況下,全局抽樣器將單個速率應(yīng)用于所有跟蹤的操作,Tracer.Builder.sampler控制此設(shè)置,默認為跟蹤每個請求。
聲明性抽樣某些應(yīng)用程序需要根據(jù)java方法的類型或注解進行采樣。
大多數(shù)用戶使用框架攔截器來自動執(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)用不同的策略,例如,你可能不希望跟蹤對靜態(tài)資源(如圖像)的請求,或者你可能希望跟蹤對新api的所有請求。
大多數(shù)用戶使用框架攔截器來自動執(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中的采樣
默認情況下,Spring Cloud Sleuth將所有span設(shè)置為不可導(dǎo)出,這意味著trace顯示在日志中,但不顯示在任何遠程存儲中,對于測試,默認值通常就足夠了,如果你只使用日志(例如,使用ELK聚合器),它可能就是你所需要的全部內(nèi)容。如果將span數(shù)據(jù)導(dǎo)出到Zipkin,還有一個Sampler.ALWAYS_SAMPLE設(shè)置可以導(dǎo)出所有內(nèi)容,還有一個ProbabilityBasedSampler設(shè)置可以對固定比例的span進行采樣。
如果你使用spring-cloud-sleuth-zipkin,則ProbabilityBasedSampler是默認值,您可以通過設(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,或者在進行消息傳遞時,可以將spanFlags header設(shè)置為1,這樣做會強制導(dǎo)出當(dāng)前span,而不管采樣決策如何。
為了使用速率限制采樣器,請設(shè)置spring.sleuth.sampler.rate屬性以選擇每秒間隔接受的trace量,最小數(shù)字為0,最大值為2,147,483,647(最大int)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/74371.html
摘要:介紹從版本開始,使用作為追蹤庫,為方便起見,在此處嵌入了的部分文檔。具有一個上下文,其中包含標識符,該標識符將放置在表示分布式操作的樹中的正確位置。追蹤通常由攔截器自動完成,在幕后,他們添加與他們在操作中的角色相關(guān)的標簽和事件。 Spring Cloud Sleuth特性 將trace和span ID添加到Slf4J MDC,因此你可以在日志聚合器中從給定的trace或span提取...
摘要:那個配置文件將來自應(yīng)用程序的信息以格式記錄到文件中。以下清單顯示了使用的集成測試設(shè)置代碼添加到項目本節(jié)介紹如何使用或?qū)⑻砑拥巾椖恐?。以下示例顯示了如何為執(zhí)行此操作建議你通過添加依賴關(guān)系管理,這樣你就無需自行管理版本。 Spring Cloud Sleuth介紹 Spring Cloud Sleuth為Spring Cloud實現(xiàn)了分布式追蹤解決方案。 術(shù)語 Spring Cloud S...
摘要:腳本位置依賴內(nèi)采樣率,默認即如需測試時每次都看到則修改為,但對性能有影響,注意上線時修改為合理值運行查詢參考規(guī)范推薦推薦谷歌的大規(guī)模分布式跟蹤系統(tǒng)分布式服務(wù)的 zipkin-server pom io.zipkin zipkin-ui 1.39.3 or...
摘要:一系列組成的一個樹狀結(jié)構(gòu),例如,如果你正在跑一個分布式大數(shù)據(jù)工程,你可能需要創(chuàng)建一個。開發(fā)者或運維人員可以輕松地執(zhí)行高級數(shù)據(jù)分析,并在各種圖表表格和地圖中可視化數(shù)據(jù)。 快速構(gòu)建spring-cloud + sleuth + rabbit + zipkin + es + kibana + grafana日志跟蹤平臺 簡介 Spring-Cloud-Sleuth Spring-Cloud-...
閱讀 2711·2021-11-18 10:07
閱讀 1160·2021-08-03 14:04
閱讀 779·2019-08-30 13:08
閱讀 2634·2019-08-29 15:33
閱讀 1172·2019-08-29 14:07
閱讀 3086·2019-08-29 14:04
閱讀 1520·2019-08-29 11:19
閱讀 1206·2019-08-29 10:59