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