Monitorar Azure FunctionsMonitor Azure Functions

O Azure Functions oferece integração interna com o Azure Application Insights para monitorar funções.Azure Functions offers built-in integration with Azure Application Insights to monitor functions. Este artigo mostra como configurar o Azure Functions para enviar arquivos de log gerados pelo sistema para o Application Insights.This article shows you how to configure Azure Functions to send system-generated log files to Application Insights.

Recomendamos usar o Application Insights porque ele coleta dados de log, desempenho e erros.We recommend using Application Insights because it collects log, performance, and error data. Ele detecta automaticamente anomalias de desempenho e inclui ferramentas de análise avançadas para ajudar a diagnosticar problemas e entender como suas funções são usadas.It automatically detects performance anomalies and includes powerful analytics tools to help you diagnose issues and to understand how your functions are used. Ele foi projetado para ajudar você a aprimorar continuamente o desempenho e a usabilidade do seu aplicativo.It's designed to help you continuously improve performance and usability. Você pode até mesmo usar Application Insights durante o desenvolvimento do projeto de aplicativo de funções local.You can even use Application Insights during local function app project development. Para obter mais informações, confira O que é o Application Insights?.For more information, see What is Application Insights?.

Como a instrumentação do Application Insights necessária é incorporada ao Azure Functions, tudo o que você precisa é de uma chave de instrumentação válida para conectar seu aplicativo de funções a um recurso de Application Insights.As the required Application Insights instrumentation is built into Azure Functions, all you need is a valid instrumentation key to connect your function app to an Application Insights resource. A chave de instrumentação deve ser adicionada às configurações do aplicativo quando o recurso do aplicativo de funções é criado no Azure.The instrumentation key should be added to your application settings when your function app resource is created in Azure. Se seu aplicativo de funções ainda não tiver essa chave, você poderá defini-la manualmente.If your function app doesn't already have this key, you can set it manually.

Preços e limites do Application InsightsApplication Insights pricing and limits

Você pode testar a integração do Application Insights com o Azure Functions gratuitamente.You can try out Application Insights integration with Azure Functions for free. Há um limite diário para a quantidade de dados que pode ser processada gratuitamente.There's a daily limit to how much data can be processed for free. Você pode atingir esse limite durante o teste.You might hit this limit during testing. O Azure fornece o portal e notificações por email quando está se aproximando do limite diário.Azure provides portal and email notifications when you're approaching your daily limit. Mas, se você perder esses alertas e atingir o limite, nenhum log novo aparecerá para as consultas do Application Insights.If you miss those alerts and hit the limit, new logs won't appear in Application Insights queries. Lembre-se do limite para evitar desperdiçar tempo com solução de problemas.Be aware of the limit to avoid unnecessary troubleshooting time. Para obter mais informações, consulte Gerenciar o preço e o volume de dados no Application Insights.For more information, see Manage pricing and data volume in Application Insights.

Importante

O Application Insights tem um recurso de amostragem que pode protegê-lo contra a produção de excesso de dados de telemetria em execuções concluídas em horários de pico de carregamento.Application Insights has a sampling feature that can protect you from producing too much telemetry data on completed executions at times of peak load. A amostragem é habilitada por padrão.Sampling is enabled by default. Se parecer que faltam dados, talvez seja necessário ajustar as configurações de amostragem para se adequarem ao seu cenário de monitoramento específico.If you appear to be missing data, you might need to adjust the sampling settings to fit your particular monitoring scenario. Para obter mais informações, consulte Configurar amostragem.To learn more, see Configure sampling.

A lista completa de recursos de Application Insights disponíveis para seu aplicativo de funções é detalhada em Recursos suportados do Application Insights para o Azure Functions.The full list of Application Insights features available to your function app is detailed in Application Insights for Azure Functions supported features.

Exibir telemetria na guia MonitorView telemetry in Monitor tab

Com a integração do Application Insights habilitada, você pode exibir dados de telemetria na guia Monitor.With Application Insights integration enabled, you can view telemetry data in the Monitor tab.

  1. Na página de aplicativo de funções, selecione uma função que tenha sido executada pelo menos uma vez depois que o Application Insights foi configurado.In the function app page, select a function that has run at least once after Application Insights was configured. Em seguida, selecione Monitor no painel esquerdo.Then, select Monitor from the left pane. Selecione Atualizar periodicamente até que a lista de invocações de função seja exibida.Select Refresh periodically, until the list of function invocations appears.

    Lista de invocações

    Observação

    Pode levar até cinco minutos para que a lista seja exibida enquanto o cliente de telemetria empacota os dados para transmissão para o servidor.It can take up to five minutes for the list to appear while the telemetry client batches data for transmission to the server. Esse atraso não se aplica ao Live Metrics Stream.The delay doesn't apply to the Live Metrics Stream. Esse serviço se conecta ao host do Functions quando você carrega a página, logo os logs são transmitidos diretamente para a página.That service connects to the Functions host when you load the page, so logs are streamed directly to the page.

  2. Para ver os logs de uma invocação de função específica, selecione o link da coluna Data (UTC) para a invocação.To see the logs for a particular function invocation, select the Date (UTC) column link for that invocation. A saída de logs para essa invocação aparece em uma nova página.The logging output for that invocation appears in a new page.

    Detalhes da Invocação

  3. Escolha Executar no Application Insights para exibir a origem da consulta que recupera os dados do log de Azure Monitor no log do Azure.Choose Run in Application Insights to view the source of the query that retrieves the Azure Monitor log data in Azure Log. Se esta for a primeira vez que você usa o Azure Log Analytics na sua assinatura, será solicitado que ele seja habilitado.If this is your first time using Azure Log Analytics in your subscription, you're asked to enable it.

  4. Depois de habilitar o Log Analytics, a consulta a seguir é exibida.After you enable Log Analytics, the following query is displayed. Você pode ver que os resultados da consulta são limitados aos últimos 30 dias (where timestamp > ago(30d)).You can see that the query results are limited to the last 30 days (where timestamp > ago(30d)). Além disso, os resultados mostram, no máximo, 20 linhas (take 20).In addition, the results show no more than 20 rows (take 20). Por outro lado, a lista de detalhes de invocação para sua função é para os últimos 30 dias sem limite.In contrast, the invocation details list for your function is for the last 30 days with no limit.

    Lista de invocações de Análise do Application Insights

Para obter mais informações, consulte Dados de telemetria da consulta a seguir neste artigo.For more information, see Query telemetry data later in this article.

Exibir a telemetria no Application InsightsView telemetry in Application Insights

Para abrir Application Insights de um aplicativo de funções no portal do Azure, selecione Application Insights em Configurações na página esquerda.To open Application Insights from a function app in the Azure portal, select Application Insights under Settings in the left page. Se esta for a primeira vez que você usa o Application Insights com sua assinatura, você será solicitado a habilitá-lo: selecione Ativar o Application Insights e, em seguida, selecione Aplicar na próxima página.If this is your first time using Application Insights with your subscription, you'll be prompted to enable it: select Turn on Application Insights, and then select Apply on the next page.

Abrir o Application Insights na página Visão geral do aplicativo de funções

Para obter informações sobre como usar o Application Insights, consulte a documentação do o Application Insights.For information about how to use Application Insights, see the Application Insights documentation. Esta seção mostra alguns exemplos de como exibir dados no Application Insights.This section shows some examples of how to view data in Application Insights. Se você já conhece bem o Application Insights, poderá ir diretamente para as seções sobre como configurar e personalizar os dados de telemetria.If you're already familiar with Application Insights, you can go directly to the sections about how to configure and customize the telemetry data.

Guia Visão geral do Application Insights

As seguintes áreas do Application Insights podem ser úteis ao avaliar o comportamento, o desempenho e os erros em suas funções:The following areas of Application Insights can be helpful when evaluating the behavior, performance, and errors in your functions:

InvestigarInvestigate DescriçãoDescription
FalhasFailures Crie gráficos e alertas com base em falhas de função e de exceções do servidor.Create charts and alerts based on function failures and server exceptions. O Nome da Operação é o nome da função.The Operation Name is the function name. Falhas nas dependências não são mostradas, a menos que você implemente telemetria personalizada para dependências.Failures in dependencies aren't shown unless you implement custom telemetry for dependencies.
DesempenhoPerformance Para analisar problemas de desempenho, veja a utilização de recursos e a taxa de transferência por instâncias de função de nuvem.Analyze performance issues by viewing resource utilization and throughput per Cloud role instances. Esses dados podem ser úteis para cenários de depuração em que as funções estão travando seus recursos subjacentes.This data can be useful for debugging scenarios where functions are bogging down your underlying resources.
MétricaMetrics Crie gráficos e alertas baseados em métricas.Create charts and alerts that are based on metrics. As métricas incluem o número de invocações de função, tempo de execução e taxas de sucesso.Metrics include the number of function invocations, execution time, and success rates.
Live Metrics Live Metrics Exiba os dados de métricas conforme eles são criados quase em tempo real.View metrics data as it's created in near real-time.

Dados de telemetria da consultaQuery telemetry data

A Análise do Application Insights oferece acesso a todos os dados de telemetria em forma de tabelas em um banco de dados.Application Insights Analytics gives you access to all telemetry data in the form of tables in a database. A Análise fornece uma linguagem de consulta para extrair, manipular e visualizar os dados.Analytics provides a query language for extracting, manipulating, and visualizing the data.

Escolha Logs para explorar ou consultar eventos registrados.Choose Logs to explore or query for logged events.

Exemplo de análise

Veja um exemplo de consulta que mostra a distribuição de solicitações por trabalhador nos últimos 30 minutos.Here's a query example that shows the distribution of requests per worker over the last 30 minutes.

requests
| where timestamp > ago(30m) 
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart

As tabelas disponíveis são mostradas na guia Esquema à esquerda.The tables that are available are shown in the Schema tab on the left. Você pode encontrar os dados gerados por invocações de função nas tabelas a seguir:You can find data generated by function invocations in the following tables:

TabelaTable DescriçãoDescription
tracestraces Logs criados pelo runtime e por código de função.Logs created by the runtime and by function code.
requestsrequests Uma solicitação para cada invocação de função.One request for each function invocation.
exceptionsexceptions Todas as exceções geradas pelo runtime.Any exceptions thrown by the runtime.
customMetricscustomMetrics Contagem de invocações bem-sucedidas e com falha, taxa de sucesso e duração.The count of successful and failing invocations, success rate, and duration.
customEventscustomEvents Eventos rastreados pelo runtime, por exemplo: Solicitações HTTP que disparam uma função.Events tracked by the runtime, for example: HTTP requests that trigger a function.
performanceCountersperformanceCounters Informações sobre o desempenho dos servidores em que as funções estão sendo executadas.Information about the performance of the servers that the functions are running on.

As outras tabelas são para testes de disponibilidade e telemetria do cliente e navegador.The other tables are for availability tests, and client and browser telemetry. Você pode implementar a telemetria personalizada para adicionar dados a ela.You can implement custom telemetry to add data to them.

Dentro de cada tabela, alguns dos dados específicos do Functions estão em um campo customDimensions.Within each table, some of the Functions-specific data is in a customDimensions field. Por exemplo, a consulta a seguir recupera todos os rastreamentos que têm o nível de log Error.For example, the following query retrieves all traces that have log level Error.

traces 
| where customDimensions.LogLevel == "Error"

O runtime fornece os campos customDimensions.LogLevel e customDimensions.Category.The runtime provides the customDimensions.LogLevel and customDimensions.Category fields. Você pode fornecer campos adicionais nos logs que você grava em seu código de função.You can provide additional fields in logs that you write in your function code. Consulte Registro em log estruturado mais adiante neste artigo.See Structured logging later in this article.

Configurar categorias e níveis de logConfigure categories and log levels

Você pode usar Application Insights sem nenhuma configuração personalizada.You can use Application Insights without any custom configuration. A configuração padrão pode resultar em grandes volumes de dados.The default configuration can result in high volumes of data. Se você estiver usando uma assinatura do Azure do Visual Studio, poderá ter atingido o limite de dados para o Application Insights.If you're using a Visual Studio Azure subscription, you might hit your data cap for Application Insights. Este artigo mostra como configurar e personalizar os dados que suas funções enviam ao Application Insights.Later in this article, you learn how to configure and customize the data that your functions send to Application Insights. Para um aplicativo de funções, o registro em log é configurado no arquivo host. JSON.For a function app, logging is configured in the host.json file.

CategoriasCategories

O agente do Azure Functions inclui uma categoria para cada log.The Azure Functions logger includes a category for every log. A categoria indica qual parte do código de runtime ou do seu código de função gravou o log.The category indicates which part of the runtime code or your function code wrote the log. O gráfico a seguir descreve as principais categorias de logs que o runtime cria.The following chart describes the main categories of logs that the runtime creates.

