为何Azure App Insights无法追踪ASP.NET Web应用的超时错误
我们需要针对托管在Azure App Service上的ASP.NET Web应用的超时问题采集以下维度的观测数据:
- 日期
- 时间(至少精确到小时)
- API端点
理想情况下还需要支持按以下维度进行区分:
- 默认API端点
- 使用筛选器的API端点
我们的最终目标是定位频繁触发超时告警的根本原因。目前我们可以识别部分告警并在App Insights中完成链路追踪,但超时相关错误始终无法在App Insights中被追踪到。
可追踪告警示例:
不可追踪告警示例:
我尝试过使用Kusto查询,但不清楚如何编写语句来生成上述所需的指标。以下是不可追踪错误的完整堆栈信息供参考:
System.ComponentModel.Win32Exception: The wait operation timed out Generated: Fri, 19 Nov 2021 13:30:41 GMT System.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at Ideal.Infrastructure.Data.Dapper.SqlMapper.<QueryInternal>d__34`1.MoveNext() in C:\Projects\edgemvc-ideal\Ideal.Infrastructure.Data\Dapper\SqlMapper.cs:line 697 at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at Ideal.Reporting.DynamicDataService.GetDataWithFilterSingular(String procName, BaseFilterParams filterParams) in C:\Projects\edgemvc-ideal\Ideal.ReportService\DynamicDataService.cs:line 28 at Ideal.Reporting.ReportingService.PracticeBreakoutReportPro(String section, BaseFilterParams filters, String schema) in C:\Projects\edgemvc-ideal\Ideal.ReportService\ReportingService.cs:line 248 at Ideal.API.Controllers.ReportController.PracticeBreakoutSectionPro(FilterParams filters, String descriptionId, String section) in C:\Projects\edgemvc-ideal\Ideal.API\Controllers\ReportController\ReportController.cs:line 81 at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext() ClientConnectionId:9963f70a-f829-4b28-9655-4e256156f4bd Error Number:-2,State:0,Class:11
补充说明
我已经按照建议尝试在Log Analytics中查找该异常,依然无法完成追踪:
内容的提问来源于stack exchange,提问作者Cataster
相关产品推荐
相关产品推荐

