设置 MongoDB 插桩
| 软件包 | 支持的版本 |
|---|---|
MongoDB.Driver |
≥3.0.0 <4.0.0 |
有关包括支持的安装方法在内的完整兼容性矩阵,请参考 数据访问技术。
注意
MongoDB.Driver ≥3.7.0 原生发出 OpenTelemetry span。在支持代理的 OpenTelemetry 桥接器 的运行时中,这些 span 会被自动捕获,因此无需额外的包。在 .NET Framework 上不支持 OpenTelemetry 桥接器;请改用 Elastic.Apm.MongoDb。对于 MongoDB.Driver ≥3.0.0 <3.7.0,也需要此包。
本页假设核心代理已设置完毕。如果尚未设置,请先参阅 设置 APM .NET 代理。
Elastic.Apm.MongoDb NuGet 包对官方的 MongoDB.Driver 进行插桩,以将 MongoDB 操作捕获为 APM span,其中包括命令名称、目标数据库和持续时间。
如果您还没有在使用 Elastic.Apm.NetCoreAll,请安装 Elastic.Apm.MongoDb。如果您正在使用 Elastic.Apm.NetCoreAll,则可以跳过此安装步骤并继续进行步骤 2。
dotnet add package Elastic.Apm.MongoDb
在创建 MongoClient 时注册 MongoDbEventSubscriber
using MongoDB.Driver;
using Elastic.Apm.MongoDb;
var settings = MongoClientSettings.FromConnectionString(mongoConnectionString);
settings.ClusterConfigurator = builder => builder.Subscribe(new MongoDbEventSubscriber());
var mongoClient = new MongoClient(settings);
如何完成设置取决于您将 APM .NET Agent 添加到应用程序中的方式
使用 Elastic.Apm.NetCoreAll 适用于 ASP.NET Core 的一体化包。无需进行其他操作。MongoDB 调用会在每个活动事务上自动捕获。
直接使用 Elastic.Apm.MongoDb。在应用程序启动时订阅一次诊断订阅者
using Elastic.Apm;
using Elastic.Apm.MongoDb;
Agent.Subscribe(new MongoDbDiagnosticsSubscriber());
请确保只调用一次。多次调用会导致代理为 MongoDB 操作记录重复的 span。