事件
.NET Aspire Seq 整合
Seq 是一種自我裝載的搜尋和分析伺服器,可處理結構化的應用程式記錄和追蹤檔案。 它包含 JSON 事件存放區和簡單的查詢語言,可讓您輕鬆使用。 您可以使用 .NET AspireSeq 整合,將 OpenTelemetry 通訊協定 (OTLP) 資料傳送至 Seq。 整合支援在應用程式重新啟動後持續的記錄和追蹤。
在開發期間,.NET.NET Aspire 會執行並連線到 datalust/seq
容器映射。
Seq 裝載整合將伺服器模型化為 SeqResource 類型。 若要存取此類型和 API,請在 📦 專案中新增 AspireSeq.Hosting. NuGet 套件。
dotnet add package Aspire.Hosting.Seq
如需詳細資訊,請參閱 dotnet add package 或 管理 .NET 應用程式中的套件相依性。
在您的應用程式主專案中,呼叫 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。 若要在程式代碼中接受合約,請將環境變數 ACCEPT_EULA
傳遞至 Seq 容器,並將其值設定為 Y
。 此程式碼在鏈式呼叫中傳遞這個變數給 WithEnvironment。
在應用程式主專案中向數據目錄註冊 Seq,以在應用程式重新啟動時保留 Seq的數據和設定:
var seq = builder.AddSeq("seq", seqDataDirectory: "./seqdata")
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent);
指定的目錄必須已經存在。
若要將數據磁碟區新增至 Seq 資源,請在 WithDataVolume 資源上呼叫 Seq 方法:
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 數據保存在其容器生命週期之外。 資料量會掛接在 /data
路徑下的 Seq 容器中,當未提供 name
參數時,名稱會隨機生成。 如需有關數據磁碟區的更多資訊,以及為什麼它們比 系結掛接更受偏好的詳細資訊,請參閱 Docker 文件:磁碟區。
若要將數據系結掛接新增至 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 數據。 數據綁定掛載會掛載在 C:\Data
容器中主機上的 /Data
路徑(或 Unix上的 Seq 路徑)。 如需資料系結掛接的詳細資訊,請參閱 Docker 檔:系結掛接。
若要開始使用 .NET AspireSeq 用戶端整合,請安裝 📦Aspire。Seq 客戶端取用專案中的 NuGet 套件,也就是使用 Seq 客戶端的應用程式專案。
dotnet add package Aspire.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 在 C# 中應用程式健康情況檢查
中的 健康情況檢查
.NET Aspire Seq 整合會處理下列事項:
- 當 SeqSettings.DisableHealthChecks 為
false
時,新增健康情況檢查,這會嘗試連線到 Seq 伺服器的/health
端點。 - 與
/health
HTTP 端點整合,並指定所有已註冊的健康檢查都必須通過,應用程式才視為準備好接受流量。
.NET .NET Aspire 整合會自動設定記錄、追蹤和度量組態,有時稱為 可觀察性要素。 如需整合可觀察性和遙測的詳細資訊,請參閱 .NET.NET Aspire 整合概觀。 視支援服務而定,某些整合可能只支援其中一些功能。 例如,某些整合支援記錄和追蹤,但不支援計量。 您也可以使用 組態 一節中呈現的技術來停用遙測功能。
.NET Aspire Seq 整合會使用下列記錄類別:
Seq
.NET Aspire Seq 整合不會發出追蹤活動和/或指標,因為它是遙測接收端,而不是遙測來源端。
其他資源
訓練
模組
在 .NET Aspire 專案中使用遙測 - Training
在本課程模組中,您將會了解如何使用遙測來記錄雲端原生應用程式的行為,以及 .NET Aspire 堆疊如何讓您更輕鬆地儲存資料並在稍後檢視。