【问题标题】:How to stop sending telemetry from a specific function in Azure Functions?如何停止从 Azure Functions 中的特定函数发送遥测数据?
【发布时间】:2019-12-02 00:59:55
【问题描述】:

在我的函数应用程序 (v2) 中,我有一个函数 probe,用于测试我的应用程序的运行状况,每隔几秒就会调用一次。我想停止将该特定功能中的任何内容记录到 Application Insights。

函数probe如下所示:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

using MyApp.Api.Hello;

namespace MyApp.Api
{
    public static class HealthFunctions
    {        
        [FunctionName("probe")]
        public static IActionResult Probe(
            [HttpTriggerAttribute(AuthorizationLevel.Anonymous, "get")] HttpRequest request,
            ILogger logger)
        {
            return new OkResult();
        }
    }
}

还有host.json:

{
    "version": "2.0",
    "extensions": {
        "http": {
            "routePrefix": ""
        }
    },
    "logging": {
        "logLevel": {
            "Function.probe": "Error",
            "default": "Trace"
        }
    }
}

但是我仍然在 Application Insights 中看到通过调用 /probe 发送的遥测数据:

我做错了什么?

【问题讨论】:

  • 函数应用中是否有多个函数?
  • 是的,探针是函数应用程序中的众多函数之一。
  • 您好,正如您所说,您希望停止将此功能记录到应用程序洞察中。但请注意,对于函数应用程序,日志记录是在本地的 host.json 文件中配置的。在门户网站上,它是在应用程序设置中配置的。因此,如果您想停止将特定功能记录到应用程序洞察力,则同一功能应用下的其他功能将受到影响。
  • @BowmanZhu AFAIK host.json 允许按功能设置。
  • 您好,您确定 host.json 允许按功能设置吗? docs.microsoft.com/en-us/azure/azure-functions/… 正如文档所说,host.json 定义了全局配置选项,并将影响函数应用程序中的所有函数。如果你知道如何在host.json文件中定义每个函数,在传送门上也是类似的。

标签: azure .net-core azure-functions azure-application-insights


【解决方案1】:

12/09 更新:

是的,您的评论是正确的,仍然有一些关于它的消息可以登录到应用程序洞察力。但是任何由log.LogInformation() 方法记录的消息,都不应写入应用程序洞察力。

我发现另一种方法可以避免它,您可以为所有其他功能应用指定日志级别;但不适用于您不想登录到应用程序洞察力的函数应用程序,请不要为其指定日志级别。然后可以将default指定为None,这样可以完全避免这个函数应用登录到应用洞察。

这是一个例子:

我有 3 个函数应用,我不希望名为 HttpTrigger1 的函数登录到应用洞察。因此,在 host.json 中,我将 loglevel 指定为 Trace 用于其他 2 个功能应用程序:BlobTrigger1QueueTrigger1 .并将 default 设置为 None

我身边的host.json:

{
  "version": "2.0",
  "extensions": {
    "http": {
      "routePrefix": ""
    }
  },
  "logging": {
    "logLevel": {
      "Function.BlobTrigger1": "Trace",
      "Function.QueueTrigger1": "Trace",
      "default": "None"
    }
  }
}

截图:

它按预期工作,没有来自“HttpTrigger1”的日志写入 Application Insights。


要禁用从特定 azure 函数记录到应用程序洞察力,在 host.json 中,您可以为该 azure 函数指定 logLevel 为 None(在您的情况下,它是 probe强>)。示例 host.json 如下所示:

{
    "version": "2.0",
    "extensions": {
        "http": {
            "routePrefix": ""
        }
    },
    "logging": {
        "logLevel": {
            "Function.probe": "None",
            "default": "Trace"
        }
    }
}

那么只有名为“probe”的函数无法将数据发送到应用洞察。

还有一点需要注意,在指定的 azure function -> Monitor 中,创建了一个空日志(见下面的截图),这个“空日志”意味着没有日志写入应用程序洞察力(您可以只需在应用程序洞察力中编写一个查询来确认这一点。我使用日志查询对其进行了测试,应用程序洞察力中没有显示该指定 azure 函数的日志)。

【讨论】:

  • 感谢您的回答。我尝试使用 None (并将函数名称的大小写更改为 Probe,将 host.json 更改为 Function.Probe。我在调用结果中得到相同的“无结果”,但是当我在 Application Insights 中搜索操作 ID 时,我仍然可以看到我的问题中显示的每个请求的三个事件(请求、详细和信息)。
  • @Victor,请查看帖子中更新的部分,您可以使用其他方式来实现。
  • @Victor,如果您对此仍有任何疑问,请告诉我:)。
  • 感谢您的更新。我尝试将每个函数列入白名单,它的工作原理是未列入白名单的函数不会显示在 App Insights 日志中,但也会杀死由 Azure Functions 注入的白名单函数中的 3 个(有用)事件,例如请求事件,以及“请求成功匹配...”和“正在执行 HttpStatusCodeResult...”。如果您知道如何将这些事件保留在白名单函数中,请将其添加到答案中,否则请告诉我,我将接受此答案并奖励赏金。
  • @Victor,我会对你提到的内容进行研究,稍后再通知你。
【解决方案2】:

我不知道您是否需要它,但您也可以将其指定为函数应用的配置。

你需要根据the spec重写密钥

对我来说,添加一个名为:"AzureFunctionsJobHost__logging__logLevel__Function.FUNCTIONNAME": "Error"

【讨论】:

    【解决方案3】:

    您可以在 Azure 门户中删除 Application Settings 中的 APPINSIGHTS_INSTRUMENTATIONKEY

    【讨论】:

    • 谢谢。正如我在评论中所说,我希望禁用或减少仅从一个功能发送的遥测数据,而不是应用程序中的所有功能。
    • @Victor 嗨,文档说的是“控制函数应用程序的日志记录行为,包括 Application Insights。”。而且它只有这么一小部分,我想我应该没看错。您从哪里找到说明您可以设置单个功能的文档?请注意,函数应用程序不等于单个函数。 docs.microsoft.com/en-us/azure/azure-functions/…这是你说的吗?
    • "2.x 版遵循 ASP.NET Core 布局进行日志类别过滤。这使您可以过滤特定功能的日志记录。"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2023-02-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    相关资源
    最近更新 更多