System. Diagnostics

Редактировал(а) Alexandr Fokin 2022/12/30 00:19

System.Diagnostics

Open Telemetry

System.Diagnostics Пространство имен
https://learn.microsoft.com/ru-ru/dotnet/api/system.diagnostics?view=net-7.0


Замечания:

  1. ActivitySource не создает экземпляры Activity (возвращает null), если нет ни одного активного ActivityListener.
  2. !!! Нижеприведенный код после публикации сборки (и в Release и в Debug) может никогда не выполниться, в случае, если к полю _Listener (и к классу FakeListener) нет других обращений.
    И Activity не будут создаваться.
    private static readonly FakeListener _Listener = new FakeListener();

    internal class FakeListener
    {
     public FakeListener()
     {
      ActivityListener = new ActivityListener()
      {
       ShouldListenTo = (source) => true,
       SampleUsingParentId = (ref ActivityCreationOptions<string> activityOptions) => ActivitySamplingResult.AllData,
       Sample = (ref ActivityCreationOptions<ActivityContext> activityOptions) => ActivitySamplingResult.AllData
      };
      ActivitySource.AddActivityListener(
       ActivityListener
       );
     }
    }

Metric

System.Diagnostics.Metrics
https://learn.microsoft.com/ru-ru/dotnet/api/system.diagnostics.metrics?view=net-7.0

NonObservableХранит значение метрики самостоятельно
ObservableИспользует внешний делегат, для получения текущего значения метрики.
Предполагается, что внешний код будет периодически снимать показания.
Наблюдаемые инструментыInstrument
ObservableInstrument
Базовый класс 
Counter
ObservableCounter
Допускает неотрицательные числовые значения.
Выполняет агрегацию поступающих значений, суммируя их.
Add
HistogramДопускает числовые значения.
Без агрегации, просто фиксирует само значение.
Record
UpDownCounter
ObservableUpDownCounter
Допускает числовые значения.
Выполняет агрегацию поступающих значений, вычисляя дельты (изменения) значения (в сравнении с предыдущим).
Add
ObservableGauge  
ИнфраструктураMeterСоздание и отслеживание 
MeterListenerПрослушивание 
TracingDiagnosticSource

System.Diagnostics.DiagnosticSource

DiagnosticSource
DiagnosticListener
Activity
ActivitySource 
Activity
1OperationNameИмя
DurationДлительность
2TagsKey-value коллекция
BaggageKey-value коллекция элементов, передаваемых дочерним Activity
EventsНабор событий ActivityEvent.
ContextНабор атрибутов, идентифицирующих Activity. 
LinksНабор ссылок ActivityLink.
 Custom propertiesКоллекция прикрепленных объектов

В момент вызова Dispose activity фиксирует остановку и выполняется оповещение:
(Activity -> ActivitySource -> ActivityListener -> OpenTelemetry.SpanProcessor -> OpenTelemetry.Exporter).

ActivityListener 
ActivityEvent 
ActivityLink 

 

Теги: