Analisar a telemetria do Azure Functions no Application Insights
As Funções do Azure podem ser integradas no Application Insights para lhe permitir monitorizar melhor as suas aplicações de funções. O Application Insights coleta dados de telemetria gerados pelo seu aplicativo de função, incluindo informações que seu aplicativo grava em logs. A integração do Application Insights normalmente é habilitada quando seu aplicativo de função é criado. Se seu aplicativo de função não tiver a chave de instrumentação definida, você deve primeiro habilitar a integração do Application Insights.
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. Este artigo fornece exemplos básicos de como exibir e consultar os dados coletados. Para saber mais sobre como explorar os dados do seu aplicativo de função no Application Insights, consulte O que é o Application Insights?.
Para poder visualizar dados do Application Insights de um aplicativo de função, você deve ter pelo menos permissões de função de Colaborador no aplicativo de função. Você também precisa ter a permissão Monitoring Reader na instância do Application Insights. Você tem essas permissões por padrão para qualquer aplicativo de função e instância do Application Insights que criar.
Para saber mais sobre retenção de dados e possíveis custos de armazenamento, consulte Coleta, retenção e armazenamento de dados no Application Insights.
Visualizando telemetria na guia Monitor
Com a integração do Application Insights habilitada, você pode exibir dados de telemetria na guia Monitor .
Na página do aplicativo de função, selecione uma função que tenha sido executada pelo menos uma vez depois que o Application Insights foi configurado. Em seguida, selecione Monitor no painel esquerdo. Selecione Atualizar periodicamente, até que a lista de invocações de função seja exibida.
Nota
Pode levar até cinco minutos para que a lista apareça enquanto o cliente de telemetria armazena dados em lote para transmissão ao servidor. O atraso não se aplica ao Live Metrics Stream. Esse serviço se conecta ao host Functions quando você carrega a página, para que os logs sejam transmitidos diretamente para a página.
Para ver os logs de uma chamada de função específica, selecione o link da coluna Data (UTC) para essa invocação. A saída de log para essa invocação aparece em uma nova página.
Escolha Executar no Application Insights para exibir a origem da consulta que recupera os dados de log do Azure Monitor no Log do Azure. Se esta for a primeira vez que utiliza o Azure Log Analytics na sua subscrição, ser-lhe-á pedido para ativá-lo.
Depois de ativar o Log Analytics, a consulta a seguir é exibida. Você pode ver que os resultados da consulta estão limitados aos últimos 30 dias (
where timestamp > ago(30d)
), e os resultados mostram no máximo 20 linhas (take 20
). Em contrapartida, a lista de detalhes de invocação para sua função é dos últimos 30 dias sem limite.
Para obter mais informações, consulte Consultar dados de telemetria mais adiante neste artigo.
Exibir telemetria no Application Insights
Para abrir o Application Insights a partir de um aplicativo de função no portal do Azure:
Navegue até seu aplicativo de função no portal.
Selecione Application Insights em Configurações na página à esquerda.
Se esta for a primeira vez que utiliza o Application Insights com a sua subscrição, ser-lhe-á pedido para ativá-la. Para fazer isso, selecione Ativar Informações do Aplicativo e, em seguida, selecione Aplicar na próxima página.
Para obter informações sobre como usar o Application Insights, consulte a documentação do Application Insights. Esta seção mostra alguns exemplos de como exibir dados no Application Insights. Se você já estiver familiarizado com o Application Insights, poderá ir diretamente para as seções sobre como configurar e personalizar os dados de telemetria.
As seguintes áreas do Application Insights podem ser úteis ao avaliar o comportamento, o desempenho e os erros em suas funções:
Investigar | Description |
---|---|
Falhas | Crie gráficos e alertas com base em falhas de função e exceções de servidor. O Nome da Operação é o nome da função. As falhas nas dependências não são mostradas, a menos que você implemente telemetria personalizada para dependências. |
Desempenho | Analise problemas de desempenho exibindo a utilização de recursos e a taxa de transferência por instâncias de função de nuvem. Esses dados de desempenho podem ser úteis para depurar cenários em que as funções estão sobrecarregando seus recursos subjacentes. |
Métricas | Crie gráficos e alertas baseados em métricas. As métricas incluem o número de invocações de funções, o tempo de execução e as taxas de sucesso. |
Live Metrics | Veja os dados de métricas à medida que são criados quase em tempo real. |
Consultar dados de telemetria
O Application Insights Analytics oferece acesso a todos os dados de telemetria na forma de tabelas em um banco de dados. O Google Analytics fornece uma linguagem de consulta para extrair, manipular e visualizar os dados.
Escolha Logs para explorar ou consultar eventos registrados.
Veja um exemplo de consulta que mostra a distribuição de solicitações por trabalhador nos últimos 30 minutos.
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. Você pode encontrar dados gerados por invocações de função nas tabelas a seguir:
Table | Description |
---|---|
vestígios | Logs criados pelo tempo de execução, controlador de escala e rastreamentos do código da função. Para hospedagem do plano Flex Consumption, traces também inclui logs criados durante a implantação do código. |
pedidos | Uma solicitação para cada chamada de função. |
exceções | Quaisquer exceções lançadas pelo tempo de execução. |
customMetrics | A contagem de invocações bem-sucedidas e fracassadas, taxa de sucesso e duração. |
customEvents | Eventos rastreados pelo tempo de execução, por exemplo: solicitações HTTP que acionam uma função. |
contadores de desempenho | Informações sobre o desempenho dos servidores em que as funções estão sendo executadas. |
As outras tabelas são para testes de disponibilidade e telemetria de cliente e navegador. Você pode implementar telemetria personalizada para adicionar dados a eles.
Dentro de cada tabela, alguns dos dados específicos de Funções estão em um customDimensions
campo. Por exemplo, a consulta a seguir recupera todos os rastreamentos que têm nível Error
de log .
traces
| where customDimensions.LogLevel == "Error"
O tempo de execução fornece os customDimensions.LogLevel
campos e customDimensions.Category
. Você pode fornecer campos adicionais em logs que você escreve em seu código de função. Para obter um exemplo em C#, consulte Log estruturado no guia do desenvolvedor da biblioteca de classes .NET.
Invocações de função de consulta
A cada invocação de função é atribuído um ID exclusivo. InvocationId
está incluído na dimensão personalizada e pode ser usado para correlacionar todos os logs de uma execução de função específica.
traces
| project customDimensions["InvocationId"], message
Correlação de telemetria
Logs de diferentes funções podem ser correlacionados usando operation_Id
o . Use a consulta a seguir para retornar todos os logs de uma operação lógica específica.
traces
| where operation_Id == '45fa5c4f8097239efe14a2388f8b4e29'
| project timestamp, customDimensions["InvocationId"], message
| order by timestamp
Percentagem de amostragem
A configuração de amostragem pode ser utilizada para reduzir o volume da telemetria. Use a consulta a seguir para determinar se a amostragem está operacional ou não. Se vir que RetainedPercentage
para qualquer tipo é inferior a 100, esse tipo de telemetria estará em amostragem.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType
Logs do controlador de escala de consulta
Este recurso está em pré-visualização.
Depois de habilitar o log do controlador de escala e a integração do Application Insights, você pode usar a pesquisa de log do Application Insights para consultar os logs do controlador de escala emitidos. Os logs do controlador de escala são salvos na traces
coleção na categoria ScaleControllerLogs .
A consulta a seguir pode ser usada para pesquisar todos os logs do controlador de escala para o aplicativo de função atual dentro do período de tempo especificado:
traces
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
A consulta a seguir expande a consulta anterior para mostrar como obter apenas logs indicando uma alteração na escala:
traces
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
| where message == "Instance count changed"
| extend Reason = CustomDimensions.Reason
| extend PreviousInstanceCount = CustomDimensions.PreviousInstanceCount
| extend NewInstanceCount = CustomDimensions.CurrentInstanceCount
Consultar logs de implantação de código do Flex Consumption
A consulta a seguir pode ser usada para pesquisar todos os logs de implantação de código para o aplicativo de função atual dentro do período de tempo especificado:
traces
| extend deploymentId = customDimensions.deploymentId
| where deploymentId != ''
| project timestamp, deploymentId, message, severityLevel, customDimensions, appName
Métricas específicas do plano de consumo
Ao executar em um plano de consumo, o custo de execução de uma única função é medido em GB-segundos. O custo de execução é calculado combinando o uso da memória com o tempo de execução. Para saber mais, consulte Estimativa de custos do plano de consumo.
As consultas de telemetria a seguir são específicas para métricas que afetam o custo de execução de funções no plano de consumo.
Determinar o uso da memória
Em Monitoramento, selecione Logs (Analytics), copie a seguinte consulta de telemetria e cole-a na janela de consulta e selecione Executar. Esta consulta retorna o uso total de memória em cada momento amostrado.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
Os resultados são semelhantes ao exemplo a seguir:
carimbo de data/hora [UTC] | nome | valor |
---|---|---|
12/09/2019, 01:05:14.947 | Bytes privados | 209,932,288 |
12/09/2019, 01:06:14.994 | Bytes privados | 212,189,184 |
12/09/2019, 01:06:30.010 | Bytes privados | 231,714,816 |
12/09/2019, 01:07:15.040 | Bytes privados | 210,591,744 |
12/09/2019, 01:12:16.285 | Bytes privados | 216,285,184 |
12/09/2019, 01:12:31.376 | Bytes privados | 235,806,720 |
Determinar a duração
O Azure Monitor rastreia métricas no nível de recurso, que para o Functions é o aplicativo de função. A integração do Application Insights emite métricas por função. Aqui está um exemplo de consulta de análise para obter a duração média de uma função:
customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
nome | médiaDuraçãoMilésimos de segundo |
---|---|
QueueTrigger AvgDurationMs | 16.087 |
QueueTrigger MaxDurationMs | 90.249 |
QueueTrigger MinDurationMs | 8.522 |
Próximos passos
Saiba mais sobre como monitorar o Azure Functions: