创建自定义跟踪和度量
使用.NET自动仪表化进行自定义跟踪和度量
自动仪表化配置了一个TracerProvider和一个MeterProvider,以便您可以添加自己的手动仪表化。通过同时使用自动和手动仪表化,您可以更好地仪表化应用程序、客户端和框架的逻辑和功能。
跟踪
要手动创建自定义跟踪,请按照以下步骤进行操作:
-
在您的项目中添加
System.Diagnostics.DiagnosticSource依赖项:<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="7.0.2" /> -
创建一个
ActivitySource实例:private static readonly ActivitySource RegisteredActivity = new ActivitySource("Examples.ManualInstrumentations.Registered"); -
创建一个
Activity。可选择性地设置标签:using (var activity = RegisteredActivity.StartActivity("Main")) { activity?.SetTag("foo", "bar1"); // Main activity 的逻辑 } -
在 OpenTelemetry.AutoInstrumentation 中注册您的
ActivitySource,方法是设置OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES环境变量。您可以将值设置为Examples.ManualInstrumentations.Registered或Examples.ManualInstrumentations.*,其中后者注册整个前缀。
注意
为NonRegistered.ManualInstrumentations 的 ActivitySource 创建的 Activity 不由 OpenTelemetry Automatic Instrumentation 处理。
度量
要手动创建自定义度量,请按照以下步骤进行操作:
-
在您的项目中添加
System.Diagnostics.DiagnosticSource依赖项:<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="7.0.2" /> -
创建一个
Meter实例:using var meter = new Meter("Examples.Service", "1.0"); -
创建一个
Instrument:var successCounter = meter.CreateCounter<long>("srv.successes.count", description: "成功响应的数量"); -
更新
Instrument的值。可选择性地设置标签:successCounter.Add(1, new KeyValuePair<string, object?>("tagName", "tagValue")); -
通过设置
OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES环境变量,在 OpenTelemetry.AutoInstrumentation 中注册您的Meter:OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES=Examples.Service您可以将值设置为
Examples.Service或Examples.*,其中后者注册整个前缀。
进一步阅读
最后修改 December 13, 2023: improve glossary translation (46f8201b)