CategoriaCategory DescriçãoDescription
Host.ResultsHost.Results Esses logs aparecem como solicitações no Application Insights.These logs show as requests in Application Insights. Elas indicam o sucesso ou a falha de uma função.They indicate success or failure of a function. Todos esses logs são gravados no nível de Information.All of these logs are written at Information level. Se você filtrar Warning ou acima, não verá nenhum desses dados.If you filter at Warning or above, you won't see any of this data.
Host.AggregatorHost.Aggregator Esses logs fornecem contagens e médias de chamadas de função sobre um período configurável.These logs provide counts and averages of function invocations over a configurable period of time. O período padrão é de 30 segundos ou 1.000 resultados, o que ocorrer primeiro.The default period is 30 seconds or 1,000 results, whichever comes first. Os logs estão disponíveis na tabela customMetrics no Application Insights.The logs are available in the customMetrics table in Application Insights. Exemplos são número de execuções, taxa de sucesso e duração.Examples are the number of runs, success rate, and duration. Todos esses logs são gravados no nível de Information.All of these logs are written at Information level. Se você filtrar Warning ou acima, não verá nenhum desses dados.If you filter at Warning or above, you won't see any of this data.

Todos os logs para outras categorias estão disponíveis na tabela traces no Application Insights.All logs for categories other than these are available in the traces table in Application Insights.

Todos os logs com categorias que começam com Host são gravados pelo runtime do Functions.All logs with categories that begin with Host are written by the Functions runtime. Os logs Função iniciadae Função concluída têm categoria Host.Executor.The Function started and Function completed logs have category Host.Executor. Para execuções bem-sucedidas, esses logs são Information nível.For successful runs, these logs are Information level. As exceções são registradas no nível Error.Exceptions are logged at Error level. O runtime também cria logs de nível Warning, por exemplo: mensagens de fila enviadas para a fila de suspeita.The runtime also creates Warning level logs, for example: queue messages sent to the poison queue.

O runtime do Functions cria logs com uma categoria que começa com "Host".The Functions runtime creates logs with a category that begin with "Host." Na versão 1.x, os logs function started, function executede function completed têm a categoria Host.Executor.In version 1.x, the function started, function executed, and function completed logs have the category Host.Executor. A partir da versão 2.x, esses logs têm a categoria Function.<YOUR_FUNCTION_NAME>.Starting in version 2.x, these logs have the category Function.<YOUR_FUNCTION_NAME>.

Se você gravar logs no seu código de função, a categoria será Function.<YOUR_FUNCTION_NAME>.User e poderá ser qualquer nível de log.If you write logs in your function code, the category is Function.<YOUR_FUNCTION_NAME>.User and can be any log level. Na versão 1.x do runtime do Functions, a categoria é Function.In version 1.x of the Functions runtime, the category is Function.

Níveis de logLog levels

O agente de Azure Functions também inclui um nível de log com cada log.The Azure Functions logger also includes a log level with every log. LogLevel é uma enumeração e o código inteiro indica a importância relativa:LogLevel is an enumeration, and the integer code indicates relative importance:

LogLevelLogLevel CódigoCode
TraceTrace 00
DepurarDebug 11
InformaçõesInformation 22
AvisoWarning 33
ErroError 44
CríticoCritical 55
NenhumNone 66

Nível de log None é explicado na próxima seção.Log level None is explained in the next section.

Configuração de log em host.jsonLog configuration in host.json

O arquivo host. JSON configura quanto registro em log um aplicativo de função envia ao Application Insights.The host.json file configures how much logging a function app sends to Application Insights. Para cada categoria, você deve indicar o nível de log mínimo para enviar.For each category, you indicate the minimum log level to send. Há dois exemplos: o primeiro exemplo tem como alvo versão 2.x e posterior do runtime do Functions (com o .NET Core) e o segundo exemplo é para o runtime da versão 1.x.There are two examples: the first example targets version 2.x and later of the Functions runtime (with .NET Core), and the second example is for the version 1.x runtime.

Versão 2.x e posteriorVersion 2.x and higher

A versão v2.x e versões posteriores do runtime do Functions usam a hierarquia de filtro de log do .NET Core.Version v2.x and later versions of the Functions runtime use the .NET Core logging filter hierarchy.

{
  "logging": {
    "fileLoggingMode": "always",
    "logLevel": {
      "default": "Information",
      "Host.Results": "Error",
      "Function": "Error",
      "Host.Aggregator": "Trace"
    }
  }
}

Versão 1.xVersion 1.x

{
  "logger": {
    "categoryFilter": {
      "defaultLevel": "Information",
      "categoryLevels": {
        "Host.Results": "Error",
        "Function": "Error",
        "Host.Aggregator": "Trace"
      }
    }
  }
}

Este exemplo configura as seguintes regras:This example sets up the following rules:

  • Para logs com categoria Host.Results ou Function, envie somente nível Error e acima para Application Insights.For logs with category Host.Results or Function, send only Error level and above to Application Insights. Os logs para o nível Warning e abaixo são ignorados.Logs for Warning level and below are ignored.
  • Para logs com a categoria Host.Aggregator, enviar todos os logs para o Application Insights.For logs with category Host.Aggregator, send all logs to Application Insights. O Trace nível de log é o mesmo que o que chamo de alguns agentes Verbose, mas usar Trace no host. JSON arquivo.The Trace log level is the same as what some loggers call Verbose, but use Trace in the host.json file.
  • Para todos os outros logs, envie somente o nível Information e acima ao Application Insights.For all other logs, send only Information level and above to Application Insights.

O valor de categoria em host. JSON controla o registro em log para todas as categorias que começam com o mesmo valor.The category value in host.json controls logging for all categories that begin with the same value. Host em host. JSON controla o registro em log para Host.General, Host.Executor, Host.Results e assim por diante.Host in host.json controls logging for Host.General, Host.Executor, Host.Results, and so on.

Se host. JSON incluir várias categorias que comecem com a mesma cadeia de caracteres, será feito primeiro a correspondência com as mais longas.If host.json includes multiple categories that start with the same string, the longer ones are matched first. Suponha que você queira tudo do runtime, exceto Host.Aggregator para registrar no nível Error, mas deseja que Host.Aggregator registre no nível Information:Suppose you want everything from the runtime except Host.Aggregator to log at Error level, but you want Host.Aggregator to log at the Information level:

Versão 2.x e posteriorVersion 2.x and later

{
  "logging": {
    "fileLoggingMode": "always",
    "logLevel": {
      "default": "Information",
      "Host": "Error",
      "Function": "Error",
      "Host.Aggregator": "Information"
    }
  }
}

Versão 1.xVersion 1.x

{
  "logger": {
    "categoryFilter": {
      "defaultLevel": "Information",
      "categoryLevels": {
        "Host": "Error",
        "Function": "Error",
        "Host.Aggregator": "Information"
      }
    }
  }
}

Para suprimir todos os logs para uma categoria, você pode usar o nível de log None.To suppress all logs for a category, you can use log level None. Nenhum log é gravado com essa categoria e não há nenhum nível de log acima dela.No logs are written with that category and there's no log level above it.

Configurar o agregadorConfigure the aggregator

Conforme observado na seção anterior, o runtime agrega dados sobre as execuções de função em um período.As noted in the previous section, the runtime aggregates data about function executions over a period of time. O período padrão é de 30 segundos ou 1.000 execuções, o que ocorrer primeiro.The default period is 30 seconds or 1,000 runs, whichever comes first. Você pode definir essa configuração no arquivo host. JSON.You can configure this setting in the host.json file. Aqui está um exemplo:Here's an example:

{
    "aggregator": {
      "batchSize": 1000,
      "flushTimeout": "00:00:30"
    }
}

Configurar a amostragemConfigure sampling

O Application Insights tem um recurso de amostragem que pode protegê-lo contra a produção de excesso de dados de telemetria em execuções concluídas em horários de pico de carregamento.Application Insights has a sampling feature that can protect you from producing too much telemetry data on completed executions at times of peak load. Quando a taxa de execuções de entrada excede um limite especificado, o Application Insights começa a ignorar aleatoriamente algumas das execuções de entrada.When the rate of incoming executions exceeds a specified threshold, Application Insights starts to randomly ignore some of the incoming executions. A configuração padrão para o número máximo de execuções por segundo é 20 (cinco na versão 1.x).The default setting for maximum number of executions per second is 20 (five in version 1.x). Você pode configurar a amostragem em host. JSON.You can configure sampling in host.json. Aqui está um exemplo:Here's an example:

Versão 2.x e posteriorVersion 2.x and later

{
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond" : 20,
        "excludedTypes": "Request"
      }
    }
  }
}

Na versão 2. x, você pode excluir determinados tipos de telemetria da amostragem.In version 2.x, you can exclude certain types of telemetry from sampling. No exemplo acima, os dados do tipo Request são excluídos da amostragem.In the example above, data of type Request are excluded from sampling. Isso garante que todas as execuções de função (solicitações) sejam registradas enquanto outros tipos de telemetria permanecerão sujeitos à amostragem.This ensures all function executions (requests) are logged while other types of telemetry remain subject to sampling.

Versão 1.xVersion 1.x

{
  "applicationInsights": {
    "sampling": {
      "isEnabled": true,
      "maxTelemetryItemsPerSecond" : 5
    }
  }
}

Gravar logs em funções C#Write logs in C# functions

Você pode gravar logs no seu código de função que apareçam como rastreamentos no Application Insights.You can write logs in your function code that appear as traces in Application Insights.

ILoggerILogger

Use um parâmetro ILogger em funções, em vez de um parâmetro TraceWriter.Use an ILogger parameter in your functions instead of a TraceWriter parameter. Logs criados com o uso de TraceWriter vão para o Application Insights, mas o ILogger permite que você faça o registro em log estruturado.Logs created by using TraceWriter go to Application Insights, but ILogger lets you do structured logging.

Com um objeto ILogger, você chama os Log<level> métodos de extensão no ILogger para criar logs.With an ILogger object, you call Log<level> extension methods on ILogger to create logs. O seguinte código grava logs Information com categoria "Function.<YOUR_FUNCTION_NAME>.User".The following code writes Information logs with category "Function.<YOUR_FUNCTION_NAME>.User."

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, ILogger logger)
{
    logger.LogInformation("Request for item with key={itemKey}.", id);

Registro em log estruturadoStructured logging

A ordem dos espaços reservados, não seus nomes, determina quais parâmetros são usados na mensagem de log.The order of placeholders, not their names, determines which parameters are used in the log message. Suponha que você tenha o seguinte código:Suppose you have the following code:

string partitionKey = "partitionKey";
string rowKey = "rowKey";
logger.LogInformation("partitionKey={partitionKey}, rowKey={rowKey}", partitionKey, rowKey);

Se você mantiver a mesma cadeia de caracteres de mensagem e inverter a ordem dos parâmetros, o texto da mensagem resultante terá os valores nos locais errados.If you keep the same message string and reverse the order of the parameters, the resulting message text would have the values in the wrong places.

Os espaços reservados são tratados dessa forma para que você possa fazer registro em log estruturado.Placeholders are handled this way so that you can do structured logging. O Application Insights armazena os pares nome-valor do parâmetro e a cadeia de caracteres de mensagem.Application Insights stores the parameter name-value pairs and the message string. O resultado é que os argumentos da mensagem tornam-se campos que você pode consultar.The result is that the message arguments become fields that you can query on.

Se sua chamada de método do agente for semelhante ao exemplo anterior, você pode consultar o campo customDimensions.prop__rowKey.If your logger method call looks like the previous example, you can query the field customDimensions.prop__rowKey. O prefixo prop__ é adicionado para garantir que não haja colisões entre campos que o runtime adiciona e campos que o código de função adiciona.The prop__ prefix is added to ensure there are no collisions between fields the runtime adds and fields your function code adds.

Você também pode consultar a cadeia de caracteres da mensagem original referenciando o campo customDimensions.prop__{OriginalFormat}.You can also query on the original message string by referencing the field customDimensions.prop__{OriginalFormat}.

Aqui está uma representação JSON de exemplo de dados customDimensions:Here's a sample JSON representation of customDimensions data:

{
  "customDimensions": {
    "prop__{OriginalFormat}":"C# Queue trigger function processed: {message}",
    "Category":"Function",
    "LogLevel":"Information",
    "prop__message":"c9519cbf-b1e6-4b9b-bf24-cb7d10b1bb89"
  }
}

Registro de métricas personalizadasCustom metrics logging

Em funções de script C#, você pode usar o método de extensão LogMetric em ILogger para criar métricas personalizadas no Application Insights.In C# script functions, you can use the LogMetric extension method on ILogger to create custom metrics in Application Insights. Aqui está um exemplo de chamada de método:Here's a sample method call:

logger.LogMetric("TestMetric", 1234);

Esse código é uma alternativa à chamada de TrackMetric usando a API do Application Insights para .NET.This code is an alternative to calling TrackMetric by using the Application Insights API for .NET.

Gravar logs em funções de JavaScriptWrite logs in JavaScript functions

Em funções do Node.js, use context.log para gravar logs.In Node.js functions, use context.log to write logs. Registro em log estruturado não está habilitado.Structured logging isn't enabled.

context.log('JavaScript HTTP trigger function processed a request.' + context.invocationId);

Registro de métricas personalizadasCustom metrics logging

Quando estiver executando na versão 1.x do runtime do Functions, as funções do Node.js poderão usar o método context.log.metric para criar métricas personalizadas no Application Insights.When you're running on version 1.x of the Functions runtime, Node.js functions can use the context.log.metric method to create custom metrics in Application Insights. No momento, a versão 2.x e posteriores não são compatíveis com esse método.This method isn't currently supported in version 2.x and later. Aqui está um exemplo de chamada de método:Here's a sample method call:

context.log.metric("TestMetric", 1234);

Esse código é uma alternativa à chamada trackMetric usando SDK do Node.js para Application Insights.This code is an alternative to calling trackMetric by using the Node.js SDK for Application Insights.

Registrar telemetria personalizada em funções C#Log custom telemetry in C# functions

Há uma versão do SDK do Application Insights específica de Functions, que você pode usar para enviar dados de telemetria personalizada das suas funções para Application Insights: Microsoft.Azure.WebJobs.Logging.ApplicationInsights.There is a Functions-specific version of the Application Insights SDK that you can use to send custom telemetry data from your functions to Application Insights: Microsoft.Azure.WebJobs.Logging.ApplicationInsights. Use o comando a seguir, no prompt de comando, para instalar esse pacote:Use the following command from the command prompt to install this package:

dotnet add package Microsoft.Azure.WebJobs.Logging.ApplicationInsights --version <VERSION>

Neste comando, substitua <VERSION> por uma versão desse pacote que dê suporte à versão instalada do Microsoft.Azure.WebJobs.In this command, replace <VERSION> with a version of this package that supports your installed version of Microsoft.Azure.WebJobs.

Os exemplos de C# a seguir usam a API de telemetria personalizada.The following C# examples uses the custom telemetry API. O exemplo é para uma biblioteca de classes do .NET, mas o código do Application Insights é o mesmo para o script C#.The example is for a .NET class library, but the Application Insights code is the same for C# script.

Versão 2.x e posteriorVersion 2.x and later

A versão de runtime 2.x e posteriores usam recursos mais recentes no Application Insights para correlacionar automaticamente a telemetria com a operação atual.Version 2.x and later versions of the runtime use newer features in Application Insights to automatically correlate telemetry with the current operation. Não é necessário definir manualmente os campos da operação Id, ParentId, ou Name.There's no need to manually set the operation Id, ParentId, or Name fields.

using System;
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 Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
using System.Linq;

namespace functionapp0915
{
    public class HttpTrigger2
    {
        private readonly TelemetryClient telemetryClient;

        /// Using dependency injection will guarantee that you use the same configuration for telemetry collected automatically and manually.
        public HttpTrigger2(TelemetryConfiguration telemetryConfiguration)
        {
            this.telemetryClient = new TelemetryClient(telemetryConfiguration);
        }

        [FunctionName("HttpTrigger2")]
        public Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]
            HttpRequest req, ExecutionContext context, ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            DateTime start = DateTime.UtcNow;

            // Parse query parameter
            string name = req.Query
                .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
                .Value;

            // Track an Event
            var evt = new EventTelemetry("Function called");
            evt.Context.User.Id = name;
            this.telemetryClient.TrackEvent(evt);

            // Track a Metric
            var metric = new MetricTelemetry("Test Metric", DateTime.Now.Millisecond);
            metric.Context.User.Id = name;
            this.telemetryClient.TrackMetric(metric);

            // Track a Dependency
            var dependency = new DependencyTelemetry
            {
                Name = "GET api/planets/1/",
                Target = "swapi.co",
                Data = "https://swapi.co/api/planets/1/",
                Timestamp = start,
                Duration = DateTime.UtcNow - start,
                Success = true
            };
            dependency.Context.User.Id = name;
            this.telemetryClient.TrackDependency(dependency);

            return Task.FromResult<IActionResult>(new OkResult());
        }
    }
}

