Как остановить отправку телеметрии с определенной функции в функциях Azure? - PullRequest
2 голосов
/ 02 декабря 2019

В моем приложении функций (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, отправленную по телефону / зондированию:

Application Insights Screenshot

Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 05 декабря 2019

Обновление 12/09:

Да, ваш комментарий верный, все еще есть сообщения о нем, которые могут быть зарегистрированы в приложении. Но любые сообщения регистрируются методом log.LogInformation() и не должны записываться в понимание приложения.

И я нахожу другой способ избежать этого, вы можете указать уровень журнала для всех других приложений-функций;но не для приложения-функции, которое вы не хотите регистрировать в приложении, не указывайте уровень логирования для него. Затем вы можете указать по умолчанию как Нет , что может полностью исключить использование этой функцией приложения при входе в понимание приложения.

Вот пример:

У меня есть 3 приложения-функции, и я не хочу, чтобы функция с именем HttpTrigger1 входила в представление приложений. Таким образом, в host.json я задаю loglevel до Trace для двух других приложений функций: BlobTrigger1 и QueueTrigger1 . И установите по умолчанию как Нет .

Host.json на моей стороне:

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

Снимок экрана:

enter image description here

Работает как положено, журналы от "HttpTrigger1" не записываются в Application Insights.


Для отключения регистрации в обзорах приложений изДля конкретной функции Azure в файле host.json вы можете указать logLevel как Нет для этой функции Azure (в вашем случае это probe ). Пример файла host.json выглядит следующим образом:

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

Тогда только функция с именем «probe» не может отправлять данные для понимания приложения.

И вот вам одна вещьСледует отметить, что в указанной функции Azure -> Monitor создается пустой журнал (см. снимок экрана ниже), этот «пустой журнал» означает, что журналы не записываются в идеи приложения (вы можете просто написать запрос в сведениях приложения, чтобы подтвердитьэто. Я проверил это с помощью запроса журнала, журналы не отображаются в аналитических данных приложения для этой указанной функции Azure.

enter image description here

0 голосов
/ 02 декабря 2019

Вы можете удалить APPINSIGHTS_INSTRUMENTATIONKEY in Application Settings на портале Azure.

enter image description here

enter image description here

...