创建自定义跟踪和指标
自动检测会配置 TracerProvider 和 MeterProvider,以便您可以添加自己的手动检测。通过同时使用自动检测和手动检测,您可以更好地检测应用程序、客户端和框架的逻辑和功能。
追踪
要手动创建自定义跟踪,请执行以下步骤
将
System.Diagnostics.DiagnosticSource依赖项添加到您的项目中<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />创建
ActivitySource实例private static readonly ActivitySource RegisteredActivity = new ActivitySource("Examples.ManualInstrumentations.Registered");创建
Activity。可选,设置标签using (var activity = RegisteredActivity.StartActivity("Main")) { activity?.SetTag("foo", "bar1"); // your logic for Main activity }通过设置
OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES环境变量,在 OpenTelemetry.AutoInstrumentation 中注册您的ActivitySource。您可以将值设置为Examples.ManualInstrumentations.Registered或Examples.ManualInstrumentations.*,后者会注册整个前缀。
为 NonRegistered.ManualInstrumentations ActivitySource 创建的 Activity 不会被 OpenTelemetry 自动检测处理。
指标
要手动创建自定义指标,请执行以下步骤
将
System.Diagnostics.DiagnosticSource依赖项添加到您的项目中<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />创建
Meter实例using var meter = new Meter("Examples.Service", "1.0");创建
Instrumentvar successCounter = meter.CreateCounter<long>("srv.successes.count", description: "Number of successful responses");更新
Instrument值。可选,设置标签successCounter.Add(1, new KeyValuePair<string, object?>("tagName", "tagValue"));通过设置
OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES环境变量,在 OpenTelemetry.AutoInstrumentation 中注册您的MeterOTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES=Examples.Service您可以将值设置为
Examples.Service或Examples.*,后者会注册整个前缀。