You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core中使用OpenTelemetry追踪MySQL数据库操作并上报Jaeger?

实现MySQL操作耗时统计上报Jaeger操作流程

1. 安装对应NuGet包

根据你项目中操作MySQL的方式选择安装对应埋点包:

  • 用Entity Framework Core操作MySQL:安装OpenTelemetry.Instrumentation.EntityFrameworkCore
  • 用MySqlConnector原生操作MySQL:安装OpenTelemetry.Instrumentation.MySqlConnector
  • 用MySql.Data原生操作MySQL:安装OpenTelemetry.Instrumentation.MySqlData

2. 调整OpenTelemetry埋点配置

在你已有的Program.csOpenTelemetry Trace配置中,新增数据库埋点注册即可,示例如下:

var builder = WebApplication.CreateBuilder(args);

// 原有服务注册(AddDbContext、AddControllers等)省略

builder.Services.AddOpenTelemetry()
    .WithTracing(b => b
        .AddAspNetCore() // 你已有的HTTP请求埋点配置
        // 以下二选一,对应你用的数据库操作方式
        // 选项1:EF Core 埋点配置
        .AddEntityFrameworkCoreInstrumentation(opt =>
        {
            // 按需开启,开启后会上报SQL语句文本,生产环境注意敏感数据泄露风险
            opt.SetDbStatementForText = true;
            // 可选自定义新增上报标签,比如标记数据库实例
            opt.EnrichWithIDbCommand = (activity, cmd) =>
            {
                activity.SetTag("db.instance", "projectA_prod");
            };
        })
        // 选项2:MySqlConnector原生操作埋点配置
        // .AddMySqlConnectorInstrumentation(opt => opt.SetDbStatement = true)
        .AddJaegerExporter() // 你已有的Jaeger上报配置
    );

// 原有中间件配置、app.Run()省略

3. 验证效果

启动项目后发起一次涉及数据库查询的请求,打开Jaeger UI查看对应Trace链路,就可以看到数据库操作对应的Span,包含操作耗时、数据库地址、库名、SQL语句(开启上报的话)等信息。

注意事项

  • 生产环境如果SQL中包含用户敏感数据,建议关闭SQL语句上报配置,避免数据泄露
  • 若你使用其他第三方ORM操作MySQL,没有对应官方Instrumentation包的话,可以通过拦截IDbCommand执行逻辑手动创建Activity实现埋点

内容的提问来源于stack exchange,提问作者yusuf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:15:02