创建自定义跟踪和度量
使用.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)