应用程序洞察:没有依赖调用的数据
Application insights: no data for dependency calls
ASP.NET 站点托管在 Azure VM 上。 VM 上安装的 ApplicationInsights 状态监视器。默认 ApplicationInsights.config 由 Visual Studio 中的 "Add AppInsights" 菜单创建,仅添加了自定义初始化程序而不是 ikey:
<Add Type="WebSite.WebSiteTelemetryInitializer, WebSite" />
代码:
public class WebSiteTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
TelemetryConfiguration.Active.InstrumentationKey = WebConfigurationManager.AppSettings["ikey"];
telemetry.Context.User.Id = Environment.UserName;
telemetry.Context.Session.Id = Guid.NewGuid().ToString();
telemetry.Context.Component.Version = typeof(WebSiteTelemetryInitializer).Assembly.GetName().Version.ToString();
}
}
一切都按预期工作,但没有性能数据(Cpu,内存)。将 apppool 用户添加到 Performance Monitor Users
组后:
$group = [ADSI]"WinNT://$Env:ComputerName/Performance Monitor Users,group"
$ntAccount = New-Object System.Security.Principal.NTAccount("IIS APPPOOL\DefaultAppPool")
$strSID = $ntAccount.Translate([System.Security.Principal.SecurityIdentifier])
$user = [ADSI]"WinNT://$strSID"
$group.Add($user.Path)
没有依赖调用的数据。
更新
有 3 个重复的跟踪日志:
- AI(内部):完成创建扩展的卷影副本,
extensionBaseDirectory: C:\inetpub\wwwroot\site\bin, extensionName:
Microsoft.ApplicationInsights.Extensions.Intercept 错误
System.UnauthorizedAccessException: Access to the path 'C:\Windows\system32\config\systemprofile' is denied.
- AI(内部):扩展附加失败,无法附加,baseFolder:C:\inetpub\wwwroot\site\bin,nativeExtensionName:Microsoft.ApplicationInsights.Extensions.Intercept
- AI(内部):[msg=RemoteDependencyModule 失败];[msg=System.InvalidOperationException:附加扩展失败,hresult:2147500037
远程依赖:
好的,这就是阻止 ApplicationInsights 收集依赖项的原因:
AI(内部):完成创建扩展的卷影副本,extensionBaseDirectory:C:\inetpub\wwwroot\site\bin,extensionName:Microsoft.ApplicationInsights.Extensions.Intercept,错误 System.UnauthorizedAccessException:访问路径 'C:\Windows\system32\config\systemprofile' 被拒绝。
C:\Windows\system32\config\systemprofile 是为您的进程设置的临时文件夹。您需要更改该过程的临时文件夹,并确保您的应用程序可以在那里写入。 (ApplicationInsights 正在处理分析器使用的本机二进制文件。当您遇到临时 Internet 访问问题时,也会使用 Temp 文件夹。它保存未发送的事件并在连接恢复时发送它们。)
性能计数器:
为了收集性能计数器,运行应用程序池的用户(通常是 ApplicationPoolIdentity)应该是 Performance Monitor Users 组的成员。确保它被添加到那里,你应该在将用户添加到组后执行 iisreset,否则更改将不会生效。
只需添加,您可以通过编辑 applicationsinsights.config 文件的末尾并添加临时文件夹的位置来更改 Application Insights 写入的临时文件夹。这是我所做的:
<TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel">
<StorageFolder>D:\AITempFolder</StorageFolder>
希望这对其他人也有帮助。
ASP.NET 站点托管在 Azure VM 上。 VM 上安装的 ApplicationInsights 状态监视器。默认 ApplicationInsights.config 由 Visual Studio 中的 "Add AppInsights" 菜单创建,仅添加了自定义初始化程序而不是 ikey:
<Add Type="WebSite.WebSiteTelemetryInitializer, WebSite" />
代码:
public class WebSiteTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
TelemetryConfiguration.Active.InstrumentationKey = WebConfigurationManager.AppSettings["ikey"];
telemetry.Context.User.Id = Environment.UserName;
telemetry.Context.Session.Id = Guid.NewGuid().ToString();
telemetry.Context.Component.Version = typeof(WebSiteTelemetryInitializer).Assembly.GetName().Version.ToString();
}
}
一切都按预期工作,但没有性能数据(Cpu,内存)。将 apppool 用户添加到 Performance Monitor Users
组后:
$group = [ADSI]"WinNT://$Env:ComputerName/Performance Monitor Users,group"
$ntAccount = New-Object System.Security.Principal.NTAccount("IIS APPPOOL\DefaultAppPool")
$strSID = $ntAccount.Translate([System.Security.Principal.SecurityIdentifier])
$user = [ADSI]"WinNT://$strSID"
$group.Add($user.Path)
没有依赖调用的数据。
更新 有 3 个重复的跟踪日志:
- AI(内部):完成创建扩展的卷影副本,
extensionBaseDirectory: C:\inetpub\wwwroot\site\bin, extensionName:
Microsoft.ApplicationInsights.Extensions.Intercept 错误
System.UnauthorizedAccessException: Access to the path 'C:\Windows\system32\config\systemprofile' is denied.
- AI(内部):扩展附加失败,无法附加,baseFolder:C:\inetpub\wwwroot\site\bin,nativeExtensionName:Microsoft.ApplicationInsights.Extensions.Intercept
- AI(内部):[msg=RemoteDependencyModule 失败];[msg=System.InvalidOperationException:附加扩展失败,hresult:2147500037
远程依赖:
好的,这就是阻止 ApplicationInsights 收集依赖项的原因: AI(内部):完成创建扩展的卷影副本,extensionBaseDirectory:C:\inetpub\wwwroot\site\bin,extensionName:Microsoft.ApplicationInsights.Extensions.Intercept,错误 System.UnauthorizedAccessException:访问路径 'C:\Windows\system32\config\systemprofile' 被拒绝。
C:\Windows\system32\config\systemprofile 是为您的进程设置的临时文件夹。您需要更改该过程的临时文件夹,并确保您的应用程序可以在那里写入。 (ApplicationInsights 正在处理分析器使用的本机二进制文件。当您遇到临时 Internet 访问问题时,也会使用 Temp 文件夹。它保存未发送的事件并在连接恢复时发送它们。)
性能计数器:
为了收集性能计数器,运行应用程序池的用户(通常是 ApplicationPoolIdentity)应该是 Performance Monitor Users 组的成员。确保它被添加到那里,你应该在将用户添加到组后执行 iisreset,否则更改将不会生效。
只需添加,您可以通过编辑 applicationsinsights.config 文件的末尾并添加临时文件夹的位置来更改 Application Insights 写入的临时文件夹。这是我所做的:
<TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel">
<StorageFolder>D:\AITempFolder</StorageFolder>
希望这对其他人也有帮助。