针对 Jaeger 的 C# OpenTelemetry 在简单但不是批处理中工作
C# OpenTelemetry against Jaeger works in Simple but not Batch
有一个相当多的工作环境可用于跟踪,针对 Jaeger Tracing 的 OpenTelemetry。
我读到 Batch
for process 是 Simple
的首选方式。如何在 .Net Framework 4.8 Batch
中似乎没有给出任何记录的结果。
我用 Wireshark 捕获了数据包数据。当 Batch
.
中的 运行 时没有任何反应
此配置中是否缺少某些东西以将其设为 ExportProcessorType.Batch
而不是 ExportProcessorType.Simple
?
public TracerProvider GetTracerProvider(string host, int port)
{
BackendServiceResource = ResourceBuilder.CreateDefault()
.AddService(Process.GetCurrentProcess().ProcessName)
.AddAttributes(new[]
{
new KeyValuePair<string, object>("MachineName", Environment.MachineName),
new KeyValuePair<string, object>("UserName", Environment.UserName),
});
return Sdk.CreateTracerProviderBuilder()
.SetResourceBuilder(BackendServiceResource)
.SetSampler(new AlwaysOnSampler())
.SetErrorStatusOnException(true)
.AddSource(ActivitySource.Name)
.AddConsoleExporter()
.AddJaegerExporter(jeager =>
{
jeager.AgentHost = host;
jeager.AgentPort = port;
jeager.MaxPayloadSizeInBytes = 4096;
jeager.ExportProcessorType = ExportProcessorType.Simple;
jeager.BatchExportProcessorOptions = new BatchExportProcessorOptions<Activity>()
{
MaxQueueSize = 2048,
ScheduledDelayMilliseconds = 5000,
ExporterTimeoutMilliseconds = 30000,
MaxExportBatchSize = 512,
};
})
.Build();
}
我想 post 解决这类问题。
出现这些问题的原因是,在某些情况下,应用程序可能会在进程完全完成之前关闭。一个解决方案是 using
并确保在所有有效关闭之前全部完成。
您可以在此处阅读更多相关信息 https://github.com/open-telemetry/opentelemetry-dotnet/issues/2758
有一个相当多的工作环境可用于跟踪,针对 Jaeger Tracing 的 OpenTelemetry。
我读到 Batch
for process 是 Simple
的首选方式。如何在 .Net Framework 4.8 Batch
中似乎没有给出任何记录的结果。
我用 Wireshark 捕获了数据包数据。当 Batch
.
此配置中是否缺少某些东西以将其设为 ExportProcessorType.Batch
而不是 ExportProcessorType.Simple
?
public TracerProvider GetTracerProvider(string host, int port)
{
BackendServiceResource = ResourceBuilder.CreateDefault()
.AddService(Process.GetCurrentProcess().ProcessName)
.AddAttributes(new[]
{
new KeyValuePair<string, object>("MachineName", Environment.MachineName),
new KeyValuePair<string, object>("UserName", Environment.UserName),
});
return Sdk.CreateTracerProviderBuilder()
.SetResourceBuilder(BackendServiceResource)
.SetSampler(new AlwaysOnSampler())
.SetErrorStatusOnException(true)
.AddSource(ActivitySource.Name)
.AddConsoleExporter()
.AddJaegerExporter(jeager =>
{
jeager.AgentHost = host;
jeager.AgentPort = port;
jeager.MaxPayloadSizeInBytes = 4096;
jeager.ExportProcessorType = ExportProcessorType.Simple;
jeager.BatchExportProcessorOptions = new BatchExportProcessorOptions<Activity>()
{
MaxQueueSize = 2048,
ScheduledDelayMilliseconds = 5000,
ExporterTimeoutMilliseconds = 30000,
MaxExportBatchSize = 512,
};
})
.Build();
}
我想 post 解决这类问题。
出现这些问题的原因是,在某些情况下,应用程序可能会在进程完全完成之前关闭。一个解决方案是 using
并确保在所有有效关闭之前全部完成。
您可以在此处阅读更多相关信息 https://github.com/open-telemetry/opentelemetry-dotnet/issues/2758