Os logs do Application Insights estão ausentes ou incorretos para aplicativos do Azure Functions
Você pode monitorar de perto o aplicativo de funções por meio da integração entre o Azure Functions e o Application Insights. E você pode usar o Application Insights sem nenhuma configuração personalizada.
Se os logs do Application Insights estiverem ausentes ou se os dados parecerem parciais ou imprecisos, use as etapas a seguir para resolver o problema.
Verificar a configuração do aplicativo de funções
Navegue até o seu aplicativo de funções no portal do Azure.
Selecione Diagnosticar e resolver problemas para abrir o diagnóstico do Azure Functions.
Na barra de pesquisa , digite Verificações de configuração de função e abra-a.
Você verá um relatório de diagnóstico de todas as verificações de configuração do aplicativo de funções. Em particular para o Application Insights, as seguintes verificações são executadas:
Existe apenas uma das seguintes configurações de conexão:
APPINSIGHTS_INSTRUMENTATIONKEY
Chave de instrumentação do Application InsightsAPPLICATIONINSIGHTS_CONNECTION_STRING
conexãoRecomendamos que você use o APPLICATIONINSIGHTS_CONNECTION_STRING para um comportamento mais estável. A capacidade de uso
APPINSIGHTS_INSTRUMENTATIONKEY
será preterida até 2025.
O registro em log interno
AzureWebJobsDashboard
está desabilitado, conforme recomendado.A amostragem está habilitada para a telemetria do Azure Functions (habilitada por padrão).
Recomendação: o aplicativo de funções deve estar na versão 4 e a versão de runtime deve ser pelo menos 4.15.2xx. Isso ocorre porque, a partir desta versão, você pode acompanhar os fluxos de log do Azure Functions para o serviço Application Insights. Ao monitorar os fluxos de log, você pode verificar se há logs ausentes.
Os logs estão ausentes ou são parciais
O Application Insights coleta dados de log, desempenho e erros. A configuração de amostragem é usada para reduzir o volume de telemetria. O recurso Amostragem é habilitado por padrão com as configurações mostradas no exemplo host.json a seguir. Os tipos excluídos não são amostrados.
{
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 20,
"excludedTypes": "Request;Exception"
}
}
}
}
Se você notar algum log parcialmente ausente, isso pode ocorrer devido à amostragem. Para determinar a taxa de amostragem real, use uma consulta do Analytics que use o intervalo de tempo necessário mostrado no snippet de código a seguir. Se você observar que o TelemetrySavedPercentage
para qualquer tipo de amostragem é menor que 100, esse tipo de telemetria está sendo amostrado.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > todatetime("mm/dd/yyyy hh:mm:ss") and timestamp < todatetime("mm/dd/yyyy hh:mm:ss")
| summarize TelemetrySavedPercentage = 100/avg(itemCount), TelemetryDroppedPercentage = 100-100/avg(itemCount) by bin(timestamp, 1d), itemType
| sort by timestamp asc
Para obter mais informações, confira Coleta, retenção e armazenamento de dados no Application Insights.
Controlar o volume e o detalhamento dos logs
Você pode aumentar ou suprimir os logs gravados. Para fazer isso, você pode usar uma combinação de nível de log e categorias, conforme configurado no host.json.
O agente do Azure Functions inclui uma categoria para cada log. A categoria indica qual parte do código de tempo de execução ou seu código de função gerou o log. Por exemplo:
- Os
Host.Results
eFunction.<YOUR_FUNCTION_NAME>
são algumas das categorias disponíveis. - Um nível de log é atribuído a cada log. O valor indica importância relativa, como
Warning
ouInformation
.
Para obter mais informações, consulte as outras categorias e níveis de log disponíveis.
Você pode configurar como seu aplicativo deve gravar os logs seguindo o snippet de código de exemplo:
{
"version": "2.0",
"logging": {
"logLevel": {
"default": "Information", // catch all default, with modifications below for individual categories.
"Function": "Warning", // Warning level from all Functions (except the ones configured below).
"Host.Aggregator": "Trace", // Log all traces in the 'customMetrics' table of (and shown on Metrics/Alerts blade in AI) - use either this or Host.Results
"Host.Results": "Error", // Error and Critical requests are only logged in the 'requests' table of the AI (and shown on Monitor Functions blade in Functions App) - use either this or Host.Aggregator
"Function.Function1": "Information", //Information level logs from Function 1, logged in 'traces', 'dependencies' and 'customMetrics' tables of AI
"Function.Function2.User": "Information" //user code logs from Function2, logged in 'traces' table of AI
},
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 1,
"excludedTypes": "Exception"
}
}
}
}
Para definir esses valores no nível das configurações do aplicativo (para evitar a reimplantação em host.json alterações), substitua valores de host.json específicos criando um valor equivalente como uma configuração do aplicativo. Para saber mais, confira Substituir valores de host.json.
Para obter mais exemplos sobre como suprimir logs, consulte functions-log-suppression.
O aplicativo de funções integrado de rede virtual não gera logs
Se um aplicativo de funções estiver integrado a uma rede virtual, você deverá abrir a porta 443 para o tráfego de saída no firewall do servidor para permitir que o SDK do Application Insights ou o Agente do Application Insights envie dados ao portal para as seguintes URLs:
- dc.applicationinsights.azure.com
- dc.applicationinsights.microsoft.com
- dc.services.visualstudio.com
- *.in.applicationinsights.azure.com
Para obter mais informações, veja Endereços IP usados pelo Azure Monitor.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.