GetMetric é a API recomendada no momento para criar uma métrica.GetMetric is the currently recommended API for creating a metric.

Versão 1.xVersion 1.x

using System;
using System.Net;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Azure.WebJobs;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using System.Linq;

namespace functionapp0915
{
    public static class HttpTrigger2
    {
        private static string key = TelemetryConfiguration.Active.InstrumentationKey = 
            System.Environment.GetEnvironmentVariable(
                "APPINSIGHTS_INSTRUMENTATIONKEY", EnvironmentVariableTarget.Process);

        private static TelemetryClient telemetryClient = 
            new TelemetryClient() { InstrumentationKey = key };

        [FunctionName("HttpTrigger2")]
        public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
            HttpRequestMessage req, ExecutionContext context, ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            DateTime start = DateTime.UtcNow;

            // Parse query parameter
            string name = req.GetQueryNameValuePairs()
                .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
                .Value;

            // Get request body
            dynamic data = await req.Content.ReadAsAsync<object>();

            // Set name to query string or body data
            name = name ?? data?.name;
         
            // Track an Event
            var evt = new EventTelemetry("Function called");
            UpdateTelemetryContext(evt.Context, context, name);
            telemetryClient.TrackEvent(evt);
            
            // Track a Metric
            var metric = new MetricTelemetry("Test Metric", DateTime.Now.Millisecond);
            UpdateTelemetryContext(metric.Context, context, name);
            telemetryClient.TrackMetric(metric);
            
            // Track a Dependency
            var dependency = new DependencyTelemetry
                {
                    Name = "GET api/planets/1/",
                    Target = "swapi.co",
                    Data = "https://swapi.co/api/planets/1/",
                    Timestamp = start,
                    Duration = DateTime.UtcNow - start,
                    Success = true
                };
            UpdateTelemetryContext(dependency.Context, context, name);
            telemetryClient.TrackDependency(dependency);
        }
        
        // Correlate all telemetry with the current Function invocation
        private static void UpdateTelemetryContext(TelemetryContext context, ExecutionContext functionContext, string userName)
        {
            context.Operation.Id = functionContext.InvocationId.ToString();
            context.Operation.ParentId = functionContext.InvocationId.ToString();
            context.Operation.Name = functionContext.FunctionName;
            context.User.Id = userName;
        }
    }    
}

Não chame TrackRequest nem StartOperation<RequestTelemetry>, pois você verá solicitações duplicadas de uma invocação de função.Don't call TrackRequest or StartOperation<RequestTelemetry> because you'll see duplicate requests for a function invocation. O runtime do Functions controla automaticamente as solicitações.The Functions runtime automatically tracks requests.

Não definir telemetryClient.Context.Operation.Id.Don't set telemetryClient.Context.Operation.Id. Essa configuração global causa correlação incorreta quando muitas funções são executadas simultaneamente.This global setting causes incorrect correlation when many functions are running simultaneously. Em vez disso, crie uma nova instância de telemetria (DependencyTelemetry, EventTelemetry) e modifique a propriedade Context.Instead, create a new telemetry instance (DependencyTelemetry, EventTelemetry) and modify its Context property. Em seguida, passe na instância de telemetria para o método Track correspondente em TelemetryClient (TrackDependency(), TrackEvent(), TrackMetric()).Then pass in the telemetry instance to the corresponding Track method on TelemetryClient (TrackDependency(), TrackEvent(), TrackMetric()). Esse método garante que a telemetria tenha os detalhes de correlação corretos para a invocação de função atual.This method ensures that the telemetry has the correct correlation details for the current function invocation.

