Експорт до Jaeger
Цей посібник покаже вам, як експортувати трасування OpenTelemetry .NET до Jaeger для візуалізації та аналізу.
Необхідні умови
- .NET SDK встановлений на вашому компʼютері
- Jaeger завантажений (цей посібник охоплює установку)
- Ознайомлення з основними концепціями OpenTelemetry (див. GПочаток роботи з консоллю)
Створення застосунку .NET з експортом OTLP
Створіть новий консольний застосунок:
dotnet new console --output getting-started-jaeger
cd getting-started-jaeger
Встановіть необхідні пакунки OpenTelemetry:
dotnet add package OpenTelemetry.Exporter.Console
dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
dotnet add package OpenTelemetry.Instrumentation.Http
Оновіть файл Program.cs наступним кодом:
using System.Diagnostics;
using OpenTelemetry;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
namespace GettingStartedJaeger;
internal static class Program
{
private static readonly ActivitySource MyActivitySource = new("OpenTelemetry.Demo.Jaeger");
public static async Task Main()
{
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(
serviceName: "DemoApp",
serviceVersion: "1.0.0"))
.AddSource("OpenTelemetry.Demo.Jaeger")
.AddHttpClientInstrumentation()
.AddConsoleExporter()
.AddOtlpExporter()
.Build();
using var parent = MyActivitySource.StartActivity("JaegerDemo");
using (var client = new HttpClient())
{
using (var slow = MyActivitySource.StartActivity("SomethingSlow"))
{
await client.GetStringAsync(new Uri("https://httpstat.us/200?sleep=1000")).ConfigureAwait(false);
await client.GetStringAsync(new Uri("https://httpstat.us/200?sleep=1000")).ConfigureAwait(false);
}
using (var fast = MyActivitySource.StartActivity("SomethingFast"))
{
await client.GetStringAsync(new Uri("https://httpstat.us/301")).ConfigureAwait(false);
}
}
}
}
Коли ви запускаєте цей застосунок, він виводить трейси в консоль за допомогою ConsoleExporter, а також намагається надіслати трейси до Jaeger за допомогою OtlpExporter. Оскільки Jaeger ще не налаштований, ці трейси спочатку будуть відкинуті.
Налаштування Jaeger
Jaeger — це система розподіленого трасування з відкритим вихідним кодом, яка допомагає моніторити та усувати неполадки в мікросервісних застосунках.
Встановлення та запуск Jaeger
- Завантажте Jaeger з офіційної сторінки завантаження.
- Розпакуйте його в будь-яке місце на вашому компʼютері.
- Запустіть виконуваний файл Jaeger all-in-one з увімкненим OTLP:
./jaeger-all-in-one --collector.otlp.enabled
Він запускає:
- Jaeger UI (
http://localhost:16686) - Колектор Jaeger з приймачем OTLP (
http://localhost:4317) - Служба запитів Jaeger та інші компоненти
Перегляд трейсів у Jaeger
- Відкрийте вебоглядач і перейдіть за адресою http://localhost:16686
- Запустіть свій .NET застосунок
- У Jaeger UI:
- Виберіть “DemoApp” зі списку “Service”
- Натисніть “Find Traces”
Ви повинні побачити трейси вашого застосунку в Jaeger UI. Натисніть на трейс, щоб побачити детальний вигляд діаграми Гантта всіх відрізків у трейсі.
Як працює код
Налаштування провайдера трасування
Застосунок налаштовує OpenTelemetry за допомогою:
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(
serviceName: "DemoApp",
serviceVersion: "1.0.0"))
.AddSource("OpenTelemetry.Demo.Jaeger")
.AddHttpClientInstrumentation()
.AddConsoleExporter()
.AddOtlpExporter()
.Build();
Цей код:
- Налаштовує ресурс з імʼям служби та версією
- Реєструє наше джерело активності
- Додає автоматичну інструментацію для HttpClient
- Налаштовує експортери консолі та OTLP
Створення активності
Застосунок створює відрізки за допомогою ActivitySource:
private static readonly ActivitySource MyActivitySource = new("OpenTelemetry.Demo.Jaeger");
// Створити батьківський відрізок
using var parent = MyActivitySource.StartActivity("JaegerDemo");
// Створити дочірні відрізки
using (var slow = MyActivitySource.StartActivity("SomethingSlow"))
{
// Операції всередині цього блоку будуть частиною відрізку «SomethingSlow».
}
Відстеження потоку експорту
Дані трасування проходять через такі компоненти:
- Застосунок створює відрізки за допомогою ActivitySource
- TracerProvider збирає та обробляє відрізки
- OTLP Exporter надсилає відрізки до Jaeger через протокол OTLP
- Jaeger зберігає та дозволяє вам запитувати і візуалізувати трасування
Промислове використання
Для промислового використання вам слід видалити експортер консолі та використовувати лише експортер OTLP:
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(
serviceName: "DemoApp",
serviceVersion: "1.0.0"))
.AddSource("OpenTelemetry.Demo.Jaeger")
.AddHttpClientInstrumentation()
// Вилучення Console Exporter
// .AddConsoleExporter()
.AddOtlpExporter()
.Build();
Ви також можете видалити пакунок Console Exporter:
dotnet remove package OpenTelemetry.Exporter.Console
Дізнайтесь більше
Відгук
Чи це було корисним?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!