Початок роботи з метриками — Консоль

Дізнайтеся, як використовувати OpenTelemetry Metrics у .NET Console застосунку

Цей посібник покаже вам, як почати роботу з OpenTelemetry .NET Metrics у консольному застосунку всього за кілька хвилин.

Попередні вимоги

  • .NET SDK встановлений на вашому компʼютері

Створення консольного застосунку

Створіть новий консольний застосунок і запустіть його:

dotnet new console --output getting-started
cd getting-started
dotnet run

Ви повинні побачити наступний результат:

Hello World!

Додавання метрик OpenTelemetry

Встановіть пакунок OpenTelemetry Console Exporter:

dotnet add package OpenTelemetry.Exporter.Console

Оновіть файл Program.cs наступним кодом:

using System;
using System.Diagnostics.Metrics;
using OpenTelemetry;
using OpenTelemetry.Metrics;

// Визначити вимірювач
private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");

// Створити лічильник
private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter", "fruit", "Counts fruit by name and color");

// Налаштувати OpenTelemetry MeterProvider
using var meterProvider = Sdk.CreateMeterProviderBuilder()
    .AddMeter("MyCompany.MyProduct.MyLibrary")
    .AddConsoleExporter()
    .Build();

// Записати деякі вимірювання
MyFruitCounter.Add(1, new("name", "apple"), new("color", "red"));
MyFruitCounter.Add(2, new("name", "lemon"), new("color", "yellow"));
MyFruitCounter.Add(1, new("name", "lemon"), new("color", "yellow"));
MyFruitCounter.Add(2, new("name", "apple"), new("color", "green"));
MyFruitCounter.Add(5, new("name", "apple"), new("color", "red"));
MyFruitCounter.Add(4, new("name", "lemon"), new("color", "yellow"));

Console.WriteLine("Press any key to exit");
Console.ReadKey();

Запустіть застосунок знову (за допомогою dotnet run) і ви побачите вихідні дані метрик з консолі (метрики будуть відображатися після завершення застосунку), як показано нижче:

Export MyFruitCounter, Meter: MyCompany.MyProduct.MyLibrary/1.0
(2021-09-23T22:00:08.4399776Z, 2021-09-23T22:00:08.4510115Z) color:red name:apple LongSum
Value: 6
(2021-09-23T22:00:08.4399776Z, 2021-09-23T22:00:08.4510115Z) color:yellow name:lemon LongSum
Value: 7
(2021-09-23T22:00:08.4399776Z, 2021-09-23T22:00:08.4510115Z) color:green name:apple LongSum
Value: 2

Вітаємо! Тепер ви збираєте метрики за допомогою OpenTelemetry.

Як це працює

Вимірювач

Застосунок створює екземпляр Вимірювача з імʼям “MyCompany.MyProduct.MyLibrary”. Вимірювач є точкою входу для створення інструментів метрик.

private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");
private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");

Інструмент Лічильник

Він потім створює Лічильник з Вимірювача. Лічильник використовується для вимірювання значення, яке невпинно зростає.

private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter");

Запис вимірювань

Лічильник використовується для звітування про кілька вимірювань метрик з різними комбінаціями атрибутів:

MyFruitCounter.Add(1, new("name", "apple"), new("color", "red"));

Конфігурація MeterProvider

OpenTelemetry MeterProvider налаштований на:

  1. Підписку на інструменти з вказаного лічильника
  2. Експорт метрик на консоль
var meterProvider = Sdk.CreateMeterProviderBuilder()
    .AddMeter("MyCompany.MyProduct.MyLibrary")
    .AddConsoleExporter()
    .Build();

MeterProvider агрегує вимірювання в памʼяті з обмеженням кардинальності стандартно у 2000 комбінацій атрибутів.

Обробка метрик з високою кардинальністю

Якщо вам потрібно збирати метрики з кардинальністю, що перевищує стандартний ліміт у 2000, ви можете налаштувати ліміт кардинальності:

var meterProvider = Sdk.CreateMeterProviderBuilder()
    .AddMeter("MyCompany.MyProduct.MyLibrary")
    .AddView(instrumentName: "MyFruitCounter", new MetricStreamConfiguration { CardinalityLimit = 10 })
    .AddConsoleExporter()
    .Build();

Потік метрик

Потік метрик в OpenTelemetry .NET відбувається за таким алгоритмом:

  1. Інструменти записують вимірювання
  2. MeterProvider отримує та агрегує вимірювання
  3. MetricReader зчитує агреговані метрики
  4. Exporter експортує метрики до бекенду

Особлива примітка щодо OpenTelemetry .NET

Метрики в OpenTelemetry .NET є дещо унікальною реалізацією, оскільки більшість Metrics API реалізовано самим середовищем виконання .NET. На вищому рівні це означає, що ви можете інструментувати свій застосунок, просто використовуючи пакунок System.Diagnostics.DiagnosticSource.

Дізнайтеся більше


Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (2a3c5648)