文章目錄
[Zipkin] 使用 OpenTelemetry 來追蹤 ASP.NET Core
這是延續之前筆記 [Jaeger] 使用 OpenTelemetry 來追蹤 ASP.NET Core 進行嘗試的筆記,過去使用 OpenTracing 時因為 Zipkin 與 .NET Core 的整合程式較低,設定上繁瑣許多,加上無法處理主要想追蹤 gRPC 所以當時並沒有採用,不過目前看相關文件看似可用,就來測試做個紀錄吧
基本環境說明
- macOS Big Sur 11.2.3
docker desktop 3.2.2 (61853)
- openzipkin/zipkin-slim:2
.NET Core SDK 5.0.103
- ASP.NET Core 預設專案範本
NuGet packages
- OpenTelemetry.Extensions.Hosting 1.0.0-rc3
- OpenTelemetry.Instrumentation.AspNetCore 1.0.0-rc3
- OpenTelemetry.Exporter.Zipkin 1.1.0-beta1
設定方式
建立 Jaeger 環境
docker run -d -p 9411:9411 openzipkin/zipkin-slim:2
安裝 NuGet 套件
- OpenTelemetry.Extensions.Hosting 1.0.0-rc3
- OpenTelemetry.Instrumentation.AspNetCore 1.0.0-rc3
- OpenTelemetry.Exporter.Zipkin 1.1.0-beta1
新增 config
{ "Zipkin": { "ServiceName": "zipkin-test", "Endpoint": "http://localhost:9411/api/v2/spans" } }
註冊 Jaeger
Startup.cs 的
ConfigureServices
方法services.AddOpenTelemetryTracing((builder) => builder .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(this.Configuration.GetValue<string>("Zipkin:ServiceName"))) .AddAspNetCoreInstrumentation() .AddZipkinExporter()); services.Configure<ZipkinExporterOptions>(this.Configuration.GetSection("Zipkin"));
實際效果
心得
整體設定流程與 [Jaeger] 使用 OpenTelemetry 來追蹤 ASP.NET Core 完全相同,整體使用體驗非常好,跟之前 OpenTracing 完全不同的設定方法差距很大
但有個小問題是設定方式的 官方 GitHub sample 有錯,少了 service name 的設定,幸虧與 Jaeger 設定方式完全一樣,沒造成多大的問題
依 官方 GitHub sample 程式碼設定會出現 unknown_service:dotnet
完整程式碼可以參考:yowko/aspdotnet-core-opentelemetry
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。