.NET Aspire Seq 統合
Seq は、構造化されたアプリケーション ログとトレース ファイルを処理するセルフホステッド検索および分析サーバーです。 これには、JSON イベント ストアと、使いやすい単純なクエリ言語が含まれています。 .NET Aspire Seq 統合を使用して、OpenTelemetry プロトコル (OTLP) データを Seqに送信できます。 統合では、アプリケーションの再起動を通じて永続的なログとトレースがサポートされます。
開発中は、.NET.NET Aspire が実行され、datalust/seq
コンテナー イメージに接続されます。
ホスティング統合
Seq ホスティング統合は、サーバーを SeqResource の種類としてモデル化します。 この型と API にアクセスするには、アプリ ホスト プロジェクトに 📦AspireのホスティングSeq NuGet パッケージを追加します。
dotnet add package Aspire.Hosting.Seq
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
Seq リソースを追加する
アプリ ホスト プロジェクトで、AddSeq を呼び出して、Seq リソース ビルダーを追加して返します。
var builder = DistributedApplication.CreateBuilder(args);
var seq = builder.AddSeq("seq")
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent)
.WithEnvironment("ACCEPT_EULA", "Y");
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(seq)
.WaitFor(seq);
// After adding all resources, run the app...
手記
Seq コンテナーの起動に時間がかかる可能性があるため、不要な再起動を避けるために、永続的な の有効期間を使用することをお勧めします。 詳細については、「コンテナー リソースの有効期間 」を参照してください。
Seq エンドユーザー使用許諾契約書 (EULA) に同意する
Seq を開始するには、Seq EULA に同意する必要があります。 コードで契約に同意するには、Seq コンテナーに ACCEPT_EULA
環境変数を渡し、その値を Y
に設定します。 上記のコードは、WithEnvironmentへのチェーン呼び出しでこの変数を渡します。
Seq マニフェストの .NET Aspire
Seq は、.NET Aspire配置マニフェストのに含まれてはなりません。そのため、ExcludeFromManifestへのチェーン呼び出しが行われます。 運用環境の .NET Aspire の外部で、セキュリティで保護された運用 Seq サーバーを設定することをお勧めします。
永続的なログとトレース
Seq をアプリ ホスト プロジェクトのデータ ディレクトリに登録して、アプリケーションの再起動後も Seqのデータと構成を保持します。
var seq = builder.AddSeq("seq", seqDataDirectory: "./seqdata")
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent);
指定されたディレクトリは既に存在している必要があります。
データ ボリュームを持つ Seq リソースを追加する
Seq リソースにデータ ボリュームを追加するには、Seq リソースで WithDataVolume メソッドを呼び出します。
var builder = DistributedApplication.CreateBuilder(args);
var seq = builder.AddSeq("seq")
.WithDataVolume()
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent);
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(seq)
.WaitFor(seq);
データ ボリュームは、Seq データをコンテナーのライフサイクル外に保持するために使用されます。 データ ボリュームは、Seq コンテナー内の /data
パスにマウントされ、name
パラメーターが指定されていない場合、名前はランダムに生成されます。 詳しいデータボリュームの情報や、バインドマウントよりも好まれる理由については、Docker のドキュメント「ボリューム」を参照してください。
Seq リソースをデータ バインド マウントとして追加する
Seq リソースにデータ バインド マウントを追加するには、WithDataBindMount メソッドを呼び出します。
var builder = DistributedApplication.CreateBuilder(args);
var seq = builder.AddSeq("seq")
.WithDataBindMount(source: @"C:\Data")
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent);
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(seq)
.WaitFor(seq);
大事な
データ バインド マウント、パフォーマンス、移植性、およびセキュリティが向上し、運用環境に適した ボリュームと比較して機能が制限されています。 ただし、バインド マウントを使用すると、ホスト システム上のファイルに直接アクセスして変更できるため、リアルタイムの変更が必要な開発とテストに最適です。
データ バインド マウントは、ホスト マシンのファイルシステムに依存して、コンテナーの再起動間に Seq データを保持します。 データ バインド マウントは、Seq コンテナー内のホスト コンピューター上の Windows 上の C:\Data
(または Unixの /Data
) パスにマウントされます。 データ バインド マウントの詳細については、「Docker 資料: バインド マウント」を参照してください。
Client 統合
.NET Aspire Seq クライアント統合を開始するには、📦Aspireをインストールします。Seq クライアントを使用するプロジェクト、つまり、Seq クライアントを使用するアプリケーションのプロジェクトの NuGet パッケージです。
dotnet add package Aspire.Seq
Seq クライアントを追加する
クライアントを使用するプロジェクトの Program.cs ファイルで、AddSeqEndpoint 拡張メソッドを呼び出してプロトコル エクスポーター OpenTelemetry 登録し、ログとトレースを Seq と .NET Aspire ダッシュボードに送信します。 このメソッドは、接続名パラメーターを受け取ります。
builder.AddSeqEndpoint(connectionName: "seq");
チップ
connectionName
パラメーターは、アプリ ホスト プロジェクトに Seq リソースを追加するときに使用する名前と一致する必要があります。 つまり、AddSeq
を呼び出す際に指定した seq
の名前は、AddSeqEndpoint
を呼び出すときにも同じように使用する必要があります。 詳細については、「Seq リソースを追加する」を参照してください。
設定
.NET Aspire Seq 統合には、プロジェクトの要件と規則に基づいて Seq への接続を構成するための複数のオプションが用意されています。
構成プロバイダーを使用する
.NET Aspire
Seq 統合では、Microsoft.Extensions.Configurationがサポートされます。
SeqSettings キーを使用して、構成から Aspire:Seq
を読み込みます。 次のスニペットは、いくつかのオプションを構成する appsettings.json ファイルの例です。
{
"Aspire": {
"Seq": {
"DisableHealthChecks": true,
"ServerUrl": "http://localhost:5341"
}
}
}
完全な Seq クライアント統合 JSON スキーマについては、Aspireを参照してください。Seq/ConfigurationSchema.json.
インライン デリゲートを使用する
また、Action<SeqSettings> configureSettings
デリゲートを渡して、一部またはすべてのオプションをインラインで設定できます。たとえば、コードから正常性チェックを無効にすることができます。
builder.AddSeqEndpoint("seq", static settings =>
{
settings.DisableHealthChecks = true;
settings.ServerUrl = "http://localhost:5341"
});
正常性チェック
既定では、.NET.NET Aspire 統合により、すべてのサービス 正常性チェック が有効になります。 詳細については、.NET.NET Aspire 統合の概要を参照してください。
.NET Aspire Seq 統合では、次の処理が行われます。
-
SeqSettings.DisableHealthChecks が
false
されたときに正常性チェックを追加します。これは、Seq サーバーの/health
エンドポイントへの接続を試みます。 -
/health
HTTP エンドポイントと統合されます。このエンドポイントは、アプリがトラフィックを受け入れる準備ができていると見なされるために、登録されているすべての正常性チェックに合格する必要があります。
可観測性とテレメトリ
伐採
.NET Aspire Seq 統合では、次のログ カテゴリが使用されます。
Seq
トレースとメトリック
.NET Aspire Seq 統合では、テレメトリ ソースではなくテレメトリ シンクであるため、トレース アクティビティやメトリックは出力されません。
参照
.NET Aspire