gpt4 book ai didi

azure - Application Insights 未显示所有错误

转载 作者:行者123 更新时间:2023-12-03 06:14:27 25 4
gpt4 key购买 nike

昨晚,我们收到了数百起关于我们的 Azure Web 应用程序之一出现错误的投诉。

在 Azure 门户中,我们查看了 Web 应用程序,发现我们收到了数千个 5xx 错误。

Azure Portal 5xx Errors Over Past 24hrs

该应用是 .NET 6 Web API,并配置为使用 Application Insights SDK。但是,Application Insights 在同一时间范围内仅显示 44 个错误。它还显示了在此时间范围内的数千个成功请求。因此,我们知道 Application Insights 已连接并正在运行,因为那里有数千条日志,但我们预计会看到更多错误日志。

这是我们的 appsettings.json:

{
"AllowedHosts": "*",
"ApplicationInsights": {
"InstrumentationKey": "Instrumentation Key from Azure"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Error"
}
}
}
}

我们的 Pragram.cs 中有这个:

var services = builder.Services;
var configuration = builder.Configuration;

services.AddApplicationInsightsTelemetry(configuration["ApplicationInsights:InstrumentationKey"]);

在我们的 Controller 中:

namespace MyAPI.Controllers
{
[Route("api/[controller]")]
[Authorize]
[ApiController]
public class MyController : ControllerBase
{
private readonly ILogger _logger;

public MyController(ILogger<MyController> logger)
{
_logger = logger;
}

[HttpGet]
public async Task<ActionResult> MyTask()
{
try
{
// Do things async

return Ok()
}
catch (Exception e)
{
_logger.LogError("{error}", e.Message);
return StatusCode(StatusCodes.Status500InternalServerError, e.Message);
}
}
}
}

我们可以通过什么来了解这些错误?

最佳答案

我能够使用 appsettings.json 文件中的相同配置记录状态代码为 500 的错误。

为了记录 500 错误,我已明确抛出异常。

我的 Controller :

[HttpGet(Name = "Task")]
public ActionResult MyTask()
{
try
{
throw new Exception();
}
catch (Exception e)
{
_logger.LogError("{error}", e.Message);
return StatusCode(StatusCodes.Status500InternalServerError, e.InnerException);
}
}

您可以看到 500 个错误被记录为 Request。在交易搜索中检查相同内容。

enter image description here

  • 点击REQUEST条目即可获取错误的详细列表。

enter image description here

检查Failures中的错误计数。

enter image description here

It appears that many of these errors are occurring due to a SQL timeout while querying a 3rd party database.

请参阅SOThread这解释了记录 SQL 超时错误。

我能够使用以下代码记录 SQL 超时异常。

public ActionResult MyTask()
{
SqlConnection conn = new SqlConnection("Data Source=****\\****;Initial Catalog=Test;Integrated Security=True");
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
TelemetryClient telemetry = new TelemetryClient(configuration);
try
{
conn.Open();
SqlCommand cmd= new SqlCommand();
cmd.CommandText= "Select * from Test";
cmd.ExecuteNonQuery();
return Ok();
}
catch (Exception e)
{
telemetry.TrackException(e);
_logger.LogError("{error}", e.StackTrace);
return StatusCode(StatusCodes.Status500InternalServerError, e.InnerException);
}
}
  • SQL 超时错误记录为跟踪。

enter image description here

enter image description here

关于azure - Application Insights 未显示所有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76416314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com