OpenTelemetry在.NET中通過(guò)集成SDK實(shí)現(xiàn)追蹤、指標(biāo)和日志的統(tǒng)一采集,使用NuGet包如OpenTelemetry.Extensions.Hosting和Instrumentation組件,在Program.cs中配置ASP.NET Core和HttpClient的自動(dòng)監(jiān)控,并通過(guò)OTLP導(dǎo)出數(shù)據(jù);結(jié)合Jaeger等后端可查看調(diào)用鏈,需確保服務(wù)名設(shè)置正確且網(wǎng)絡(luò)通暢。
OpenTelemetry 是一個(gè)開(kāi)源的觀測(cè)性框架,用于統(tǒng)一采集應(yīng)用的追蹤(Tracing)、指標(biāo)(Metrics)和日志(Logs)。它幫助開(kāi)發(fā)者監(jiān)控分布式系統(tǒng)中的請(qǐng)求流程,定位性能瓶頸,并了解服務(wù)間的調(diào)用關(guān)系。在 .NET 應(yīng)用中集成 OpenTelemetry,可以輕松實(shí)現(xiàn)對(duì) HTTP 請(qǐng)求、數(shù)據(jù)庫(kù)調(diào)用、依賴(lài)服務(wù)等操作的自動(dòng)遙測(cè)數(shù)據(jù)收集。
要在 .NET 應(yīng)用中啟用 OpenTelemetry,需要引入相關(guān) SDK 和擴(kuò)展包。以下是最常用的幾個(gè)包:
通過(guò)命令行或 Visual Studio 安裝這些包:
dotnet add package OpenTelemetry.Extensions.Hosting dotnet add package OpenTelemetry.Instrumentation.AspNetCore dotnet add package OpenTelemetry.Instrumentation.Http dotnet add package OpenTelemetry.Exporter.Otlp在 .NET 6+ 的 Minimal API 模型中,可以在 Program.cs 中配置 OpenTelemetry。以下是一個(gè)典型配置示例:
var builder = WebApplication.CreateBuilder(args); // 添加 OpenTelemetry 服務(wù) builder.Services.AddOpenTelemetry() .WithTracing(tracing => tracing .AddAspNetCoreInstrumentation() // 監(jiān)控 ASP.NET Core 請(qǐng)求 .AddHttpClientInstrumentation() // 監(jiān)控 HttpClient 調(diào)用 .AddOtlpExporter()); // 導(dǎo)出到 OTLP 接收器 var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();這段代碼啟用了對(duì) Web 請(qǐng)求和外部 HTTP 調(diào)用的自動(dòng)追蹤,并通過(guò) OTLP 協(xié)議將追蹤數(shù)據(jù)發(fā)送出去,默認(rèn)會(huì)發(fā)往本地運(yùn)行的 OpenTelemetry Collector 或兼容后端(如 http://localhost:4317)。
除了自動(dòng)收集,你還可以手動(dòng)創(chuàng)建跨度(Span)來(lái)記錄特定邏輯塊的執(zhí)行情況:
using var activity = MyActivitySource.StartActivity("BusinessOperation"); activity?.SetTag("user.id", "123"); // 執(zhí)行業(yè)務(wù)邏輯要使用自定義 Activity,需先定義 ActivitySource:
public static class MyActivitySource { public static readonly ActivitySource Instance = new ActivitySource("MyApp"); }別忘了在項(xiàng)目中引用 System.Diagnostics.DiagnosticSource。
要看到收集的數(shù)據(jù),你需要一個(gè)后端觀測(cè)平臺(tái)。常見(jiàn)選擇包括:
例如,使用 Docker 啟動(dòng) Jaeger:
docker run -d --name jaeger \ -e COLLECTOR_OTLP_ENABLED=true \ -p 16686:16686 \ -p 4317:4317 \ jaegertracing/all-in-one然后訪問(wèn) http://localhost:16686 查看追蹤界面。
基本上就這些。OpenTelemetry 在 .NET 中集成簡(jiǎn)單,自動(dòng)化程度高,配合現(xiàn)代可觀測(cè)性工具鏈能大幅提升問(wèn)題排查效率。不復(fù)雜但容易忽略的是確保服務(wù)名稱(chēng)正確設(shè)置和網(wǎng)絡(luò)可達(dá)性。
以上就是什么是 OpenTelemetry,如何集成到 .NET 應(yīng)用中?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)