我正在使用 Opencensus 在具有 10 個工人的 grpc 服務器上進行一些監控。我的問題是,在制作示蹤劑時,示蹤劑的出口商應該是本地的還是全球的。IE這是服務器:服務器 = grpc.server(futures.ThreadPoolExecutor(max_workers=10))我要不要:tracer_module.Tracer(sampler=always_on.AlwaysOnSampler(), exporter=GLOBAL_EXPORTER) 其中:GLOBAL_EXPORTER = stackdriver_exporter.StackdriverExporter(transport=BackgroundThreadTransport)) 或者我這樣做:tracer_module.Tracer(sampler=always_on.AlwaysOnSampler),exporterstacker(exporterstacker) StackdriverExporter(transport=BackgroundThreadTransport)))我已經嘗試了兩者,它們都有效。前者將使用一個應該更有效的全局導出器(我認為),但聚合似乎有點奇怪(一個調用是“與另一個調用聚合”)。另一方面,第二種方式創建了第二個導出器(這是短暫的,因為它只存在于該調用中)并且似乎可以正確導出。從系統的角度來看,問題更多的是什么更正確。第二個選項的 IE 是否創建 stackdriver_exporter.StackdriverExporter(transport=BackgroundThreadTransport) 使不同的導出器(在不同的線程中創建)無效?
1 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
您應該使用全局導出器。它并不打算為每個 Tracer 創建一個新的導出線程。應該有一個后臺線程在運行,用于處理所有導出到 StackDriver 的操作。
至于聚合,它不應該將所有跨度聚合在一起。這可能是 StackDriver UI 中的一個錯誤(有許多已知問題)。
添加回答
舉報
0/150
提交
取消