Fazer log de telemetria personalizada em funções JavaScriptLog custom telemetry in JavaScript functions

Aqui estão os exemplos de snippets de código que enviam telemetria personalizada com o SDK de Application Insights Node.js:Here are sample code snippets that sends custom telemetry with the Application Insights Node.js SDK:

Versão 2.x e posteriorVersion 2.x and later

const appInsights = require("applicationinsights");
appInsights.setup();
const client = appInsights.defaultClient;

module.exports = function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    // Use this with 'tagOverrides' to correlate custom telemetry to the parent function invocation.
    var operationIdOverride = {"ai.operation.id":context.traceContext.traceparent};

    client.trackEvent({name: "my custom event", tagOverrides:operationIdOverride, properties: {customProperty2: "custom property value"}});
    client.trackException({exception: new Error("handled exceptions can be logged with this method"), tagOverrides:operationIdOverride);
    client.trackMetric({name: "custom metric", value: 3, tagOverrides:operationIdOverride});
    client.trackTrace({message: "trace message", tagOverrides:operationIdOverride});
    client.trackDependency({target:"http://dbname", name:"select customers proc", data:"SELECT * FROM Customers", duration:231, resultCode:0, success: true, dependencyTypeName: "ZSQL", tagOverrides:operationIdOverride});
    client.trackRequest({name:"GET /customers", url:"http://myserver/customers", duration:309, resultCode:200, success:true, tagOverrides:operationIdOverride});

    context.done();
};

Versão 1.xVersion 1.x

const appInsights = require("applicationinsights");
appInsights.setup();
const client = appInsights.defaultClient;

module.exports = function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    // Use this with 'tagOverrides' to correlate custom telemetry to the parent function invocation.
    var operationIdOverride = {"ai.operation.id":context.operationId};

    client.trackEvent({name: "my custom event", tagOverrides:operationIdOverride, properties: {customProperty2: "custom property value"}});
    client.trackException({exception: new Error("handled exceptions can be logged with this method"), tagOverrides:operationIdOverride);
    client.trackMetric({name: "custom metric", value: 3, tagOverrides:operationIdOverride});
    client.trackTrace({message: "trace message", tagOverrides:operationIdOverride});
    client.trackDependency({target:"http://dbname", name:"select customers proc", data:"SELECT * FROM Customers", duration:231, resultCode:0, success: true, dependencyTypeName: "ZSQL", tagOverrides:operationIdOverride});
    client.trackRequest({name:"GET /customers", url:"http://myserver/customers", duration:309, resultCode:200, success:true, tagOverrides:operationIdOverride});

    context.done();
};

O parâmetro tagOverrides define operation_Id para a ID de invocação de função.The tagOverrides parameter sets the operation_Id to the function's invocation ID. Essa configuração permite que você correlacione toda a telemetria gerada automaticamente e a telemetria personalizada para uma dada invocação de função.This setting enables you to correlate all of the automatically generated and custom telemetry for a given function invocation.

DependênciasDependencies

As funções v2 coletam automaticamente as dependências para solicitações HTTP, ServiceBus, EventHub e SQL.Functions v2 automatically collects dependencies for HTTP requests, ServiceBus, EventHub, and SQL.

Você pode escrever código personalizado para mostrar as dependências.You can write custom code to show the dependencies. Para obter exemplos, consulte o exemplo de código na seção de telemetria personalizada C#.For examples, see the sample code in the C# custom telemetry section. O exemplo de código resulta em um mapa de aplicativo no Application Insights que tem essa aparência:The sample code results in an application map in Application Insights that looks like the following image:

Mapa do aplicativo

Habilitar a integração do Application InsightsEnable Application Insights integration

Para um aplicativo de funções enviar dados ao Application Insights, ele precisa saber a chave de instrumentação de um recurso do Application Insights.For a function app to send data to Application Insights, it needs to know the instrumentation key of an Application Insights resource. A chave deve estar em uma configuração de aplicativo chamada APPINSIGHTS_INSTRUMENTATIONKEY.The key must be in an app setting named APPINSIGHTS_INSTRUMENTATIONKEY.

Ao criar seu aplicativo de funções no portal do Azure, com a linha de comando usando o Azure Functions Core Tools, ou usando o Visual Studio Code, a integração do Application Insights é habilitada por padrão.When you create your function app in the Azure portal, from the command line by using Azure Functions Core Tools, or by using Visual Studio Code, Application Insights integration is enabled by default. O recurso do Application Insights tem o mesmo nome do seu aplicativo de funções e é criado na mesma região ou na região mais próxima.The Application Insights resource has the same name as your function app, and it's created either in the same region or in the nearest region.

Novo aplicativo de funções no portalNew function app in the portal

Para examinar o recurso do Application Insights que está sendo criado, selecione-o para expandir a janela do Application Insights.To review the Application Insights resource being created, select it to expand the Application Insights window. Você pode alterar o Novo nome do recurso ou escolher um Local diferente em uma geografia do Azure onde deseja armazenar seus dados.You can change the New resource name or choose a different Location in an Azure geography where you want to store your data.

Habilitar o Application Insights ao criar um aplicativo de funções

Quando você escolhe Criar, um recurso de Application Insights é criado com seu aplicativo de funções, que tem APPINSIGHTS_INSTRUMENTATIONKEY definido nas configurações do aplicativo.When you choose Create, an Application Insights resource is created with your function app, which has the APPINSIGHTS_INSTRUMENTATIONKEY set in application settings. Tudo está pronto para começar.Everything is ready to go.

Adicionar a um aplicativo de funções existenteAdd to an existing function app

Ao criar um aplicativo de funções usando o Visual Studio, você deve criar o recurso de Application Insights.When you create a function app using Visual Studio, you must create the Application Insights resource. Em seguida, você pode adicionar a chave de instrumentação a partir desse recurso como uma configuração de aplicativo no seu aplicativo de funções.You can then add the instrumentation key from that resource as an application setting in your function app.

