.NET Core
编辑.NET Core编辑
快速入门编辑
在 .NET Core 上,代理可以在 IHostBuilder
上注册。这适用于 ASP.NET Core 和依赖于 IHostBuilder
的其他 .NET Core 应用程序,例如 后台任务。在这种情况下,您需要引用 Elastic.Apm.NetCoreAll
包。
using Elastic.Apm.NetCoreAll; namespace MyApplication { public class Program { public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .UseAllElasticApm(); public static void Main(string[] args) => CreateHostBuilder(args).Build().Run(); } }
使用 UseAllElasticApm()
,代理及其所有组件将被启用。在 ASP.NET Core 上,它将自动捕获传入请求、通过支持技术进行的数据库调用、传出的 HTTP 请求等等。
手动检测编辑
UseAllElasticApm
将向依赖注入系统添加一个 ITracer
,它可以在您的代码中使用,以使用 公共 API 手动检测您的应用程序。
using Elastic.Apm.Api; namespace WebApplication.Controllers { public class HomeController : Controller { private readonly ITracer _tracer; //ITracer injected through Dependency Injection public HomeController(ITracer tracer) => _tracer = tracer; public IActionResult Index() { //use ITracer var span = _tracer.CurrentTransaction?.StartSpan("MySampleSpan", "Sample"); try { //your code here } catch (Exception e) { span?.CaptureException(e); throw; } finally { span?.End(); } return View(); } } }
与这个 ASP.NET Core 控制器类似,您可以对 IHostedService
实现使用相同的方法。
检测模块编辑
Elastic.Apm.NetCoreAll
包引用了可以自动配置的每个代理组件。这通常不是问题,但如果您想保持依赖项最小化,则可以改为引用 Elastic.Apm.Extensions.Hosting
包并使用 UseElasticApm
方法,而不是 UseAllElasticApm
。使用此设置,您可以控制代理将监听的内容。
以下示例仅启用传出的 HTTP 监控(因此,例如,数据库或 Elasticsearch 调用不会自动捕获)
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .UseElasticApm(new HttpDiagnosticsSubscriber());
.NET Core 和 .NET 5+ 上的零代码更改设置 ( [1.7] 在 1.7 中添加。 )编辑
如果您不能或不想在您的应用程序中引用 NuGet 包,则可以使用启动钩子功能在启动时注入代理,如果您的应用程序在 .NET Core 3.0 或 .NET 5 或更高版本上运行。
要配置启动钩子
- 从 .NET APM 代理 GitHub 存储库的 发行版 页面下载
ElasticApmAgent_<version>.zip
文件。您可以在 Assets 下找到该文件。 - 将 zip 文件解压缩到一个文件夹中。
-
将
DOTNET_STARTUP_HOOKS
环境变量设置为指向解压缩文件夹中的ElasticApmAgentStartupHook.dll
文件 - 在
DOTNET_STARTUP_HOOKS
环境变量可见的上下文中启动您的 .NET Core 应用程序。
使用此设置,代理将在启动期间注入到应用程序中,并且它将启动每个自动检测功能。在 ASP.NET Core(包括 gRPC)上,传入请求将自动捕获。
代理配置可以通过启动钩子功能通过环境变量进行控制。