发布时间:2026/8/26 20:00:55
数据库链路追踪深度实践:如何为SQL Server和Entity Framework Core启用opentelemetry-dotnet-contrib遥测 数据库链路追踪深度实践如何为SQL Server和Entity Framework Core启用opentelemetry-dotnet-contrib遥测【免费下载链接】opentelemetry-dotnet-contribThis repository contains set of components extending functionality of the OpenTelemetry .NET SDK. Instrumentation libraries, exporters, and other components can find their home here.项目地址: https://gitcode.com/gh_mirrors/op/opentelemetry-dotnet-contribopentelemetry-dotnet-contrib是 OpenTelemetry .NET SDK 的官方扩展仓库提供了一系列开箱即用的 instrumentation 库和 exporter。本文手把手教你为SQL ServerSqlClient和Entity Framework Core启用数据库链路追踪几分钟内就能看到完整的数据库调用链与性能指标帮你快速定位慢查询。为什么数据库追踪值得优先接入数据库往往是后端应用性能的重灾区。启用数据库链路追踪后你可以看到每一条 SQL 的执行耗时快速锁定慢查询关联上下游调用HTTP 请求 → 服务 → 数据库形成完整链路获得标准化指标如db.client.operation.duration数据库操作耗时直方图⚠️自动标记错误异常时 span 会带上error.type属性便于告警本仓库中两个核心组件组件状态适用场景OpenTelemetry.Instrumentation.SqlClientStable稳定版直接使用Microsoft.Data.SqlClient/System.Data.SqlClientOpenTelemetry.Instrumentation.EntityFrameworkCoreBeta预发布使用 EF Core 访问关系型数据库一键启用 SqlClient 数据库链路追踪第一步安装 NuGet 包dotnet add package OpenTelemetry.Instrumentation.SqlClient第二步在应用启动时注册using var tracerProvider Sdk.CreateTracerProviderBuilder() .AddSqlClientInstrumentation() .AddConsoleExporter() // 实际项目中替换为 OTLP 等导出器 .Build();仅两行核心代码所有通过 SqlClient 执行的数据库操作就会被自动追踪。完整的官方说明见 README.md。你会采集到哪些数据每个数据库 span 都会自动携带语义约定v1.44属性属性含义db.system.name数据库系统如microsoft.sql_serverdb.namespace数据库名称db.operation.name操作类型如SELECTdb.query.summary已脱敏的 SQL 查询摘要server.address/server.port数据库服务器地址与端口error.type出错时的异常类型同时还会暴露指标db.client.operation.duration单位秒用于在监控面板中观察数据库操作耗时分布。 源码中指标定义可见 SqlTelemetryHelper.cs其中预设了 0.001s 到 10s 的分桶边界天然适合数据库场景。进阶配置过滤、增强与实验特性通过SqlClientTraceInstrumentationOptions可精细控制行为选项定义见 SqlClientTraceInstrumentationOptions.cs只追踪特定命令Filter例如只采集存储过程调用减少噪音.AddSqlClientInstrumentation(opt opt.Filter cmd cmd is SqlCommand c c.CommandType CommandType.StoredProcedure)增强 spanEnrichWithSqlCommand可拿到原始SqlCommand对象补充自定义标签如命令超时时间CommandTimeout。记录异常事件RecordException设为true后SqlException会作为 Activity Event 记录在 span 上默认关闭仅 .NET 运行时支持。三个实验特性环境变量开启环境变量作用OTEL_DOTNET_EXPERIMENTAL_SQLCLIENT_ENABLE_TRACE_DB_QUERY_PARAMETERS输出db.query.parameter.key参数属性 ⚠️ 参数可能含敏感数据谨慎开启OTEL_DOTNET_EXPERIMENTAL_SQLCLIENT_ENABLE_RECORD_RETURNED_ROWS记录db.response.returned_rows返回行数OTEL_DOTNET_EXPERIMENTAL_SQLCLIENT_ENABLE_TRACE_CONTEXT_PROPAGATION将 traceparent 写入数据库CONTEXT_INFO实现服务端追踪⚠️ 注意Microsoft.Data.SqlClientv3.x 版本存在已知问题instrumentation 不生效v4.0 已修复请升级到 4.0。为 Entity Framework Core 启用追踪如果你的应用通过 EF Core 访问数据库可以叠加 EF Core instrumentation 获得 ORM 层的视图当前支持 SQL Server、PostgreSQL 等关系型数据库不支持 Cosmos DB 等 NoSQL。安装与注册dotnet add package --prerelease OpenTelemetry.Instrumentation.EntityFrameworkCoreservices.AddOpenTelemetry() .WithTracing(builder builder .AddEntityFrameworkCoreInstrumentation() .AddConsoleExporter());在 ASP.NET Core 中通常放在ConfigureServices里即可。详细文档见 README.md。同样支持 Filter 与增强.AddEntityFrameworkCoreInstrumentation(options { options.Filter (providerName, command) command.CommandType CommandType.StoredProcedure; // 仅存储过程 })选项定义见 EntityFrameworkInstrumentationOptions.cs。 EF Core 与 SqlClient instrumentation 可以同时启用EF Core 层提供 ORM 视角SqlClient 层提供更底层的 SQL 细节两者互不冲突。避坑指南新手最容易踩的 4 个坑Activity.Duration不含读取结果集的时间ExecuteReader()场景下span 时长只统计到请求成功为止遍历DataReader的时间不算在内。若发现span 很快但页面很慢大概率时间花在数据枚举上。Microsoft.Data.SqlClientv3.不兼容* 升级到 v4.0否则 instrumentation 静默失效。Filter、EnrichWithSqlCommand、RecordException仅 .NET 运行时可用.NET Framework 下这些选项不存在需要依赖Filter之外的其他方式控制。EF Core 组件是 Beta 版本基于实验性语义约定未来版本可能有破坏性变更生产使用请留意 CHANGELOG.md。常见问题FAQQspan 里的 SQL 语句会被完整记录吗A不会。查询文本经过脱敏处理db.query.summary字面量值会被替换避免数据泄露。脱敏逻辑见 SqlProcessor.cs。Q如何把数据导出到监控平台A把AddConsoleExporter()替换为你使用的 exporter如 OTLP、GenAI/Geneva 等本仓库也提供了 Exporter.Geneva 等官方扩展。Q如何查看测试用例学习用法A参考 OpenTelemetry.Instrumentation.SqlClient.Tests 与 OpenTelemetry.Instrumentation.EntityFrameworkCore.Tests其中覆盖了各种 SQL 场景下的追踪行为。总结步骤操作1dotnet add package安装对应 instrumentation 包2启动时调用AddSqlClientInstrumentation()/AddEntityFrameworkCoreInstrumentation()3按需配置Filter、Enrich与实验特性4接入 exporter在 Grafana 等平台查看链路只需极少量代码你就能获得标准化的数据库链路追踪与指标。建议先用控制台导出器本地验证 span 结构再接入生产监控栈平滑完成从猜慢查询到看链路的升级 【免费下载链接】opentelemetry-dotnet-contribThis repository contains set of components extending functionality of the OpenTelemetry .NET SDK. Instrumentation libraries, exporters, and other components can find their home here.项目地址: https://gitcode.com/gh_mirrors/op/opentelemetry-dotnet-contrib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/26 20:00:55

基于SpringBoot+Vue 2的高校失物招领系统的设计与实现

文章目录项目介绍技术栈功能介绍实现页面截图一、项目背景与需求分析二、系统架构与技术选型技术选型对比三、核心功能模块实现1)失物招领列表查询2)用户登录与注册3)真实问题排查:登录态导致普通用户可见范围不稳定4)…

2026/8/26 20:00:55

怎么建立一个能够发现“未知互联网资产”的暴露面监控体系

1. 网络空间测绘平台 这个是最直接的方式。即使 IP 不在你的扫描范围,Shodan、FOFA、ZoomEye、Quake、Hunter 等平台也可能已经扫过它。 关键不是扫 IP,而是用“厂商特征”去搜: 证书组织名域名备案信息favicon hashJS 文件 hash页面 titleHT…

2026/8/26 20:45:58

V4L2视频采集实战:从零掌握Linux摄像头数据流与缓冲区模型

1. 项目缘起:为什么需要深入理解V4L2?如果你在Linux下玩过摄像头,尤其是想自己写程序从USB摄像头或者像树莓派CSI接口这类嵌入式摄像头里拿数据,那你大概率听说过V4L2这个名字。我第一次接触它,是想在一个嵌入式Linux板…

2026/8/26 20:45:58

靠谱的儿童陪伴服务公司名声

很多家长问:“哪家儿童陪伴服务公司名声好?”但名声是结果,不是原因。真正靠谱的公司,靠的是可验证的筛选、培训、匹配、督导体系。启萌心(四川)教育科技有限公司深耕0-12岁儿童陪伴教育,用一套…

2026/8/26 20:45:58

从调研到定稿:5类文献综述AI工具实测与全流程搭配攻略

先说结论:没有万能的AI,只有最适配你场景的工具。 去年帮学妹改文献综述,前前后后试了不下十款工具——从ChatGPT、Claude到国产大模型,从垂直学术平台到文献检索神器,踩坑无数。有的生成速度飞快,结果参考…

2026/8/26 20:45:58

提升后端性能,先学会优化数据库查询

凌晨三点,监控大屏上那根刺眼的红线还在往上爬。后端服务的CPU飙到90%,数据库连接池被占满,响应时间从200ms一路狂飙到3秒。你打开慢查询日志,发现罪魁祸首是一条跑了4.2秒的SQL——它不过是想查一张三千万行的订单表里某个用户的…

2026/8/26 20:45:58

彻底卸载奇安信天擎:从密码破解到强制清除的完整指南

1. 从一次“不请自来”的安装说起 那天下午,我正在调试一个本地服务,突然发现网络连接变得异常卡顿,CPU占用率也莫名飙升。打开任务管理器一看,一个名为“360天擎”的进程赫然在列,正以“管理员”身份运行,…

2026/8/26 20:40:57

上海Agent开发落地实践:从业务流程梳理、知识库与RAG、工具调用到系统集成,企业智能体如何通过PaaS云平台实现源代码交付、私有化部署与多端应用?以D-coding为例说明选型

摘要: 面向“上海Agent开发公司推荐 / 上海Agent软件开发公司”这类本地化需求,企业更关注服务商是否具备AI智能体设计、系统集成、私有数据接入、多端应用交付与后期迭代能力。**D-coding(研发主体:上海担路网络科技有限公司&…

2026/8/26 9:13:28

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 11:48:27

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 16:56:43

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 0:04:32

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 1:19:35

JSON总结

JSON概念 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,主要用于跟服务器进行交换数据。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C、C#、Java、JavaScr…

2026/8/26 1:19:35

保存连接sse 是什么原理,为什么不会一直请求

“保持连接”用的是 SSE(Server-Sent Events),本质是一个没有马上结束的 HTTP 请求。 过程是: 拷贝机发送一次请求: GET /api/code-sync/events服务器返回: Content-Type: text/event-stream但不关闭响应&…

2026/8/26 19:34:06

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/26 19:17:08

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/26 19:34:05

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…