Monitorizar as execuções nas Funções do Azure

O Azure Functions oferece integração interna com o Azure Application Insights para monitorar execuções de funções. Este artigo fornece uma visão geral dos recursos de monitoramento fornecidos pelo Azure para monitorar o Azure Functions.

O Application Insights recolhe dados de registo, desempenho e erro. Ao detetar automaticamente anomalias de desempenho e ao apresentar poderosas ferramentas de análise, você pode diagnosticar problemas com mais facilidade e entender melhor como suas funções são usadas. Essas ferramentas são projetadas para ajudá-lo a melhorar continuamente o desempenho e a usabilidade de suas funções. Você pode até usar o Application Insights durante o desenvolvimento de projetos de aplicativos de função local. Para obter mais informações, consulte O que é o Application Insights?.

Como a instrumentação do Application Insights é incorporada ao Azure Functions, você precisa de uma chave de instrumentação válida para conectar seu aplicativo de função a um recurso do Application Insights. A chave de instrumentação é adicionada às configurações do seu aplicativo à medida que você cria seu recurso de aplicativo de função no Azure. Se o seu aplicativo de função ainda não tiver essa chave, você poderá configurá-la manualmente.

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

Preços e limites do Application Insights

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

Se você habilitar o Applications Insights durante o desenvolvimento, poderá atingir esse limite durante o teste. O Azure fornece notificações por email e portal quando você está se aproximando do seu limite diário. Se você perder esses alertas e atingir o limite, novos logs não aparecerão nas consultas do Application Insights. Esteja ciente do limite para evitar tempo de solução de problemas desnecessário. Para obter mais informações, consulte Faturamento do Application Insights.

Importante

O Application Insights tem um recurso de amostragem que pode protegê-lo contra a produção de muitos dados de telemetria em execuções concluídas em momentos de pico de carga. A amostragem está habilitada por padrão. Se você parecer estar faltando dados, talvez seja necessário ajustar as configurações de amostragem para se adequar ao seu cenário de monitoramento específico. Para saber mais, consulte Configurar amostragem.

A lista completa de recursos do Application Insights disponíveis para seu aplicativo de função é detalhada em Recursos suportados do Application Insights for Azure Functions.

Integração do Application Insights

Normalmente, você cria uma instância do Application Insights quando cria seu aplicativo de função. 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ção não tiver a chave de instrumentação definida, você precisará habilitar a integração do Application Insights.

Importante

Nuvens soberanas, como o Azure Government, 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 tabela a seguir detalha os recursos suportados do Application Insights disponíveis para monitorar seus aplicativos funcionais:

Versão de tempo de execução do Azure Functions 1.x 2.x+
Recolha automática de
• Pedidos
• Exceções
• Contadores de Desempenho
• Dependências
   — HTTP
   — Barramento de serviço
   — Hubs de eventos
   — SQL*
Funcionalidades suportadas
• QuickPulse/LiveMetrics Sim Sim
   — Canal de controle seguro Sim
• Amostragem Sim Sim
• Batimentos cardíacos Sim
Correlação
• Barramento de Serviço Sim
• Hubs de eventos Sim
Configurável
Totalmente configurável Sim

* Para habilitar a coleção de texto da cadeia de caracteres de consulta SQL, consulte Habilitar coleção de consulta SQL.

Coleta de dados de telemetria

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

Nota

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

Níveis e categorias de log

Ao escrever rastreamentos a partir do código do aplicativo, você deve atribuir um nível de log aos rastreamentos. Os níveis de log fornecem uma maneira 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 importância relativa:

Nível de Registo Código Description
Rastreio 0 Logs que contêm as mensagens mais detalhadas. Essas mensagens podem conter dados confidenciais do aplicativo. Essas mensagens são desabilitadas por padrão e nunca devem ser habilitadas em um ambiente de produção.
Depurar 1 Logs que são 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 a longo prazo.
Informação 2 Logs que controlam o fluxo geral do aplicativo. Esses logs devem ter valor a longo prazo.
Aviso 3 Logs que destacam um evento anormal ou inesperado no fluxo do aplicativo, mas não fazem com que a execução do aplicativo seja interrompida.
Erro 4 Logs que destacam quando o fluxo atual de execução é interrompido devido a uma falha. Esses erros devem indicar uma falha na atividade atual, não uma falha em todo o aplicativo.
Crítico 5 Logs que descrevem uma falha irrecuperável do aplicativo ou do sistema, ou uma falha catastrófica que requer atenção imediata.
Nenhuma 6 Desabilita o registro em log para a categoria especificada.

A configuração do arquivo host.json determina a quantidade de registro em log que um aplicativo de funções envia para o Application Insights.

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

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

Dados de telemetria personalizados

Em C#, JavaScript e Python, você pode usar um SDK do Application Insights para escrever dados de telemetria personalizados.

Dependências

A partir da versão 2.x do Functions, o Application Insights coleta automaticamente dados sobre dependências para associações que usam determinados SDKs de cliente. Atualmente, não há suporte para rastreamento distribuído e rastreamento de dependência do Application Insights para aplicativos C# executados em um processo de trabalho isolado. O Application Insights coleta dados sobre as seguintes dependências:

  • BD do Cosmos para o Azure
  • Azure Event Hubs
  • Azure Service Bus
  • 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 suportadas pelo Application Insights, consulte Dependências controladas automaticamente.

O Application Insights gera um mapa de aplicativos de dados de dependência coletados. A seguir está um exemplo de um mapa de aplicativo de uma função de gatilho HTTP com uma ligação de saída de armazenamento de fila.

Mapa de aplicativos com dependência

As dependências são escritas no Information nível. 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 acontece em um escopo que não é de usuário. Para capturar dados de dependência, verifique se o nível está definido para 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ê também pode usar um dos SDKs do Application Insights específicos do idioma para gravar informações de dependência personalizadas nos logs. Para obter um exemplo de como escrever dependências personalizadas, consulte um dos seguintes exemplos específicos de idioma:

Contadores de Desempenho

A coleta automática de Contadores de Desempenho não é suportada quando executada no Linux.

Gravando em logs

A maneira como você grava em logs e as APIs que você usa dependem do idioma do seu projeto de aplicativo de função.
Consulte o guia do desenvolvedor para seu idioma para saber mais sobre como escrever logs de suas funções.

Analisar dados

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

Streaming Logs

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

Há duas maneiras de exibir um fluxo dos dados de log que estão sendo gerados pelas execuções da função.

  • Streaming de log integrado: a plataforma do Serviço de Aplicativo permite visualizar um fluxo de seus arquivos de log do aplicativo. Esse fluxo é equivalente à saída vista quando você depura suas funções durante o desenvolvimento local e quando usa a guia Teste no portal. Todas as informações baseadas em log são exibidas. Para obter mais informações, consulte Logs de fluxo. Esse método de streaming suporta apenas uma única instância e não pode ser usado com um aplicativo em execução no Linux em um plano de consumo.

  • Fluxo de métricas ao vivo: quando seu aplicativo de função está conectado ao Application Insights, você pode exibir dados de log e outras métricas quase em tempo real no portal do Azure usando o 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. Este método utiliza dados de amostra.

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

Registos de diagnósticos

O Application Insights permite exportar dados de telemetria para 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 do Azure Monitor. Para saber mais, consulte Monitorando o Azure Functions com o Azure Monitor Logs.

Dimensionar logs do controlador

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

Para habilitar esse recurso, você adiciona uma configuração de aplicativo nomeada SCALE_CONTROLLER_LOGGING_ENABLED às configurações do seu aplicativo de função. Para saber como, consulte 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ção está sendo executado a partir do Azure Monitor Metrics. Para saber mais, consulte Monitoramento com o Azure Monitor.

Comunicar problemas

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

Próximos passos

Para obter mais informações, consulte os seguintes recursos: