Compartilhar via


Monitorar execuções no Azure Functions

Azure Functions oferece integração interna ao Aplicativo Azure Insights para monitorar execuções de função. Este artigo fornece uma visão geral dos recursos de monitoramento fornecidos por Azure para monitorar Azure Functions, incluindo como escolher um exportador de telemetria.

O Application Insights coleta dados de log, performance e erros. Detectando automaticamente anomalias de performance e apresentando avançadas ferramentas de análise, você pode diagnosticar problemas com mais facilidade e entender melhor como suas funções são usadas. Essas ferramentas foram projetadas para ajudar você a aprimorar continuamente a performance e a usabilidade de suas funções. Você pode até mesmo usar Application Insights durante o desenvolvimento do projeto de aplicativo de funções local.

À medida que a instrumentação do Application Insights é integrada às Azure Functions, você precisa de uma string de conexão ou chave de instrumentação válida para conectar seu app de funções a um recurso do Application Insights. Essa conexão é configurada como uma configuração de aplicativo quando você cria o recurso do aplicativo de funções em Azure. Se o aplicativo de funções ainda não tiver essa configuração, você poderá defini-la manualmente.

Você também pode monitorar o próprio aplicativo de funções usando Azure Monitor. Para saber mais, consulte Monitor Azure Functions.

Opções de exportação de telemetria

Azure Functions gera dados de telemetria do processo de hospedagem do Functions e do processo de trabalho específico da linguagem onde o código da função é executado. Você pode escolher como esses dados de telemetria são exportados:

Método de exportação Descrição Recomendação
OpenTelemetry com Exportador do Azure Monitor Exporta telemetria em um formato OpenTelemetry para o Application Insights e, opcionalmente, para qualquer ponto de extremidade compatível com OTLP. Recomendado para aplicativos novos e existentes.
Integração interna do Application Insights A integração padrão que envia telemetria para o Application Insights sem código extra. Bom para necessidades básicas de monitoramento.
SDKs clássicos do Application Insights SDKs específicos para a linguagem que fornecem controle detalhado sobre a telemetria personalizada. Legado. Planeje migrar para o OpenTelemetry.

Importante

Para aplicativos novos e existentes, a abordagem recomendada é usar o Azure Monitor Exportador OpenTelemetry para enviar telemetria ao Application Insights. Se você estiver usando um SDK clássico do Application Insights para personalizar sua telemetria exportada, planeje migrar para o OpenTelemetry para obter suporte de longo prazo e acesso aos recursos de observabilidade mais recentes. Os SDKs clássicos do Application Insights não receberão novas atualizações de recursos. Não há suporte para OpenTelemetry para aplicativos em processo em C#.

O exportador Azure Monitor OpenTelemetry requer uma cadeia de conexão do Application Insights (APPLICATIONINSIGHTS_CONNECTION_STRING) e não dá suporte ao uso de uma chave de instrumentação.

Para saber como configurar o OpenTelemetry em seu aplicativo de funções, consulte Use OpenTelemetry com Azure Functions.

Preços e limites do Application Insights

Você pode experimentar a integração do Application Insights com Azure Functions gratuitamente, com um limite diário de quantos dados são processados gratuitamente.

Se você habilitar o Application Insights durante o desenvolvimento, poderá atingir esse limite durante o teste. Azure fornece notificações de portal e email quando você está se aproximando do limite diário. Se você perder esses alertas e atingir o limite, novos logs não aparecerão nas consultas do Application Insights. Lembre-se do limite para evitar desperdiçar tempo com solução de problemas. Para obter mais informações, confira Cobrança do 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. A amostragem é habilitada por padrão. 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. Para obter mais informações, consulte Configurar amostragem.

Integração do Application Insights

Normalmente, você cria uma instância do Application Insights quando cria seu aplicativo de funções. Nesse caso, a chave de instrumentação necessária para a integração já está definida como uma configuração de aplicativo chamada APPINSIGHTS_INSTRUMENTATIONKEY. Se, por algum motivo, seu aplicativo de funções não tiver a chave de instrumentação definida, você precisará habilitar a integração do Application Insights.

Importante

Nuvens soberanas, como Azure Governamental, exigem o uso da cadeia de conexão do Application Insights (APPLICATIONINSIGHTS_CONNECTION_STRING) em vez da chave de instrumentação. Para saber mais, consulte a referência APPLICATIONINSIGHTS_CONNECTION_STRING.

A seguinte tabela detalha os recursos compatíveis do Application Insights disponíveis para monitorar seus aplicativos de funções:

Versão do Azure Functions Runtime 1.x 4.x e posterior
Coleta automática de
• Solicitações
• Exceções
• Contadores de performance
• Dependências
   — HTTP
   – Barramento de Serviço
   – Hubs de Evento
   – SQL*
Recursos compatíveis
• QuickPulse/LiveMetrics Sim Sim
   — Canal de controle seguro Sim
• Amostragem Sim Sim
• Pulsações Sim
Correlação
• Barramento de Serviço Sim
• Hubs de Evento Sim
Configurável
Totalmente configurável Sim

* Para habilitar a coleta de texto da cadeia de caracteres de consulta SQL, confira Habilitar coleta de consultas SQL.

Coletar dados telemétricos

Com a integração do Application Insights habilitada, os dados telemétricos são enviados para sua instância do Application Insights conectada. Esses dados incluem logs gerados pelo host do Functions, rastreamentos gravados do seu código de funções e dados de performance.

Observação

Além dos dados de suas funções e do host do Functions, você também pode coletar dados do controlador de escala do Functions.

Níveis de log e categorias

Ao gravar rastreamentos do código do aplicativo, você deve atribuir um nível de log aos rastreamentos. Os níveis de log fornecem uma forma de limitar a quantidade de dados coletados de seus rastreamentos.

Um nível de log é atribuído a cada log. O valor é um inteiro que indica a importância relativa:

LogLevel Code Descrição
Trace 0 Logs que contêm as mensagens mais detalhadas. Essas mensagens podem conter dados confidenciais do aplicativo. Essas mensagens estão desabilitadas por padrão e nunca devem ser habilitadas em um ambiente de produção.
Depurar 1 Logs usados para investigação interativa durante o desenvolvimento. Esses logs devem conter principalmente informações úteis para depuração e não têm valor de longo prazo.
Informações 2 Logs que acompanham o fluxo geral do aplicativo. Esses logs devem ter valor de longo prazo.
Aviso 3 Logs que realçam um evento anormal ou inesperado no fluxo do aplicativo, mas não fazem com que a execução do aplicativo pare.
Erro 4 Logs que realçam quando o fluxo de execução atual é interrompido por causa de a uma falha. Eles erros devem indicar uma falha na atividade atual, não uma falha em todo o aplicativo.
Crítico 5 Logs que descrevem um aplicativo irrecuperável ou falha do sistema ou uma falha catastrófica que requer atenção imediata.
Nenhum 6 Desabilita o registro em log para a categoria especificada.

A configuração do arquivo host.jsondetermina quanto registro em log um aplicativo de funções envia ao Application Insights.

Para saber mais sobre os níveis de log, confira Configurar níveis de log.

Ao atribuir itens registrados a uma categoria, você tem mais controle sobre a telemetria gerada de fontes específicas em seu aplicativo de funções. As categorias facilitam a execução da análise sobre os dados coletados. Os rastreamentos gravados do seu código de função são atribuídos a categorias individuais com base no nome da função. Para saber mais sobre categorias, confira Configurar categorias.

Dados telemétricos personalizados

Para gravar dados de telemetria personalizados de suas funções, a abordagem recomendada é usar o exportador OpenTelemetry, que fornece telemetria baseada em padrões que pode ser enviada ao Application Insights e a qualquer ponto de extremidade compatível com OTLP.

Você também pode usar SDKs clássicos do Application Insights específicos à linguagem para gravar telemetria personalizada em C#, JavaScript e Python. No entanto, esses SDKs clássicos são herdados e não receberão novas atualizações de recursos. Planeje migrar para o OpenTelemetry para obter suporte de longo prazo.

Dependências

Da versão 2.x em diante do Functions, o Application Insights coleta automaticamente dados sobre dependências para associações que usam determinados SDKs de cliente. O Application Insights coleta dados sobre as seguintes dependências:

  • Azure Cosmos DB
  • Hubs de Eventos do Azure
  • Barramento de Serviço do Azure
  • serviços de armazenamento do Azure (Blob, Fila e Tabela)

Solicitações HTTP e chamadas de banco de dados usando SqlClient também são capturadas. Para obter a lista completa de dependências com suporte no Application Insights, confira dependências rastreadas automaticamente.

O Application Insights gera um mapa do aplicativo dos dados de dependência coletados. Veja a seguir um exemplo de um mapa do aplicativo de uma função de gatilho HTTP com uma associação de saída de armazenamento de fila.

Screenshot mostra um mapa do aplicativo com dependência no portal Azure.

As dependências são gravadas no nível Information. Se você filtrar em Warning ou acima, não verá os dados de dependência. Além disso, a coleta automática de dependências ocorre em um escopo que não é de usuário. Para capturar dados de dependência, verifique se o nível está definido como pelo menos Information fora do escopo do usuário (Function.<YOUR_FUNCTION_NAME>.User) em seu host.

Além da coleta automática de dados de dependência, você pode gravar informações de dependência personalizadas nos logs. A abordagem recomendada é usar o exportador OpenTelemetry para acompanhamento de dependência baseado em padrões.

Você também pode usar SDKs clássicos do Application Insights específicos de linguagem, mas esses são legados e não receberão novas atualizações de recursos.

Contadores de performance

Não há suporte para a coleta automática de Contadores de Performance ao executar no Linux.

Fazer gravação em logs

A maneira como você faz a gravação nos logs e as APIs que você usa dependem da linguagem do seu projeto de aplicativo de funções. Confira o guia do desenvolvedor da sua linguagem para saber mais sobre como gravar logs de suas funções.

Analisar dados

Por padrão, os dados coletados do seu aplicativo de funções são armazenados no Application Insights. No portal Azure, o Application Insights fornece um amplo conjunto de visualizações de seus dados de telemetria. Você pode analisar logs de erros e consultar métricas e eventos. Para saber mais, incluindo exemplos básicos de como ver e consultar os dados coletados, confira Analisar a telemetria do Azure Functions no Application Insights.

Logs de streaming

Ao desenvolver um aplicativo, você geralmente deseja ver o que está sendo gravado nos logs quase em tempo real ao executar em Azure.

Há duas maneiras de ver um fluxo dos dados de log que está sendo gerado por suas execuções de funções.

  • Streaming de log interno: a plataforma do Serviço de Aplicativo permite exibir um fluxo dos arquivos de log do aplicativo. Esse fluxo é equivalente à saída que aparece ao depurar suas funções durante o desenvolvimento local e ao usar a guia Teste no portal. Todas as informações baseadas em log são exibidas. Para obter mais informações, consulte Streaming de 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.

  • Live Metrics Stream: quando seu aplicativo de funções é conectado ao Application Insights, você pode exibir dados de log e outras métricas quase em tempo real no portal Azure usando o Fluxo de Métricas Live. Use esse método ao monitorar funções em execução em várias instâncias ou no Linux em um plano de Consumo. Esse método usa dados amostrados.

Os fluxos de log podem ser exibidos no portal e na maioria dos ambientes de desenvolvimento local. Para saber como habilitar fluxos de log, consulte Habilitar logs de execução de transmissão no Azure Functions.

Logs de diagnóstico

O Application Insights permite exportar dados telemétricos para o armazenamento de longo prazo ou outros serviços de análise.

Como o Functions também se integra ao Azure Monitor, você também pode usar configurações de diagnóstico para enviar dados de telemetria para vários destinos, incluindo logs de Azure Monitor. Para saber mais, consulte Monitor Azure Functions.

Logs do controlador de escala

O controlador de escala Azure Functions monitora instâncias do host Azure Functions no qual seu aplicativo é executado. Esse controlador toma decisões sobre quando adicionar ou remover instâncias com base na performance atual. Você pode fazer com que o controlador de escala emita logs para o Application Insights a fim de entender melhor as decisões que o controlador de escala está tomando para o seu aplicativo de funções. Você também pode armazenar os logs gerados no Armazenamento de Blobs para análise por outro serviço.

Para habilitar esse recurso, adicione uma configuração de aplicativo chamada SCALE_CONTROLLER_LOGGING_ENABLED às configurações do aplicativo de funções. Para saber como, confira Configurar logs do controlador de escala.

Métricas do Azure Monitor

Além dos dados de telemetria baseados em log coletados pelo Application Insights, você também pode obter dados sobre como o aplicativo de funções está sendo executado de Azure Monitor Metrics. Para saber mais, consulte Monitor Azure Functions.

Relatar problemas

Para relatar um problema com a integração do Application Insights no Functions ou para fazer uma sugestão ou solicitação, criar um problema no GitHub.

Próximas etapas

Para saber mais, consulte os recursos a seguir: