如何使用 Elastic APM 深入了解 ASP.NET MVC 应用程序中的堆栈跟踪?

How can I drill down on stacktrace in ASP.NET MVC application using Elastic APM?

我正在使用 Elastic APM 代理 (https://www.elastic.co/guide/en/apm/agent/dotnet/current/index.html) 来检测 ASP.NET MVC 应用程序。我添加了 nuget 包并在 web.config 中添加了模块条目。 我能够在 Kibana APM 选项卡中获取数据,并很好地显示每次调用所花费的时间。 (见下面的截图)。

Mu​​ 问题是:我如何深入了解这些调用中的每一个,以查看时间花在了 stackstace 中的什么地方?有什么我想念的吗?

代理捕获事物的方式基本上有两种:

  • 自动检测:在这种情况下,您无需编写任何代码,代理只会为您捕获信息 - 这就是我们在您的屏幕截图中看到的内容
  • 手动代码检测 - 为此,您可以使用 Public Agent API 并以编程方式捕获内容。

在典型的 ASP.NET 经典 MVC 应用程序中,代理会自动检测使用 HttpClient 的传出 HTTP 调用、使用 EF6 的数据库调用(确保 add the interceptor)(SqlClient 支持已经在进行中,希望很快发布)。因此,除非您在这些请求中包含其中任何一项,否则代理不会立即捕获内容。

如果您想捕获更多内容,目前的方法是将一些特定于代理的代码 - 因此基本上是手动代码检测 - 放入您的应用程序并使用 public 代理 API。