spring cloud中的zipkin日志統計是由sleuth客戶端和zipkin服務器組成。 sleuth收集客端trace,通過mq將trace發送到zipkin服務器。
zipkin 做持久化和查詢展示功能。常用kafka+zk集群作為mq將信息由客戶端發往服務器,elasticsearch用於trace存儲。
存在以下問題:
1.大量trace發往zipkin很容易崩潰,通常不能做全量記錄。
2.如果zipkin崩潰或者mq出現問題會導致trace丟失。
解決:
a.不引入mq依賴,使用日志記錄調用信息。
@Bean public Reporter<Span> reporter(){ return span -> { logger.info(span.toString()); }; //輸出到trace日志文件 } @Bean public Sampler sleuthTraceSampler() { return Sampler.ALWAYS_SAMPLE; } //全量記錄
b.使用elk日志方案將日志導入到trace專用索引。
c.zipkin對數據包括收集和查詢展示兩模塊。我正常配置zipkin+es,就ok了。只是沒有不使用收集模塊。