在本地IIS服务器上使用应用程序洞察



我正在尝试调试一个dotnet core 5 Blazor Server应用程序,该应用程序在部署到本地IIS服务器时消耗了IIS服务器的所有内存。

但是,目前还不清楚是什么导致了内存泄漏。

据我所知,安装Application Insights应该创建能够确定问题所在所需的日志。

所以我在项目中添加了App Insights。当我运行项目时,我可以看到在Visual Studio中创建的App Insights Events。

但是,当应用程序发布到生产IIS服务器时,问题就发生了。我不明白如何从Prod服务器查看应用程序洞察数据。是否正在生成日志?

我试图找到这方面的数据,但我发现的大部分是Azure应用程序洞察。但是该应用程序不能在Azure上运行。

那么我如何从Prod服务器查看日志呢?或者有更好的方法来调试这个问题?

所以我在项目中添加了App Insights。当我运行项目时,我可以看到在Visual Studio中创建的App Insights Events。

但是,当应用程序发布到生产IIS服务器时,问题就发生了。我不明白如何从Prod服务器查看应用程序洞察数据。是否正在生成日志?

让我弄清楚:你已经创建了一个Azure应用程序洞察资源。当您使用调试器运行项目时,您可以看到遥测正在生成。

  • 正确吗?
  • 你如何验证遥测正在生成?

如果它在本地工作,它应该在部署到IIS时工作。您的应用程序将生成遥测数据,并将其发送到Azure Cloud中的application Insights资源。在这种情况下,你的应用程序是否实际上托管在Azure上并不重要。

如果您没有看到遥测,请确保在生产环境中正确设置了仪表键。

有几种方法可以探索发送到Application Insights的遥测数据:

  • https://learn.microsoft.com/en-us/azure/azure-monitor/app/diagnostic-search
  • https://learn.microsoft.com/en-us/azure/azure-monitor/app/overview-dashboard
  • https://learn.microsoft.com/en-us/azure/azure-monitor/logs/queries

一些研究之后,我发现这个问题的答案。

你可以使用Azure Application Insights查看从asp.net core应用程序收集的数据,无论应用程序实际运行在何处。它可以在本地运行,也可以在云中运行。

的工作方式是在你的应用程序中,你添加一个"连接字符串"对于应用程序的见解。连接字符串是您创建的应用程序中可用的见解资源在Azure。

然后将此连接字符串添加到应用程序中的代码中。然后,当应用程序运行时,无论是在Visual Studio中还是从发布位置,应用程序都会通过端点将数据发送到Azure资源。

连接字符串看起来像这样:

InstrumentationKey=000000-0000-0000-0000-000000000;IngestionEndpoint=https://eastus2-0.in.applicationinsights.azure.com/

然后添加如下代码:

var options = new ApplicationInsightsServiceOptions { ConnectionString = @"InstrumentationKey==000000-0000-0000-0000-000000000;IngestionEndpoint=https://eastus2-0.in.applicationinsights.azure.com/" };
services.AddApplicationInsightsTelemetry(options: options);

有许多方法可以实际添加连接字符串。查看这里的文档

然后登录到Azure以查看收集的数据。

最新更新