ASP.NET 7 使用 OpenTelemetry 与 SigNoz 实现分布式追踪与性能监控教程
作者:API传播员 · 2025-10-14 · 阅读时间:4分钟
本文详细介绍了如何在ASP.NET Core 7中集成OpenTelemetry与SigNoz,通过构建一个简单的REST API并添加OpenTelemetry埋点,将数据发送到SigNoz进行监控。文章涵盖了从环境准备、创建基础Web应用、添加OpenTelemetry支持到搭建SigNoz测试环境的完整流程,旨在帮助开发者快速定位性能瓶颈,提升系统的可靠性和用户体验。
文章目录
一. OpenTelemetry 简介
OpenTelemetry 是一套工具、API 和 SDK 集合,用于生成、收集和导出遥测数据(指标、日志和追踪),帮助开发者分析软件性能与行为。
1. 典型应用场景
a. 多数据源服务性能分析
- 测量每个 API 调用总耗时
- 精确统计 SQL 查询和后端 REST API 调用耗时
b. 微服务架构性能监控
- 结合分布式追踪快速定位性能瓶颈
- 精确分析微服务调用链路
二. 环境准备
- 操作系统:本文基于 Ubuntu Linux,Windows 用户可使用 WSL2
- 工具与依赖:.NET 7 SDK
- 开发工具:Visual Studio 2022 或 VS Code
- 目标监控平台:SigNoz
三. 创建基础 ASP.NET Core 7 Web 应用
1. 创建项目并添加响应模型
新建 Data.cs
文件,用于定义 API 响应模型。
2. 编辑 Program.cs
文件
app.MapGet("/hello", () => "Hello World!");
3. 构建并启动应用
- 控制台显示监听地址,例如
http://localhost:5263
- 使用浏览器或 curl 访问
/hello
,返回“Hello World!”
四. 集成 OpenTelemetry
1. 安装依赖项
dotnet add package OpenTelemetry.Exporter.Console
dotnet add package OpenTelemetry.Extensions.Hosting
dotnet add package OpenTelemetry.Instrumentation.AspNetCore --prerelease
2. 配置 OpenTelemetry
builder.Services.AddOpenTelemetryTracing(builder =>
{
builder
.AddAspNetCoreInstrumentation()
.AddConsoleExporter();
});
3. 验证追踪信息
- 重建并运行应用
- 使用 curl 调用
/hello
,控制台显示追踪日志
五. 搭建 SigNoz 测试环境
1. 部署 SigNoz
git clone https://github.com/SigNoz/signoz.git
cd signoz/deploy/
./install.sh
2. 访问控制台
- 登录
http://localhost:3301/
创建管理员账户 - 查看 SigNoz 自身追踪数据
六. 配置 .NET 应用以使用 SigNoz
1. 修改导出器为 OTLPExporter
builder.Services.AddOpenTelemetryTracing(builder =>
{
builder
.AddAspNetCoreInstrumentation()
.AddOtlpExporter(options =>
{
options.Endpoint = new Uri("http://localhost:4317");
});
});
2. 压力测试 API
ab -n 1000 -c 10 http://localhost:5263/hello
- SigNoz 显示
/hello
端点的追踪数据 - 可分析平均响应时间与百分位
七. 模拟慢速后端 API
1. 创建 Service.cs
文件
public class SlowService
{
private static readonly Random Random = new();
public void SimulateDelay() => Thread.Sleep(Random.Next(100, 300));
}
2. 修改 Program.cs
var service = new SlowService();
app.MapGet("/hello", () =>
{
service.SimulateDelay();
return "Hello World!";
});
3. 验证效果
- 使用 ab 工具压力测试
- 响应时间在 100-300ms 波动,平均约 200ms
八. 添加手动埋点
using var activity = MyActivitySource.StartActivity("SlowSleep");
service.SimulateDelay();
/hello
与SlowSleep
操作在 SigNoz 追踪页面显示SlowSleep
稳定耗时 199-201ms/hello
平均耗时略高 199-205ms
九. 总结
本文介绍了如何在 ASP.NET 7 中:
- 集成 OpenTelemetry
- 使用 SigNoz 实现分布式追踪与性能监控
- 添加慢速模拟与手动埋点优化监控数据
- 分析响应时间、百分位及操作耗时
OpenTelemetry 与 SigNoz 的结合,为单体或微服务应用提供可视化性能分析与快速故障定位能力。
原文链接: https://apatisandor.hu/blog/opentelemetry-dotnet-signoz/
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- 完整指南:如何在应用程序中集成和使用ChatGPT API
- Amazon Bedrock × Stability AI:直播配图API批量渲染7天训练营
- InterSystems IRIS 2022.2 使用 JWT 保护 REST API 教程
- API分析 – 什么是 API 分析?
- 天文信息检索服务:如何让星空探索变得触手可及?
- 如何使用DBAPI快速搭建自己的API平台
- Workers AI合作模型助力短剧制作平台脚本生成API实战
- 如何获取 GPT-OSS API 密钥(分步指南)
- 人脸识别 API 合规升级下的银行开放 API 2025 全栈实战清单
- GPT-OSS 模型驱动在线编程课 AI 助教,3 天打造追问式对话 API
- Kimi K2-0905 256K上下文API状态管理优化:长流程复杂任务实战
- Go工程化(四) API 设计上: 项目结构 & 设计