0

我尝试JaegerGrpcExpanExporter在我的应用程序中配置多个(在 Open-Telemetry 框架中提供)以实现以下用例:

JaegerGrpcExpanExporter服务名称为“controller”, JaegerGrpcExpanExporter服务名称为“service” JaegerGrpcExpanExporter,服务名称为“util”,并将它们注册到OpenTelemetrySdk.

类型为“controller”的 span 应导出到配置有“controller”服务名称的导出器,而不是其他人,util 和 service 应遵循类似的过程。

但它的行为并不像预期的那样,即带有“控制器”、“服务”和“实用程序”的跨度已被导出到所有JaegerGrpcExpanExporter并行注册的对象。

下面是我的配置,你有什么建议可以实现。

public BatchSpansProcessor getJaegerSpanProcessor(String serviceName) { 
    return BatchSpansProcessor.newBuilder( 
        JaegerGrpcSpanExporter.newBuilder().setServiceName(serviceName). setChannel(ManagedChannelBuilder.forAddress(localhost,14250).usePlaintext(). build()
    ).build();
}

   

public void addJaegereProcessorToSdk(){
    String[] serviceName={"controller", "service", "util"};
    TracerSdkProvider tracerSdkProvider=OpenTelemetrySdk.getTracerProvider;
    for(String service:serviceName)
        tracerSdkProvider.addSpanProcessor(getJaegerSpanProcessor(service));
}
4

1 回答 1

0

提供者生成的任何跨度都将导出到所有注册的导出器。您可以使用多个提供程序,每个提供程序都有一个单独的 Jaeger 导出器。我不确定 Jaeger 是否支持被 OpenTelemetry Resources 覆盖的服务名称,但这将是最好的选择(并且只有一个提供者)。

于 2020-07-27T18:11:46.527 回答