Початок роботи з метриками — Консоль
Цей посібник покаже вам, як почати роботу з 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 налаштований на:
- Підписку на інструменти з вказаного лічильника
- Експорт метрик на консоль
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 відбувається за таким алгоритмом:
- Інструменти записують вимірювання
- MeterProvider отримує та агрегує вимірювання
- MetricReader зчитує агреговані метрики
- Exporter експортує метрики до бекенду
Особлива примітка щодо OpenTelemetry .NET
Метрики в OpenTelemetry .NET є дещо унікальною реалізацією, оскільки більшість Metrics API реалізовано самим середовищем виконання .NET. На вищому рівні це означає, що ви можете інструментувати свій застосунок, просто використовуючи пакунок System.Diagnostics.DiagnosticSource.
Дізнайтеся більше
Відгук
Чи це було корисним?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!