Supervisión de ejecuciones en Azure Functions
Azure Functions ofrece integración incorporada con Azure Application Insights para supervisar las ejecuciones de las funciones. En este artículo se proporciona información general sobre las funcionalidades de supervisión que ofrece Azure para supervisar Azure Functions.
Application Insights recopila información del registro, el rendimiento y los errores. Detecta automáticamente anomalías en el rendimiento e incluye herramientas de análisis eficaces, para que le resulte más fácil diagnosticar incidencias y para que comprenda mejor cómo se usan las funciones. Estas herramientas están diseñadas para ayudarle a mejorar continuamente el rendimiento y la facilidad de uso de las funciones. Incluso puede usar Application Insights durante el desarrollo local de proyectos de aplicación de función. Para más información, consulte ¿Qué es Application Insights?
Dado que la instrumentación de Application Insights está integrada en Azure Functions, todo lo que necesita es una clave de instrumentación válida para conectar la aplicación de funciones a un recurso de Application Insights. La clave de instrumentación se agrega a la configuración de la aplicación cuando crea el recurso de la aplicación de funciones en Azure. Si la aplicación de funciones aún no tiene esta clave, puede establecerla de forma manual.
También puede supervisar la propia aplicación de funciones mediante Azure Monitor. Para más información, consulte Supervisión de Azure Functions con Azure Monitor.
Precios y límites de Application Insights
Puede probar la integración de Application Insights con Azure Functions sin costo, con un límite diario para la cantidad de datos que se procesan de forma gratuita.
Si habilita Application Insights durante el desarrollo, podría alcanzar este límite durante las pruebas. Azure proporciona notificaciones del portal y por correo electrónico cuando se aproxima al límite diario. Si pasa por alto esas alertas y llega al límite, los nuevos registros no aparecerán en las consultas de Application Insights. Tenga en cuenta el límite para evitar el tiempo que puede perder, de forma innecesaria, solucionando problemas. Para obtener más información, consulte Facturación de Application Insights.
Importante
Application Insights tiene una característica de muestreo que le puede ayudar a impedir que se recopilen demasiados datos de telemetría sobre las ejecuciones completadas en los momentos de picos de carga. El muestreo está habilitado de forma predeterminada. Si parece que faltan datos, es posible que simplemente deba ajustar la configuración de muestreo para adaptarla a su escenario de supervisión en particular. Para más información, consulte Configuración del muestreo.
Integración de Application Insights
Normalmente crea una instancia de Application Insights al crear la aplicación de funciones. En este caso, la clave de instrumentación necesaria para la integración ya se establece como una configuración de aplicación denominada APPINSIGHTS_INSTRUMENTATIONKEY
. Si, por alguna razón, la aplicación de funciones no tiene establecida la clave de instrumentación, deberá habilitar la integración de Application Insights.
Importante
Las nubes soberanas, como Azure Government, requieren el uso de la cadena de conexión de Application Insights (APPLICATIONINSIGHTS_CONNECTION_STRING
) en lugar de la clave de instrumentación. Para más información, consulte la referencia de APPLICATIONINSIGHTS_CONNECTION_STRING.
En la tabla siguiente se detallan las características compatibles de Application Insights disponibles para supervisar las aplicaciones de funciones:
Versión del entorno en tiempo de ejecución de Azure Functions | 1.x | 2.x y posterior |
---|---|---|
Recopilación automática de | ||
• Solicitudes | ✓ | ✓ |
• Excepciones | ✓ | ✓ |
• Contadores de rendimiento | ✓ | ✓ |
• Dependencias | ||
— HTTP | ✓ | |
— Service Bus | ✓ | |
— Centros de eventos | ✓ | |
— SQL* | ✓ | |
Características compatibles | ||
• QuickPulse/LiveMetrics | Sí | Sí |
• Canal de control seguro | Sí | |
• Muestreo | Sí | Sí |
• Latidos | Sí | |
Correlación | ||
• Service Bus | Sí | |
• Event Hubs | Sí | |
Configurable | ||
Totalmente configurable | Sí |
* Para habilitar la colección de textos de cadena de consultas SQL, consulte Habilitar la colección de consultas SQL.
Recopilación de datos de telemetría
Con la integración de Application Insights habilitada, los datos de telemetría se envían a la instancia de Application Insights conectada. Estos datos incluyen los registros generados por el host de Functions, los seguimientos que se escriben desde el código de Functions y los datos de rendimiento.
Nota
Además de los datos de las funciones y del host de Functions, también puede recopilar datos del controlador de escala de Functions.
Niveles y categorías de registro
Si escribe seguimientos desde el código de la aplicación, debe asignarles un nivel de registro. Estos niveles proporcionan una manera de limitar la cantidad de datos que se recopilan de los seguimientos.
Se asigna un nivel de registro a cada registro. El valor es un número entero que indica la importancia relativa:
LogLevel | Código | Descripción |
---|---|---|
Seguimiento | 0 | Registros que contienen los mensajes más detallados. Estos mensajes pueden contener datos confidenciales de la aplicación. Estos mensajes están deshabilitados de forma predeterminada y nunca se deben habilitar en un entorno de producción. |
Depurar | 1 | Registros que se usan para la investigación interactiva durante el desarrollo. Estos registros deben contener principalmente información útil para la depuración y no tienen ningún valor a largo plazo. |
Información | 2 | Registros que realizan el seguimiento del flujo general de la aplicación. Estos registros deben tener un valor a largo plazo. |
Advertencia | 3 | Registros que resaltan un evento anormal o inesperado en el flujo de la aplicación, pero que no hacen que se detenga la ejecución de la aplicación. |
Error | 4 | Registros que resaltan en qué momento se detiene el flujo de ejecución actual debido a un error. Estos errores deben indicar un error en la actividad actual, no un error en toda la aplicación. |
Crítico | 5 | Registros que describen una aplicación no recuperable o un bloqueo del sistema, o bien un error catastrófico que requiere atención inmediata. |
None | 6 | Deshabilita el registro de la categoría especificada. |
La configuración del archivo host.json determina la cantidad de registro que envía una aplicación de Functions a Application Insights.
Para más información sobre los niveles de registro, consulte Configuración de niveles de registro.
Mediante la asignación de elementos registrados a una categoría, tiene más control sobre los datos de telemetría que se generan a partir de orígenes específicos en la aplicación de funciones. Las categorías facilitan la ejecución de análisis en los datos recopilados. Los seguimientos escritos desde el código de la función se asignan a categorías individuales basadas en el nombre de la función. Para más información sobre las categorías, consulte Configuración de categorías.
Datos de telemetría personalizados
En C#, JavaScript y Python, puede usar un SDK de Application Insights para escribir datos de telemetría personalizados.
Dependencias
A partir de la versión 2.x de Functions, Application Insights recopila automáticamente los datos de las dependencias de los enlaces que utilizan determinados SDK de cliente. El seguimiento distribuido y el seguimiento de dependencias de Application Insights no se admiten actualmente para las aplicaciones de C# que se ejecutan en un proceso de trabajo aislado. Application Insights recopila datos de las siguientes dependencias:
- Azure Cosmos DB
- Azure Event Hubs
- Azure Service Bus
- Servicios de Azure Storage (Blob, Queue y Table)
También se capturan las solicitudes HTTP y las llamadas a la base de datos realizadas con SqlClient
. Para obtener una lista completa de las dependencias admitidas por Application Insights, consulte Dependencias con seguimiento automático.
Application Insights genera un mapa de aplicación de los datos de dependencia recopilados. A continuación se muestra un ejemplo de un mapa de aplicación de una función de desencadenador HTTP con un enlace de salida de Queue Storage.
Las dependencias se escriben en el nivel Information
. Si filtra por el nivel Warning
u otro superior, no verá los datos de dependencia. Por otra parte, la recopilación automática de dependencias se produce en un ámbito que no es de usuario. Para capturar datos de dependencia, asegúrese de que el nivel se establece al menos en Information
fuera del ámbito de usuario (Function.<YOUR_FUNCTION_NAME>.User
) en el host.
Además de la recopilación automática de datos de dependencia, también puede usar uno de los SDK de Application Insights específicos del lenguaje para escribir información de dependencia personalizada en los registros. Para obtener un ejemplo de cómo escribir dependencias personalizadas, consulte uno de los siguientes ejemplos específicos del lenguaje:
- Registrar telemetría personalizada en funciones de C#
- Registrar telemetría personalizada en funciones de JavaScript
- Registrar telemetría personalizada en funciones de Python
Contadores de rendimiento
La recopilación automática de contadores de rendimiento no es compatible si se ejecuta en Linux.
Escritura en los registros
La forma en que escribe en los registros y las API que usa dependen del lenguaje del proyecto de la aplicación de funciones.
Consulte la guía del desarrollador de su lenguaje para obtener más información sobre cómo escribir registros desde las funciones.
Análisis de datos
De forma predeterminada, los datos recopilados de la aplicación de funciones se almacenan en Application Insights. En Azure Portal, Application Insights proporciona un amplio conjunto de visualizaciones de los datos de telemetría. Puede profundizar en los registros de errores y en los eventos de consulta y las métricas. Para más información, junto con ejemplos básicos de cómo ver y consultar los datos recopilados, consulte Análisis de la telemetría de Azure Functions en Application Insights.
Registros de transmisión
A menudo, cuando desarrolla una aplicación, quiere ver lo que se escribe en los registros casi en tiempo real cuando se ejecuta en Azure.
Hay dos maneras de ver una secuencia de los datos de registro que generan las ejecuciones de la función.
Streaming integrado de registros: la plataforma de App Service le permite ver una secuencia de los archivos de registro de aplicaciones. Esta secuencia equivale a la salida que se ve al depurar las funciones durante el desarrollo local y cuando se usa la pestaña Prueba del portal. Se muestra toda la información basada en el registro. Para más información, consulte Registros de Stream. Este método de streaming solo admite una instancia y no se puede usar con una aplicación que se ejecuta en Linux en un plan de consumo.
Live Metrics Stream: cuando la aplicación de funciones está conectada a Application Insights, puede ver los datos de registro y otras métricas casi en tiempo real en Azure Portal mediante Live Metrics Stream. Use este método cuando supervise las funciones que se ejecutan en varias instancias o en Linux en un plan de consumo. En este método se usan datos muestreados.
Las secuencias de registro se pueden ver tanto en el portal como en la mayoría de los entornos de desarrollo locales. Para obtener información sobre cómo habilitar las secuencias de registro, consulte Habilitación de la transmisión de registros de ejecución en Azure Functions.
Registros de diagnóstico
Application Insights permite exportar datos de telemetría a un almacenamiento a largo plazo u otros servicios de análisis.
Dado que Functions también se integra con Azure Monitor, puede usar la configuración de diagnóstico para enviar datos de telemetría a varios destinos, incluidos los registros de Azure Monitor. Para obtener más información, vea Supervisión de Azure Functions con registros de Azure Monitor.
Registros del controlador de escala
El controlador de escala de Azure Functions supervisa las instancias del host de Azure Functions en el que se ejecuta la aplicación. Este controlador toma decisiones sobre cuándo agregar o quitar instancias en función del rendimiento actual. Puede hacer que el controlador de escala emita registros en Application Insights para comprender mejor las decisiones que este controlador está tomando para la aplicación de funciones. También puede almacenar los registros generados en Blob Storage para analizarlos mediante otro servicio.
Para habilitar esta característica, agregue una configuración de aplicación denominada SCALE_CONTROLLER_LOGGING_ENABLED
a la configuración de la aplicación de funciones. Para obtener información sobre cómo hacerlo, consulte Configuración de los registros del controlador de escala.
Métricas de Azure Monitor
Además de los datos de telemetría basados en registro recopilados por Application Insights, también puede obtener datos sobre cómo se ejecuta la aplicación de funciones a partir de las métricas de Azure Monitor. Para más información, consulte Supervisión con Azure Monitor.
Informar de problemas
Para notificar un problema con la integración de Application Insights en Functions o para realizar una solicitud o sugerencia cree un problema en GitHub.
Pasos siguientes
Para obtener más información, consulte los siguientes recursos: