Faltan registros de Application Insights o son incorrectos para las aplicaciones de Azure Functions
Puede supervisar estrechamente la aplicación de funciones a través de la integración entre Azure Functions y Application Insights. Además, puede usar Application Insights sin ninguna configuración personalizada.
Si faltan los registros de Application Insights o si los datos parecen parciales o inexactos, siga estos pasos para resolver el problema.
Comprobación de la configuración de la aplicación de funciones
Vaya a la aplicación de funciones en Azure Portal.
Seleccione Diagnosticar y resolver problemas para abrir el Diagnóstico de las Funciones de Azure.
En la barra de búsqueda , escriba Comprobaciones de configuración de función y ábrala.
Verá un informe de diagnóstico de todas las comprobaciones de configuración de la aplicación de funciones. En concreto para Application Insights, se realizan las siguientes comprobaciones:
Solo existe una de las siguientes opciones de conexión:
APPINSIGHTS_INSTRUMENTATIONKEY
Clave de instrumentación de Application InsightsAPPLICATIONINSIGHTS_CONNECTION_STRING
conexiónSe recomienda usar el APPLICATIONINSIGHTS_CONNECTION_STRING para un comportamiento más estable. La capacidad de usar
APPINSIGHTS_INSTRUMENTATIONKEY
quedará en desuso en 2025.
El registro integrado
AzureWebJobsDashboard
está desactivado, como se recomienda.El muestreo está habilitado para la telemetría de Azure Functions (habilitada de forma predeterminada).
Recomendación: la aplicación de funciones debe estar en la versión 4 y la versión en tiempo de ejecución debe ser al menos 4.15.2xx. Esto se debe a que, desde esta versión en adelante, puede realizar un seguimiento de los flujos de registro de Azure Functions al servicio Application Insights. Al supervisar los flujos de registro, puede comprobar si faltan registros.
Registros de aplicaciones personalizados
De forma predeterminada, los registros de aplicaciones personalizados que escriba se envían al host de Functions, que luego los envía a Application Insights en la categoría de trabajo. Sin embargo, algunas pilas de lenguaje permiten enviar los registros directamente a Application Insights, lo que proporciona control total sobre cómo se emiten los registros que escribe. En este caso, la canalización de registro cambia de worker > Functions host > Application Insights
a worker > Application Insights
.
En la tabla siguiente se resumen las opciones de configuración disponibles para cada pila:
Pila de lenguajes | Dónde configurar registros personalizados |
---|---|
.NET (modelo en proceso) | host.json |
.NET (modelo aislado) | Valor predeterminado (enviar registros personalizados al host de Functions): host.json Para enviar registros directamente a Application Insights, consulte Configuración de Application Insights en HostBuilder. |
Node.JS | host.json |
Python | host.json |
Java | Valor predeterminado (enviar registros personalizados al host de Functions): host.json Para enviar registros directamente a Application Insights, consulte Configuración del agente de Java de Application Insights. |
PowerShell | host.json |
Al configurar los registros de aplicaciones personalizados que se van a enviar directamente, el host ya no los emite y host.json
ya no controla su comportamiento. De forma similar, las opciones expuestas por cada pila solo se aplican a los registros personalizados y no cambian el comportamiento de los demás registros en tiempo de ejecución descritos en este artículo. En este caso, para controlar el comportamiento de todos los registros, es posible que tenga que realizar cambios en ambas configuraciones.
Faltan registros o parciales
Application Insights recopila información del registro, el rendimiento y los errores. La configuración de muestreo se usa para reducir el volumen de telemetría. La característica Muestreo está habilitada de forma predeterminada con la configuración que se muestra en el siguiente ejemplo de host.json . Los tipos excluidos no se muestrearán.
{
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 20,
"excludedTypes": "Request;Exception"
}
}
}
}
Si observa que faltan registros parcialmente, esto puede producirse debido al muestreo. Para determinar la frecuencia de muestreo real, use una consulta de Analytics que use el intervalo de tiempo necesario que se muestra en el siguiente fragmento de código. Si observa que para TelemetrySavedPercentage
cualquier tipo de muestreo es menor que 100, ese tipo de telemetría se está muestreando.
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 obtener más información, consulte Recopilación, retención y almacenamiento de datos en Application Insights.
Controlar el volumen y el nivel de detalle de los registros
Puede aumentar o suprimir los registros que se escriben. Para ello, puede usar una combinación de nivel de registro y categorías como se configura en host.json.
El registrador de Azure Functions incluye una categoría para cada registro. La categoría indica qué parte del código en tiempo de ejecución o el código de función generó el registro. Por ejemplo:
- y
Host.Results
Function.<YOUR_FUNCTION_NAME>
son algunas de las categorías disponibles. - Se asigna un nivel de registro a cada registro. El valor indica importancia relativa, como
Warning
oInformation
.
Para más información, consulte las otras categorías y niveles de registro disponibles.
Puede configurar cómo debe escribir la aplicación los registros siguiendo el fragmento de código de ejemplo:
{
"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 configurar estos valores en el nivel de configuración de la aplicación (para evitar la reimplementación en host.json cambios), invalide los valores de host.json específicos mediante la creación de un valor equivalente como una configuración de aplicación. Para más información, consulte Invalidación de valores de host.json.
Para obtener más ejemplos sobre cómo suprimir registros, consulte functions-log-suppress.
La aplicación de funciones integrada de red virtual no genera ningún registro.
Si una aplicación de funciones está integrada con una red virtual, debe abrir el puerto 443 para el tráfico saliente en el firewall del servidor para permitir que el SDK de Application Insights o el Agente de Application Insights envíen datos al portal para las siguientes direcciones URL:
- dc.applicationinsights.azure.com
- dc.applicationinsights.microsoft.com
- dc.services.visualstudio.com
- * .in.applicationinsights.azure.com
Para más información, compruebe las Direcciones IP que usa Azure Monitor.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.