# 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 | Прослушивание |
Tracing | DiagnosticSource | System.Diagnostics.DiagnosticSource
DiagnosticSource
DiagnosticListener
Activity |
ActivitySource |
Activity |
1 | OperationName | Имя
Duration | Длительность
2 | Tags | Key-value коллекция
Baggage | Key-value коллекция элементов, передаваемых дочерним Activity
Events | Набор событий ActivityEvent.
Context | Набор атрибутов, идентифицирующих Activity.
Links | Набор ссылок ActivityLink.
| Custom properties | Коллекция прикрепленных объектов
В момент вызова Dispose activity фиксирует остановку и выполняется оповещение: (Activity -> ActivitySource -> ActivityListener -> OpenTelemetry.SpanProcessor -> OpenTelemetry.Exporter).
ActivityListener |
ActivityEvent |
ActivityLink |

Создал(а) Alexandr Fokin 2022/12/01 06:23

- Комментарии (0)
- Вложения (0)
- История
- Информация

## Приложения