【问题标题】:Azure Blob Storage successful requests show as failed requests in Application InsightsAzure Blob 存储成功请求在 Application Insights 中显示为失败请求
【发布时间】:2017-12-26 21:39:07
【问题描述】:

以下容器存在,因此返回失败的请求代码 409

var container = blobClient.GetContainerReference("my-container");
container.CreateIfNotExists();

我在创建之前检查以确保 Blob 引用不存在。这将返回一个带有布尔值的 404 响应代码。

if(container.GetBlockBlobReference("this-file-could-exist").Exists()) {

在第一个示例中,我希望容器存在,在第二个示例中,希望文件不存在。但在这两种情况下,我都会进行检查以确保。

代码一切正常。问题是 Application Insights 会提醒我一堆失败的请求。虽然这些并不是真正失败的请求,但实际上是成功的请求,因为这正是我所期望的。

解决此问题的最佳方法是什么?我可以让 azure return 200 成功还是我需要在 Application Insights 中以某种方式忽略这些。

【问题讨论】:

  • 嗨@John,有什么更新吗?你解决问题了吗?
  • @FredHan,我在两个答案之间有点卡住了......我不想降级,因为我想保持更新。另一个答案也很好,因为它将 404、409 等更改为成功,尽管如果我尝试打开一个文件并且我得到一个 404 等,这将是一个真正失败的请求,将被标记为成功......我希望 Exists() 等返回成功代码,尽管如果它没有返回 404 也是有意义的。它只会让 Insights 列出一堆失败。

标签: .net azure azure-blob-storage azure-application-insights


【解决方案1】:

如果你使用的是最新版本的存储客户端库,当你执行CloudBlobContainer.CreateIfNotExists()方法时,实际上是执行create操作,所以有时候服务器响应会是409。

8.2.0版本源码

如果可能,您可以尝试将存储客户端库版本降级到 v7.2.1。

7.2.1版本源码

我在About动作中执行了以下代码,我可以在application insight中找到Result code是200。

CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");

container.CreateIfNotExists();

【讨论】:

    【解决方案2】:

    一种可能性是在您的应用中添加遥测处理器,以丢弃您不想看到的东西。

    在此示例中:https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-filtering-sampling

    // Example: replace with your own criteria.
    private bool OKtoSend (ITelemetry item)
    {
        var dependency = item as DependencyTelemetry;
        if (dependency == null) return true;
    
        return dependency.Success != true;
    }
    

    他们有一个遥测处理器,它完全忽略任何成功的依赖调用,只发送失败依赖的遥测。

    您可以编写类似的逻辑并过滤掉 409 的依赖项,或者您可以修改 409 的依赖项并将它们标记为成功而不是失败。

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 1970-01-01
      • 2020-05-08
      • 2021-04-05
      • 1970-01-01
      • 2021-05-31
      • 2020-10-11
      • 2019-01-20
      • 2023-03-10
      相关资源
      最近更新 更多