Azure Functions facilita a adição de Application Insights integração a um aplicativo de funções do portal do Azure.Azure Functions makes it easy to add Application Insights integration to a function app from the Azure portal.

  1. No portal do [portal do Azure][Azure], procure e selecione aplicativo de funçõese, em seguida, escolha seu aplicativo de funções.In the Azure portal, search for and select function app, and then choose your function app.

  2. Selecione a faixa Application insights não está configurada na parte superior da janela.Select the Application Insights is not configured banner at the top of the window. Se você não vir essa faixa, seu aplicativo poderá já ter Application Insights habilitado.If you don't see this banner, then your app might already have Application Insights enabled.

    Habilitar o Application Insights no portal

  3. Expanda alterar seu recurso e crie um recurso de Application insights usando as configurações especificadas na tabela a seguir.Expand Change your resource and create an Application Insights resource by using the settings specified in the following table.

    ConfiguraçãoSetting Valor sugeridoSuggested value DescriçãoDescription
    Nome de recurso novoNew resource name Nome de aplicativo exclusivoUnique app name É mais fácil usar o mesmo nome que seu aplicativo de funções, que deve ser exclusivo em sua assinatura.It's easiest to use the same name as your function app, which must be unique in your subscription.
    LocalidadeLocation Europa OcidentalWest Europe Se possível, use a mesma região que seu aplicativo de funções ou uma região próxima dela.If possible, use the same region as your function app, or one that's close to that region.

    Criar um recurso do Application Insights

  4. Escolha Aplicar.Select Apply.

    O recurso do Application Insights é criado no mesmo grupo de recursos e assinatura que seu aplicativo de funções.The Application Insights resource is created in the same resource group and subscription as your function app. Depois que o recurso for criado, feche a janela do Application Insights.After the resource is created, close the Application Insights window.

  5. Em seu aplicativo de funções, selecione configuração em configuraçõese, em seguida, selecione configurações do aplicativo.In your function app, select Configuration under Settings, and then select Application settings. Se você vir uma configuração chamada APPINSIGHTS_INSTRUMENTATIONKEY, isso significa que a integração do Application Insights está habilitada para seu aplicativo de funções em execução no Azure.If you see a setting named APPINSIGHTS_INSTRUMENTATIONKEY, Application Insights integration is enabled for your function app running in Azure.

As primeiras versões de Functions usavam o monitoramento interno, o que não é mais recomendado.Early versions of Functions used built-in monitoring, which is no longer recommended. Ao habilitar a integração do Application Insights para um aplicativo de funções como esse, você também deve desabilitar o registro em log interno.When enabling Application Insights integration for such a function app, you must also disable built-in logging.

Relatar problemasReport issues

Para relatar um problema com a integração do Application Insights em Functions ou para fazer sugestões ou uma solicitação, crie um problema no GitHub.To report an issue with Application Insights integration in Functions, or to make a suggestion or request, create an issue in GitHub.

Logs de streamingStreaming Logs

Ao desenvolver um aplicativo, muitas vezes você quer ver o que está sendo gravado nos logs quase em tempo real quando executado no Azure.While developing an application, you often want to see what's being written to the logs in near real-time when running in Azure.

Há duas maneiras de exibir um fluxo de arquivos de log que está sendo gerado por suas execuções de funções.There are two ways to view a stream of log files being generated by your function executions.

  • Streaming de log interno: a plataforma do Serviço de Aplicativo permite exibir um fluxo dos arquivos de log do aplicativo.Built-in log streaming: the App Service platform lets you view a stream of your application log files. Isso é equivalente à saída que aparece ao depurar suas funções durante o desenvolvimento local e ao usar a guia Teste no portal.This is equivalent to the output seen when you debug your functions during local development and when you use the Test tab in the portal. Todas as informações baseadas em log são exibidas.All log-based information is displayed. Para obter mais informações, consulte Streaming de logs.For more information, see Stream logs. Esse método de streaming é compatível com apenas uma única instância e não pode ser usado com um aplicativo executado no Linux em um plano de Consumo.This streaming method supports only a single instance, and can't be used with an app running on Linux in a Consumption plan.

  • Live Metrics Stream: quando seu aplicativo de funções está conectado ao Application Insights, você pode exibir dados de log e outras métricas quase em tempo real no portal do Azure usando Live Metrics Stream.Live Metrics Stream: when your function app is connected to Application Insights, you can view log data and other metrics in near real-time in the Azure portal using Live Metrics Stream. Use esse método ao monitorar funções em execução em várias instâncias ou no Linux em um plano de Consumo.Use this method when monitoring functions running on multiple-instances or on Linux in a Consumption plan. Esse método usa dados amostrados.This method uses sampled data.

Os fluxos de log podem ser exibidos no portal e na maioria dos ambientes de desenvolvimento local.Log streams can be viewed both in the portal and in most local development environments.

PortalPortal

Você pode exibir os dois tipos de fluxos de log no portal.You can view both types of log streams in the portal.

Streaming de log internoBuilt-in log streaming

Para exibir os logs de streaming no portal, selecione a guia Recursos da plataforma no seu aplicativo de funções.To view streaming logs in the portal, select the Platform features tab in your function app. Em seguida, em Monitoramento, escolha Streaming de log.Then, under Monitoring, choose Log streaming.

Habilitar logs de streaming no portal

Isso conecta seu aplicativo ao serviço de streaming de log e os logs de aplicativo são exibidos na janela.This connects your app to the log streaming service and application logs are displayed in the window. Você pode alternar entre Logs de aplicativo e Logs do servidor Web.You can toggle between Application logs and Web server logs.

Exibir logs de streaming no portal

Live Metrics StreamLive Metrics Stream

Para exibir o Live Metrics Stream para seu aplicativo, selecione a guia Visão geral do seu aplicativo de funções.To view the Live Metrics Stream for your app, select the Overview tab of your function app. Quando tiver Application Insights habilitado, você verá um link Application Insights em Recursos configurados.When you have Application Insights enables, you see an Application Insights link under Configured features. Esse link leva até a página de Application Insights para seu aplicativo.This link takes you to the Application Insights page for your app.

No Application Insights, selecione Live Metrics Stream.In Application Insights, select Live Metrics Stream. As entradas de log amostradas são exibidas em Telemetria da amostra.Sampled log entries are displayed under Sample Telemetry.

Exibir Live Metrics Stream no portal

Visual Studio CodeVisual Studio Code

Para ativar os logs de streaming para seu aplicativo de funções no Azure:To turn on the streaming logs for your function app in Azure:

  1. Selecione F1 para abrir a paleta de comandos e, em seguida, pesquise e execute o comando Azure Functions: iniciar logs de streaming.Select F1 to open the command palette, and then search for and run the command Azure Functions: Start Streaming Logs.

  2. Selecione seu aplicativo de funções no Azure e, em seguida, selecione Sim para habilitar o log de aplicativo para o aplicativo de funções.Select your function app in Azure, and then select Yes to enable application logging for the function app.

  3. Dispare suas funções no Azure.Trigger your functions in Azure. Observe que os dados de log são exibidos na janela saída no Visual Studio Code.Notice that log data is displayed in the Output window in Visual Studio Code.

  4. Quando terminar, lembre-se de executar o comando Azure Functions: parar os logs de streaming para desabilitar o registro em log para o aplicativo de funções.When you're done, remember to run the command Azure Functions: Stop Streaming Logs to disable logging for the function app.

Ferramentas do CoreCore Tools

Streaming de log internoBuilt-in log streaming

Use a logstream opção para começar a receber logs de streaming de um aplicativo de funções específico em execução no Azure, como no exemplo a seguir:Use the logstream option to start receiving streaming logs of a specific function app running in Azure, as in the following example:

func azure functionapp logstream <FunctionAppName>

Live Metrics StreamLive Metrics Stream

Você também pode exibir o Live Metrics Stream para seu aplicativo de funções em uma nova janela do navegador, incluindo a --browser opção, como no exemplo a seguir:You can also view the Live Metrics Stream for your function app in a new browser window by including the --browser option, as in the following example:

func azure functionapp logstream <FunctionAppName> --browser

CLI do AzureAzure CLI

Você pode habilitar streaming de logs usando a CLI do Azure.You can enable streaming logs by using the Azure CLI. Use os comandos a seguir para entrar, escolha sua assinatura e transmita os arquivos de log:Use the following commands to sign in, choose your subscription, and stream log files:

az login
az account list
az account set --subscription <subscriptionNameOrId>
az webapp log tail --resource-group <RESOURCE_GROUP_NAME> --name <FUNCTION_APP_NAME>

Azure PowerShellAzure PowerShell

Você pode habilitar streaming de logs usando Azure PowerShell.You can enable streaming logs by using Azure PowerShell. Para o PowerShell, use os comandos a seguir para adicionar sua conta do Azure, escolha sua assinatura e transmita os arquivos de log:For PowerShell, use the following commands to add your Azure account, choose your subscription, and stream log files:

Add-AzAccount
Get-AzSubscription
Get-AzSubscription -SubscriptionName "<subscription name>" | Select-AzSubscription
Get-AzWebSiteLog -Name <FUNCTION_APP_NAME> -Tail

Dimensionar logs do controladorScale controller logs

O controlador de escala de Azure Functions monitora as instâncias de host de função que executam seu aplicativo e toma decisões sobre quando adicionar ou remover instâncias de host de função.The Azure Functions scale controller monitors the function host instances that run your app and makes decisions about when to add or remove function host instances. Se você precisar entender as decisões que o controlador de escala está fazendo em seu aplicativo, você pode configurá-lo para emitir logs para Application Insights ou para o armazenamento de BLOBs.If you need to understand the decisions the scale controller is making in your application, you can configure it to emit logs to Application Insights or to Blob Storage.

Aviso

Esse recurso está em visualização.This feature is in preview. Não recomendamos deixar esse recurso habilitado indefinidamente e, em vez disso, você deve habilitá-lo quando precisar das informações coletadas e, em seguida, desabilitá-lo.We do not recommend you leave this feature enabled indefinitely, and you should instead enable it when you need the information it collects and then disable it.

Para habilitar esse recurso, adicione uma nova configuração de aplicativo chamada SCALE_CONTROLLER_LOGGING_ENABLED .To enable this feature, add a new application setting named SCALE_CONTROLLER_LOGGING_ENABLED. O valor dessa configuração deve estar no formato {Destination}:{Verbosity} , em que:The value of this setting must be of the format {Destination}:{Verbosity}, where:

  • {Destination}Especifica o destino para o qual os logs serão enviados e deve ser AppInsights ou Blob .{Destination} specifies the destination for the logs to be sent to, and must be either AppInsights or Blob.
  • {Verbosity}Especifica o nível de registro em log desejado e deve ser um de None , Warning ou Verbose .{Verbosity} specifies the level of logging you want, and must be one of None, Warning, or Verbose.

Por exemplo, para registrar em log informações detalhadas do controlador de escala para Application Insights, use o valor AppInsights:Verbose .For example, to log verbose information from the scale controller to Application Insights, use the value AppInsights:Verbose.

Observação

Se você habilitar o AppInsights tipo de destino, deverá garantir que configure Application insights para seu aplicativo de funções.If you enable the AppInsights destination type, you must ensure you configure Application Insights for your function app.

Se você definir o destino como Blob , os logs serão criados em um contêiner de blob nomeado na azure-functions-scale-controller conta de armazenamento definida na AzureWebJobsStorage configuração do aplicativo.If you set the destination to Blob, the logs will be created in a blob container named azure-functions-scale-controller within the storage account set in the AzureWebJobsStorage application setting.

Se você definir o detalhamento como Verbose , o controlador de escala registrará um motivo para cada alteração na contagem de trabalho, bem como informações sobre os gatilhos que participam das decisões do controlador de escala.If you set the verbosity to Verbose, the scale controller will log a reason for every change in the worker count, as well as information about the triggers that participate in the scale controller's decisions. Por exemplo, os logs incluirão avisos de gatilho, e os hashes usados pelos gatilhos antes e depois do controlador de escala são executados.For example, the logs will include trigger warnings, and the hashes used by the triggers before and after the scale controller runs.

Para desabilitar o registro em log do controlador de escala, defina o valor da {Verbosity} None configuração para ou remova o SCALE_CONTROLLER_LOGGING_ENABLED aplicativo.To disable scale controller logging, set the value of the {Verbosity} to None or remove the SCALE_CONTROLLER_LOGGING_ENABLED application setting.

Desabilitar o registro em log internoDisable built-in logging

Ao ativar o Application Insights, desative o registro interno que usa o Armazenamento do Microsoft Azure.When you enable Application Insights, disable the built-in logging that uses Azure Storage. O registro em log interno é útil para testes com cargas de trabalho leves, mas não se destina ao uso em produção com carga alta.The built-in logging is useful for testing with light workloads, but isn't intended for high-load production use. Para monitoramento de produção, o Application Insights é recomendado.For production monitoring, we recommend Application Insights. Se o registro em log interno foi usado na produção, o registro de logs pode estar incompleto devido à limitação da largura de banda de rede no Armazenamento do Microsoft Azure.If built-in logging is used in production, the logging record might be incomplete because of throttling on Azure Storage.

Para desabilitar o registro em log interno, exclua a configuração de aplicativo AzureWebJobsDashboard.To disable built-in logging, delete the AzureWebJobsDashboard app setting. Para obter informações sobre como excluir configurações do aplicativo no portal do Azure, consulte a seção Configurações do aplicativo em Como gerenciar um aplicativo de funções.For information about how to delete app settings in the Azure portal, see the Application settings section of How to manage a function app. Antes de excluir a configuração do aplicativo, veja se não existe nenhuma função no mesmo aplicativo de funções que use essa configuração para associações ou gatilhos do Armazenamento do Microsoft Azure.Before you delete the app setting, make sure no existing functions in the same function app use the setting for Azure Storage triggers or bindings.

Próximas etapasNext steps

Para saber mais, consulte os recursos a seguir:For more information, see the following resources: