Compartir a través de


Supervisión de ejecuciones en Azure Functions

Azure Functions ofrece integración integrada con Aplicación de Azure Insights para supervisar las ejecuciones de funciones. En este artículo se proporciona información general sobre las funcionalidades de supervisión proporcionadas por Azure para la supervisión Azure Functions, incluido cómo elegir un exportador de telemetría.

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 aplicaciones de funciones.

A medida que la instrumentación de Application Insights está integrada en Azure Functions, necesita una clave de instrumentación o cadena de conexión válida para conectar la aplicación de funciones a un recurso de Application Insights. Esta conexión se configura como una configuración de aplicación al crear el recurso de la aplicación de funciones en Azure. Si la aplicación de funciones aún no tiene esta configuración, puede establecerla manualmente.

También puede supervisar la propia aplicación de funciones mediante Azure Monitor. Para obtener más información, consulte Monitor Azure Functions.

Opciones de exportación de telemetría

Azure Functions genera datos de telemetría tanto del proceso de host de Functions como del proceso de trabajo específico del lenguaje en el que se ejecuta el código de función. Puede elegir cómo se exportan estos datos de telemetría:

Método de exportación Descripción Recomendación
OpenTelemetry con Azure Monitor Exporter Exporta la telemetría en un formato OpenTelemetry a Application Insights y, opcionalmente, a cualquier punto de conexión compatible con OTLP. Se recomienda para aplicaciones nuevas y existentes.
Integración integrada de Application Insights Integración predeterminada que envía telemetría a Application Insights sin código adicional. Bueno para las necesidades básicas de supervisión.
SDKs clásicos de Application Insights SDK adaptados al lenguaje que proporcionan un control detallado sobre la telemetría personalizada. Legado. Planee la migración a OpenTelemetry.

Importante

Para las aplicaciones nuevas y existentes, el enfoque recomendado es usar el Azure Monitor Exportador de OpenTelemetry para enviar telemetría a Application Insights. Si actualmente usa un SDK de Application Insights clásico para personalizar la telemetría exportada, planee migrar a OpenTelemetry para obtener soporte técnico a largo plazo y acceder a las funcionalidades de observabilidad más recientes. Los SDK de Application Insights clásicos no recibirán nuevas actualizaciones de características. OpenTelemetry no se admite para aplicaciones en proceso de C#.

El Azure Monitor Exporter de OpenTelemetry necesita una cadena de conexión de Application Insights (APPLICATIONINSIGHTS_CONNECTION_STRING) y no permite usar una clave de instrumentación.

Para obtener información sobre cómo configurar OpenTelemetry en la aplicación de funciones, consulte Use OpenTelemetry con Azure Functions.

Precios y límites de Application Insights

Puede probar la integración de Application Insights con Azure Functions de forma gratuita con un límite diario a 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 pierde esas alertas y alcanza el límite, los nuevos registros no aparecen 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 Application Insights cadena de conexión (APPLICATIONINSIGHTS_CONNECTION_STRING) en lugar de la clave de instrumentación. Para obtener 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 4.x+
Recopilación automática de
• Solicitudes
• Excepciones
• Contadores de rendimiento
• Dependencias
   — HTTP
   — Service Bus
   — Centros de eventos
   — SQL*
Características compatibles
• QuickPulse/LiveMetrics
   • Canal de control seguro
• Muestreo
• Latidos
Correlación
• Bus de Servicio
• Centros de Eventos
Configurable
Totalmente configurable

* 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, las trazas generadas por su código de funciones 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. Los niveles de registro proporcionan una manera de limitar la cantidad de datos que se recopilan de tus trazas.

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.
Ninguno 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. Las trazas generadas por el código de tu 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

Para escribir datos de telemetría personalizados desde las funciones, el enfoque recomendado es usar el exportador de OpenTelemetry, que proporciona telemetría basada en estándares que se puede enviar a Application Insights y a cualquier punto de conexión compatible con OTLP.

También puede usar SDKs clásicos específicos del lenguaje de Application Insights para escribir telemetría personalizada en C#, JavaScript y Python. Sin embargo, estos SDK clásicos son heredados y no recibirán nuevas actualizaciones de características. Planee la migración a OpenTelemetry para obtener soporte técnico a largo plazo.

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. Application Insights recopila datos de las siguientes dependencias:

  • Azure Cosmos DB
  • Azure Event Hubs
  • Azure Service Bus
  • servicios 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.

Screenshot muestra un mapa de aplicación con dependencia en el portal de Azure.

Las dependencias se escriben en el nivel Information. Si filtra en Warning o 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úrate de que el nivel esté configurado al menos en Information fuera del ámbito de usuario (Function.<YOUR_FUNCTION_NAME>.User) en tu host.

Además de la recopilación automática de datos de dependencias, puede escribir información de dependencia personalizada en los registros. El enfoque recomendado es usar el exportador de OpenTelemetry para el seguimiento de dependencias basado en estándares.

También puede usar SDK clásicos de Application Insights específicos del lenguaje, pero estos son obsoletos y no recibirán actualizaciones de nuevas funcionalidades.

Contadores de rendimiento

La recopilación automática de contadores de rendimiento no es compatible si se ejecuta en Linux.

Escribiendo en los archivos de registro

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 el portal Azure, 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, incluidos ejemplos básicos de cómo ver y consultar los datos recopilados, consulte Analizar la telemetría de Azure Functions en Application Insights.

Registros de transmisión

Al desarrollar una aplicación, a menudo 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 visualizar en streaming los archivos de registro de su aplicación. 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 el portal de Azure 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 flujos de registro, consulte Enable streaming execution logs in 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, también 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, consulte Monitor Azure Functions.

Registros del controlador de escala

El controlador de escalado 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 registros recopilados por Application Insights, también puede obtener datos sobre cómo se ejecuta la aplicación de funciones desde Azure Monitor Metrics. Para obtener más información, consulte Monitor Azure Functions.

Informar de problemas

Para notificar un problema con la integración de Application Insights en Functions o para realizar una sugerencia o solicitud, crear un problema en GitHub.

Pasos siguientes

Para obtener más información, consulte los siguientes recursos: