トレースを始める - ASP.NET Core
このガイドでは、ASP.NET Core アプリケーションで OpenTelemetry .NET トレースを始める方法を説明します。
前提条件
- コンピューターに .NET SDK がインストールされていること
ASP.NET Core アプリケーションの作成
新しい ASP.NET Core Web アプリケーションを作成します。
dotnet new web -o aspnetcoreapp
cd aspnetcoreapp
OpenTelemetry トレースの追加
必要な OpenTelemetry パッケージをインストールします。
dotnet add package OpenTelemetry.Exporter.Console
dotnet add package OpenTelemetry.Extensions.Hosting
dotnet add package OpenTelemetry.Instrumentation.AspNetCore
Program.cs ファイルを次のコードで更新します。
using System.Diagnostics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
var builder = WebApplication.CreateBuilder(args);
// トレースと自動起動で OpenTelemetry を設定する。
builder.Services.AddOpenTelemetry()
.ConfigureResource(resource => resource
.AddService(serviceName: builder.Environment.ApplicationName))
.WithTracing(tracing => tracing
.AddAspNetCoreInstrumentation()
.AddConsoleExporter());
var app = builder.Build();
app.MapGet("/", () => $"Hello World! OpenTelemetry Trace: {Activity.Current?.Id}");
app.Run();
アプリケーションの実行
アプリケーションを実行します。
dotnet run
コンソールに表示される URL(たとえば http://localhost:5000)をブラウザで開きます。
コンソールに次のようなトレース出力が表示されるはずです。
Activity.TraceId: c28f7b480d5c7dfc30cfbd80ad29028d
Activity.SpanId: 27e478bbf9fdec10
Activity.TraceFlags: Recorded
Activity.ActivitySourceName: Microsoft.AspNetCore
Activity.DisplayName: GET /
Activity.Kind: Server
Activity.StartTime: 2024-07-04T13:03:37.3318740Z
Activity.Duration: 00:00:00.3693734
Activity.Tags:
server.address: localhost
server.port: 5154
http.request.method: GET
url.scheme: https
url.path: /
network.protocol.version: 2
user_agent.original: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
http.route: /
http.response.status_code: 200
Resource associated with Activity:
service.name: getting-started-aspnetcore
service.instance.id: a388466b-4969-4bb0-ad96-8f39527fa66b
telemetry.sdk.name: opentelemetry
telemetry.sdk.language: dotnet
telemetry.sdk.version: 1.9.0
おめでとうございます!ASP.NET Core アプリケーションで OpenTelemetry を使用してトレースを収集できるようになりました。
仕組み
OpenTelemetry の登録
アプリケーションは、ASP.NET Core が提供する依存性注入コンテナを使用して OpenTelemetry サービスを登録します。
builder.Services.AddOpenTelemetry()
.ConfigureResource(resource => resource
.AddService(serviceName: builder.Environment.ApplicationName))
.WithTracing(tracing => tracing
.AddAspNetCoreInstrumentation()
.AddConsoleExporter());
このコードは次の処理を行います。
AddOpenTelemetry()で OpenTelemetry をサービスコレクションに追加するConfigureResource()でサービス情報を含むリソースを設定するWithTracing()でトレース収集をセットアップするAddAspNetCoreInstrumentation()で ASP.NET Core の自動計装を追加する- コンソールエクスポーターを設定してトレースをコンソールに出力する
ASP.NET Core の計装
AddAspNetCoreInstrumentation() メソッドは、HTTP リクエストのトレースを自動的に作成します。
これには次の情報が含まれます。
- リクエストの所要時間
- HTTP メソッド、ルート、ステータスコード
- ネットワーク情報
- ユーザーエージェント
これらのトレースは、コントローラーやミドルウェアに追加のコードを記述することなく収集されます。
現在の Activity へのアクセス
OpenTelemetry .NET では、Activity クラスが OpenTelemetry 仕様の「スパン」に対応します。
この例では、レスポンスに ID を含めるために現在の Activity にアクセスしています。
app.MapGet("/", () => $"Hello World! OpenTelemetry Trace: {Activity.Current?.Id}");
これにより、ブラウザでトレース ID を確認し、監視システム内のトレースと関連付けることができます。
さらに学ぶ
フィードバック
このページは役に立ちましたか?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!