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

Дізнайтеся, як використовувати трейсинг OpenTelemetry у .NET Консольному застосунку

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

Передумови

  • .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;
using OpenTelemetry;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;

namespace GettingStarted
{
    class Program
    {
        // Визначте ActivitySource для створення активності з
        private static readonly ActivitySource MyActivitySource = new ActivitySource(
            "MyCompany.MyProduct.MyLibrary");

        static void Main(string[] args)
        {
            // Налаштуйте OpenTelemetry TracerProvider
            using var tracerProvider = Sdk.CreateTracerProviderBuilder()
                .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("getting-started"))
                .AddSource("MyCompany.MyProduct.MyLibrary")
                .AddConsoleExporter()
                .Build();

            // Запустіть активність (span) з деякими теґами (атрибутами)
            using (var activity = MyActivitySource.StartActivity("SayHello"))
            {
                // Встановіть деякі атрибути для активності
                activity?.SetTag("foo", 1);
                activity?.SetTag("bar", "Hello, World!");
                activity?.SetTag("baz", new int[] { 1, 2, 3 });

                // Встановіть статус активності
                activity?.SetStatus(ActivityStatusCode.Ok);

                // Виконайте деяку роботу...
                Console.WriteLine("Hello World!");
            }

            Console.WriteLine("Trace has been exported. Press any key to exit.");
            Console.ReadKey();
        }
    }
}

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

Activity.TraceId:          d4a7d499698d62f0e2317a67abc559b6
Activity.SpanId:           a091d18fbe45bdf6
Activity.TraceFlags:       Recorded
Activity.ActivitySourceName: MyCompany.MyProduct.MyLibrary
Activity.DisplayName: SayHello
Activity.Kind:        Internal
Activity.StartTime:   2022-03-30T19:42:33.5178011Z
Activity.Duration:    00:00:00.0097620
StatusCode : Ok
Activity.Tags:
    foo: 1
    bar: Hello, World!
    baz: [1, 2, 3]
Resource associated with Activity:
    service.name: getting-started

Ви зараз збираєте трейси за допомогою OpenTelemetry.

Як це працює

ActivitySource (Tracer)

Програма створює ActivitySource, який представляє OpenTelemetry Tracer:

private static readonly ActivitySource MyActivitySource = new ActivitySource(
    "MyCompany.MyProduct.MyLibrary");

ActivitySource використовується для створення та запуску нових активностей.

Activity (Span)

Екземпляр ActivitySource використовується для запуску Activity, яка представляє OpenTelemetry Span. Ви можете встановити кілька тегів (атрибутів) на ньому та встановити його статус:

using (var activity = MyActivitySource.StartActivity("SayHello"))
{
    activity?.SetTag("foo", 1);
    activity?.SetTag("bar", "Hello, World!");
    activity?.SetTag("baz", new int[] { 1, 2, 3 });
    activity?.SetStatus(ActivityStatusCode.Ok);
}

TracerProvider

TracerProvider налаштований для підписки на активності з вказаного джерела та їх експорту:

var tracerProvider = Sdk.CreateTracerProviderBuilder()
    .AddSource("MyCompany.MyProduct.MyLibrary")
    .AddConsoleExporter()
    .Build();

TracerProvider є центральним компонентом SDK OpenTelemetry. Він містить усі налаштування для трасування, такі як семплери, процесори, експортери тощо, і є дуже гнучким у налаштуванні.

Конвеєр трасування

Конвеєр трасування в OpenTelemetry .NET має такий потік:

  1. ActivitySource створює Activities
  2. TracerProvider отримує Activities
  3. Processor обробляє Activities
  4. Exporter експортує Activities до бекенду

OpenTelemetry .NET та .NET Activity API

В OpenTelemetry .NET терміни ActivitySource і Activity використовуються замість Tracer і Span з специфікації OpenTelemetry. Це повʼязано з тим, що трасування в OpenTelemetry .NET реалізовано на основі вбудованої системи діагностики .NET.

Ви можете інструментувати свій застосунок, додаючи залежність від пакунка System.Diagnostics.DiagnosticSource, який надає класи Activity і ActivitySource, що представляють концепції OpenTelemetry Span і Tracer відповідно.

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


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