バックエンドへのエクスポート
テレメトリをOTLPコレクターやツールに送信します。
「バックエンドへのエクスポート」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
テレメトリを外部へ送る
トレースとメトリクスの生成は作業の半分にすぎません。データを保存、検索、可視化するバックエンドへエクスポートする必要があります。OpenTelemetry では、そのためにエクスポーターを使用します。
エクスポーター
エクスポーターは、テレメトリを送信先へ送ります。エクスポーターによって対象システムが異なります。コンソール(開発用)、OTLP(標準プロトコル)、ベンダー固有のエクスポーターなどがあります。
コンソールエクスポーター
コンソールエクスポーターはテレメトリをターミナルに出力するため、開発中の計装の検証に最適です。
builder.Services.AddOpenTelemetry()
.WithTracing(t => t.AddConsoleExporter())
.WithMetrics(m => m.AddConsoleExporter());OTLP とは
OTLP(OpenTelemetry Protocol)は、テレメトリを送信するためのベンダーニュートラルな通信形式です。OTLP 経由でエクスポートすれば、アプリケーションコードを変更せずに、OTLP 対応の任意のバックエンドへ送信できます。
dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocolOTLP エクスポーターの構成
AddOtlpExporterを追加し、コレクターまたはバックエンドのエンドポイントを指定します。
builder.Services.AddOpenTelemetry()
.WithTracing(t => t.AddOtlpExporter(o =>
{
o.Endpoint = new Uri("http://localhost:4317");
}))
.WithMetrics(m => m.AddOtlpExporter());OpenTelemetry Collector
Collectorは、テレメトリを受信し、バッチ処理、フィルタリング、情報付加などの処理を行ってから、1つ以上のバックエンドへ転送する独立したプロセスです。アプリケーションを特定のベンダーから切り離せます。
コレクターを使う理由
ベンダーへ直接送信すると、アプリケーションがそのベンダーに依存します。コレクターを使えば、複数のバックエンドへの切り替えや分岐、サンプリングとマスキングの一元適用が可能になり、サービスの負荷も軽減できます。
一般的なバックエンド
トレースはJaegerやTempoへ、メトリクスはPrometheusへ、ダッシュボードはGrafanaへ送ることが多くなります。ログはLokiや ELK スタックへ送信できます。いずれもコレクター経由で OTLP を受信できます。
すべてをつなぐ
一般的な構成では、1つのブロック内でリソース、ソース、メーター、OTLP エクスポーターを設定し、トレースとメトリクスをコレクターへ送信します。
builder.Services.AddOpenTelemetry()
.ConfigureResource(r => r.AddService("checkout-api"))
.WithTracing(t => t
.AddAspNetCoreInstrumentation()
.AddSource("Checkout.Orders")
.AddOtlpExporter())
.WithMetrics(m => m
.AddAspNetCoreInstrumentation()
.AddMeter("Checkout.Orders")
.AddOtlpExporter());ログのエクスポート
OTel はログもエクスポートします。ロギングパイプラインに組み込むことで、ログレコードに同じトレースコンテキストを持たせ、OTLP 経由でバックエンドへ送信できます。
builder.Logging.AddOpenTelemetry(o =>
{
o.AddOtlpExporter();
});バッチ処理と信頼性
エクスポーターはテレメトリをバッチ処理してオーバーヘッドを減らし、失敗時には再試行します。データ量に合わせてバッチサイズとタイムアウトを調整し、アプリケーションのスレッドがエクスポートでブロックされないよう、スパイクの吸収にはコレクターを利用することをおすすめします。
クイックチェック
バックエンドへのエクスポートを確認します。
まとめ
エクスポーターはテレメトリをバックエンドへ送信します。コンソールエクスポーターは開発に役立ち、OTLPはAddOtlpExporterとともに使用するベンダーニュートラルなプロトコルです。OTLP をOpenTelemetry Collectorへ送信すると、アプリケーションを切り離し、バッチ処理、サンプリング、ルーティングを一元化できます。また、Jaeger、Prometheus、Grafana などのバックエンドへ分岐して送信できます。ログもトレースコンテキストを保持したまま同じ方法でエクスポートできます。
よくある質問
「バックエンドへのエクスポート」レッスンは無料ですか?
はい。「バックエンドへのエクスポート」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「バックエンドへのエクスポート」で何を学びますか?
テレメトリをOTLPコレクターやツールに送信します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「バックエンドへのエクスポート」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。