Compartir a través de


Configuración de la supervisión para Azure Functions

Azure Functions se integra con Application Insights para permitirle supervisar mejor las aplicaciones de funciones. Application Insights, una característica de Azure Monitor, es un servicio de Application Performance Management (APM) extensible que recopila los datos generados por la aplicación de funciones, incluida la información que la aplicación escribe en los registros. La integración de Application Insights se suele habilitar al crear la aplicación de funciones. Si la aplicación no tiene establecida la clave de instrumentación, antes debe habilitar la integración de Application Insights.

Puede usar Application Insights sin ninguna configuración personalizada. Sin embargo, la configuración predeterminada puede dar lugar a grandes volúmenes de datos. Si usa una suscripción de Visual Studio Azure, es posible que alcance su límite de datos para Application Insights. Para más información acerca de los costos de Application Insights, consulte Facturación de Application Insights. Para más información, consulte Soluciones con un gran volumen de telemetría.

En este artículo, aprenderá a configurar y personalizar los datos que las funciones envían a Application Insights. Puede establecer configuraciones de registro comunes en el archivo host.json. De manera predeterminada, esta configuración también rige los registros personalizados emitidos por el código. Sin embargo, en algunos casos este comportamiento se puede deshabilitar en favor de las opciones que proporcionan más control sobre el registro. Para obtener más información, consulte Registros de aplicaciones personalizados.

Nota:

Puede usar valores de aplicación especialmente configurados para representar valores específicos en un archivo host.json para un entorno determinado. Si lo hace, puede cambiar eficazmente host.json configuración sin necesidad de volver a publicar el archivo host.json en el proyecto. Para más información, consulte Invalidación de valores de host.json.

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. Algunas pilas de lenguaje le permiten enviar los registros directamente a Application Insights, lo que le 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.

Configuración de categorías

El registrador de Azure Functions incluye una categoría para cada registro. La categoría indica qué parte del código de tiempo de ejecución o del código de la función escribió el registro. Las categorías difieren entre la versión 1. x y las versiones posteriores.

Los nombres de categoría se asignan de forma diferente en Functions en comparación con otros marcos de .NET. Por ejemplo, cuando se usa ILogger<T> en ASP.NET, la categoría es el nombre del tipo genérico. Las funciones de C# también usan ILogger<T>, pero en lugar de establecer el nombre de tipo genérico como una categoría, el tiempo de ejecución asigna categorías basadas en el origen. Por ejemplo:

  • A las entradas relacionadas con la ejecución de una función se les asigna una categoría de Function.<FUNCTION_NAME>.
  • A las entradas creadas por código de usuario dentro de la función, como cuando se llama a logger.LogInformation(), se les asigna una categoría de Function.<FUNCTION_NAME>.User.

En la tabla siguiente se describen las categorías principales de registros que crea el entorno de ejecución:

Category Tabla Descripción
Function traces Incluye registros iniciados y completados de función para todas las ejecuciones de función. En el caso de ejecuciones correctas, estos registros son de nivel Information. Las excepciones se registran en el nivel Error. El entorno de ejecución también crea registros de nivel Warning; por ejemplo, cuando los mensajes en cola se envían a la cola de dudosos.
Function.<YOUR_FUNCTION_NAME> dependencies Los datos de dependencia se recopilan automáticamente para algunos servicios. En el caso de ejecuciones correctas, estos registros son de nivel Information. Para más información, consulte Dependencias. Las excepciones se registran en el nivel Error. El entorno de ejecución también crea registros de nivel Warning; por ejemplo, cuando los mensajes en cola se envían a la cola de dudosos.
Function.<YOUR_FUNCTION_NAME> customMetrics
customEvents
Los SDK de C# y JavaScript permiten recopilar métricas personalizadas y registrar eventos personalizados. Para más información, consulte Datos de telemetría personalizados.
Function.<YOUR_FUNCTION_NAME> traces Incluye registros de funciones iniciadas y completadas para ejecuciones de función específicas. En el caso de ejecuciones correctas, estos registros son de nivel Information. Las excepciones se registran en el nivel Error. El entorno de ejecución también crea registros de nivel Warning; por ejemplo, cuando los mensajes en cola se envían a la cola de dudosos.
Function.<YOUR_FUNCTION_NAME>.User traces Registros generados por el usuario, que pueden integrarse en cualquier nivel de registro. Para más información sobre cómo escribir en los registros desde las funciones, consulte Escritura en los registros.
Host.Aggregator customMetrics Estos registros generados en tiempo de ejecución proporcionan los recuentos y promedios de las invocaciones de función en un período de tiempo configurable. El período predeterminado es 30 segundos o 1000 resultados, lo que ocurra primero. Algunos ejemplos son el número de ejecuciones, la tasa de éxito y la duración. Todos estos registros se escriben en el nivel de Information. Si filtra en Warning o superior, no verá ninguno de estos datos.
Host.Results requests Estos registros generados en tiempo de ejecución indican si una función se ha realizado correctamente o no. Todos estos registros se escriben en el nivel de Information. Si filtra en Warning o superior, no verá ninguno de estos datos.
Microsoft traces Categoría de registro completa que refleja un componente del entorno de ejecución de .NET invocado por el host.
Worker traces Registros generados por el proceso de trabajo de los lenguajes que no son .NET. Los registros del rol de trabajo de lenguaje también se pueden registrar en una categoría Microsoft.*, como Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcFunctionInvocationDispatcher. Estos registros se escriben en el nivel de Information. .

Nota:

En el caso de las funciones de la biblioteca de clases de .NET, estas categorías dan por supuesto que usa ILogger y no ILogger<T>. Para más información, consulte la documentación de ILogger de Functions.

En la columna Tabla se indica en qué tabla de Application Insights se escribe el registro.

Configuración de los niveles de registro

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 cada categoría, debe indicar el nivel de registro mínimo para enviar. La configuración del archivo host.json varía en función de la versión del entorno de ejecución de Functions.

En los ejemplos siguientes se define el registro en función de las reglas siguientes:

  • El nivel de registro predeterminado se establece en Warning para evitar un nivel de registro excesivo para categorías imprevistas.
  • Host.Aggregator y Host.Results se establecen en niveles inferiores. Establecer niveles de registro demasiado altos (especialmente más altos que Information) puede provocar la pérdida de métricas y datos de rendimiento.
  • El registro de las ejecuciones de funciones se establece en Information. Si es necesario, puede invalidar esta configuración en desarrollo local para Debug o Trace.
{
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Warning",
      "Host.Aggregator": "Trace",
      "Host.Results": "Information",
      "Function": "Information"
    }
  }
}

Si el archivo host.json incluye varios registros que comienzan con la misma cadena, los más definidos se asignan primero. Considere el ejemplo siguiente que registra todo en el entorno de ejecución, excepto la categoría Host.Aggregator, en el nivel Error:

{
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Information",
      "Host": "Error",
      "Function": "Error",
      "Host.Aggregator": "Information"
    }
  }
}

Puede usar un valor de nivel de registro de None para evitar que se escriban registros en una categoría.

Precaución

Azure Functions se integra con Application Insights almacenando los eventos de telemetría en tablas de Application Insights. Si establece un nivel de registro de categoría en cualquier valor diferente de Information, impide que la telemetría fluya a esas tablas y no podrá ver datos relacionados en las pestañas Application Insights y Monitor de funciones.

Por ejemplo, para los ejemplos anteriores:

  • Si establece la categoría Host.Results en el nivel de registro de Error, Azure recopila solo los eventos de telemetría de ejecución del host en la tabla requests para las ejecuciones de funciones con errores, lo que impide la visualización de los detalles de ejecución del host de las ejecuciones correctas en las pestañas Application Insights y Function Monitor.
  • Si establece la categoría Function en el nivel de registro de Error, deja de recopilar datos de telemetría de función relacionados con dependencies, customMetricsy customEvents para todas las funciones, lo que impide que vea cualquiera de estos datos en Application Insights. Azure solo recopila traces registrados en el nivel de Error.

En ambos casos, Azure sigue recopilando datos de errores y excepciones en las pestañas Application Insights y Function Monitor. Para más información, consulte Soluciones con un gran volumen de telemetría.

Configurar el agregador

Como se indicó en la sección anterior, el tiempo de ejecución agrega datos acerca de las ejecuciones de la función durante un período de tiempo. El período predeterminado es 30 segundos o 1000 ejecuciones, lo que ocurra primero. Puede configurar este valor en el archivo host.json. Por ejemplo:

{
    "aggregator": {
      "batchSize": 1000,
      "flushTimeout": "00:00:30"
    }
}

Configurar el muestreo

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. Cuando tasa de ejecuciones entrantes supera un umbral especificado, Application Insights empieza a omitir aleatoriamente algunas de las ejecuciones entrantes. La configuración predeterminada para el número máximo de ejecuciones por segundo es de 20 (cinco en la versión 1.x). Puede configurar el muestreo en el archivo host.json. Este es un ejemplo:

{
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond" : 20,
        "excludedTypes": "Request;Exception"
      }
    }
  }
}

Puede excluir determinados tipos de datos de telemetría del muestreo. En este ejemplo, se excluyen del muestreo los datos de tipo Request y Exception. Garantiza que todas las ejecuciones de funciones (solicitudes) y excepciones de se registran mientras que otros tipos de telemetría permanecen sujetos al muestreo.

Si el proyecto usa una dependencia del SDK de Application Insights para realizar el seguimiento manual de telemetría, es posible que experimente un comportamiento inusual si la configuración de muestreo difiere de la configuración de muestreo en la aplicación de funciones. En ese caso, use la misma configuración de muestreo que la de la aplicación de funciones. Para más información, consulte Muestreo en Application Insights.

Habilite la recopilación de consultas SQL

Application Insights recopila automáticamente datos sobre las dependencias de las solicitudes HTTP, las llamadas de la base de datos y varios enlaces. Para más información, consulte Dependencias. El nombre del servidor y la base de datos siempre se recopilan y almacenan para las llamadas SQL, pero el texto de la consulta SQL no se recopila de manera predeterminada. Puede usar dependencyTrackingOptions.enableSqlCommandTextInstrumentation para habilitar el registro de texto de consulta SQL mediante la siguiente configuración (como mínimo) en el archivo de host.json:

"logging": {
    "applicationInsights": {
        "enableDependencyTracking": true,    
        "dependencyTrackingOptions": {
            "enableSqlCommandTextInstrumentation": true
        }
    }
}

Para obtener más información, consulte Seguimiento avanzado de SQL para obtener consultas SQL completas.

Configuración de los registros del controlador de escala

Esta característica se encuentra en su versión preliminar.

Puede hacer que el controlador de escala de Azure Functions emita registros en Application Insights o en Blob Storage para comprender mejor las decisiones que este controlador está tomando para la aplicación de funciones.

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. El siguiente valor de la configuración debe estar en el formato <DESTINATION>:<VERBOSITY>. Para más información, vea la tabla siguiente:

Propiedad Descripción
<DESTINATION> Destino al que se envían los registros. Los valores válidos son AppInsights y Blob.
Cuando use AppInsights, asegúrese de que Application Insights está habilitado en la aplicación de funciones.
Al establecer el destino en Blob, los registros se crean en un contenedor de blobs denominado azure-functions-scale-controller en la cuenta de almacenamiento predeterminada establecida en la configuración de la aplicación AzureWebJobsStorage.
<VERBOSITY> Especifica el nivel de registro. Los valores admitidos son None, Warning y Verbose.
Cuando se establece en Verbose, el controlador de escala registra una razón para cada cambio en el número de trabajos, así como información sobre los desencadenadores de tales decisiones. Los registros detallados incluyen advertencias de desencadenador y los valores hash que usan los desencadenadores antes y después de que se ejecute el controlador de escala.

Sugerencia

Tenga en cuenta que, aunque deje habilitado el registro del controlador de escala, afectará a los costos potenciales de la supervisión de la aplicación de funciones. Tenga en cuenta habilitar el registro hasta que haya recopilado suficientes datos para entender cómo se comporta el controlador de escala y, a continuación, deshabilítelo.

Por ejemplo, el siguiente comando de la CLI de Azure activa el registro detallado del controlador de escala para Application Insights:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:Verbose

En este ejemplo, reemplace <FUNCTION_APP_NAME> y <RESOURCE_GROUP_NAME> por el nombre de la aplicación de funciones y el nombre del grupo de recursos, respectivamente.

El siguiente comando de la CLI de Azure deshabilita el registro estableciendo el nivel de detalle en None:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:None

También puede deshabilitar el registro si quita la configuración de SCALE_CONTROLLER_LOGGING_ENABLED con el siguiente comando de la CLI de Azure:

az functionapp config appsettings delete --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--setting-names SCALE_CONTROLLER_LOGGING_ENABLED

Con el registro del controlador de escala habilitado, ahora puede consultar los registros del controlador de escala.

Habilitación de la integración de Application Insights

Para que una aplicación de funciones envíe datos a Application Insights, debe conectarse al recurso de Application Insights con solo una de estas opciones de configuración de la aplicación:

Nombre del valor Descripción
APPLICATIONINSIGHTS_CONNECTION_STRING Esta configuración se recomienda y es necesaria cuando la instancia de Application Insights se ejecuta en una nube soberana. La cadena de conexión admite otras funcionalidades nuevas.
APPINSIGHTS_INSTRUMENTATIONKEY Configuración heredada, que Application Insights ha quedado en desuso en favor de la configuración de la cadena de conexión.

Al crear la aplicación de funciones en Azure Portal, desde la línea de comandos mediante Azure Functions Core Tools o Visual Studio Code, la integración de Application Insights está habilitada de manera predeterminada. El recurso de Application Insights tiene el mismo nombre que la aplicación de funciones y se crea en la misma región o en la región más cercana.

Es necesaria la autenticación de Microsoft Entra

Puede usar la APPLICATIONINSIGHTS_AUTHENTICATION_STRING configuración para habilitar las conexiones a Application Insights mediante la autenticación de Microsoft Entra. Esto crea una experiencia de autenticación coherente en todas las canalizaciones de Application Insights, incluido Profiler y Snapshot Debugger, así como desde el host de Functions y los agentes específicos del lenguaje.

Nota:

No hay compatibilidad con la autenticación Entra para el desarrollo local.

El valor contiene Authorization=AAD para una identidad administrada asignada por el sistema o ClientId=<YOUR_CLIENT_ID>;Authorization=AAD para una identidad administrada asignada por el usuario. La identidad administrada ya debe estar disponible para la aplicación de funciones, con un rol asignado equivalente a Monitoring Metrics Publisher. Para más información, consulte Autenticación de Microsoft Entra para Application Insights.

La APPLICATIONINSIGHTS_CONNECTION_STRING configuración sigue siendo necesaria.

Nota:

Al usar APPLICATIONINSIGHTS_AUTHENTICATION_STRING para conectarse a Application Insights mediante la autenticación de Microsoft Entra, también debe Deshabilitar la autenticación local para Application Insights. Esta configuración necesita la autenticación de Microsoft Entra para que la telemetría se ingiera en el área de trabajo.

Nueva aplicación de función en el portal

Para revisar el recurso de Application Insights que se está creando, selecciónelo para expandir la ventana Application Insights. Puede cambiar el valor de Nuevo nombre de recurso o seleccionar otro valor en Ubicación en la ubicación geográfica de Azure donde quiera almacenar los datos.

Captura de pantalla que muestra cómo habilitar Application Insights al crear una aplicación de funciones.

Al seleccionar Crear, se crea un recurso de Application Insights con la aplicación de funciones, que tiene la opción APPLICATIONINSIGHTS_CONNECTION_STRING establecida en la configuración de la aplicación. Todo está listo para funcionar.

Adición a una aplicación de función existente

Si no se creó ningún recurso de Application Insights con la aplicación de funciones, siga los pasos que se describen a continuación para crearlo. A continuación, puede agregar la cadena de conexión desde ese recurso como una configuración de aplicación en la aplicación de funciones.

  1. En Azure Portal, busque y seleccione aplicación de funciones y, a continuación, seleccione la aplicación de funciones.

  2. Seleccione el banner Application Insights no está configurado. en la parte superior de la ventana. Si no ve el banner, es posible que la aplicación ya tenga Application Insights habilitado.

    Captura de pantalla que muestra cómo habilitar Application Insights desde el portal.

  3. Expanda Cambie su recurso y cree un recurso de Application Insights, para lo que deberá usar los valores que se especifican en la tabla siguiente:

    Configuración Valor sugerido Descripción
    Nuevo nombre de recurso Nombre de aplicación único Lo más fácil es usar el mismo nombre que usa para la aplicación de función, que debe ser único en su suscripción.
    Ubicación Oeste de Europa Si es posible, use la misma región que la aplicación de funciones o una que esté cerca de esa región.

    Captura de pantalla que muestra cómo crear un recurso de Application Insights.

  4. Seleccione Aplicar.

    El recurso de Application Insights se crea en el mismo grupo de recursos y suscripción que su aplicación de función. Después de crear el recurso, cierre la ventana Application Insights.

  5. En la aplicación de funciones, expanda Configuracióny, después, seleccione Variables de entorno. En la pestaña configuración de la aplicación , si ve una configuración de aplicación denominada APPLICATIONINSIGHTS_CONNECTION_STRING, la integración de Application Insights está habilitada para la aplicación de funciones que se ejecuta en Azure. Si esta configuración no existe, agréguela mediante la cadena de conexión de Application Insights como valor.

Nota:

Las aplicaciones de funciones anteriores pueden usar APPINSIGHTS_INSTRUMENTATIONKEY en lugar de APPLICATIONINSIGHTS_CONNECTION_STRING. Cuando sea posible, actualice la aplicación para usar la cadena de conexión en lugar de la clave de instrumentación.

Deshabilitar el registro integrado

Las primeras versiones de Functions usaban la supervisión integrada, que ya no se recomienda. Cuando habilite Application Insights, deshabilite el registro integrado que usa Azure Storage. El registro integrado es útil para realizar pruebas con cargas de trabajo ligeras, pero no está diseñado para su uso en producción de alta carga. Para la supervisión de producción, se recomienda Application Insights. Si usa el registro integrado en producción, es posible que el registro de registro esté incompleto debido a la limitación en Azure Storage.

Para deshabilitar el registro integrado, elimine la configuración de la aplicación AzureWebJobsDashboard. Para obtener información acerca de cómo eliminar la configuración de la aplicación en Azure Portal, consulte la sección Trabajo con la configuración de la aplicación de Administración de la aplicación de funciones. Antes de eliminar la configuración de la aplicación, asegúrese de que ninguna función existente en la misma aplicación de funciones utilice la configuración para los desencadenadores o los enlaces de Azure Storage.

Soluciones con un gran volumen de telemetría

Las aplicaciones de funciones son una parte esencial de las soluciones que pueden provocar grandes volúmenes de telemetría, como soluciones de IoT, soluciones rápidas controladas por eventos, sistemas financieros de alta carga y sistemas de integración. En este caso, debe considerar una configuración adicional para reducir los costos al tiempo que mantiene la observabilidad.

Los datos de telemetría generados se pueden consumir en paneles en tiempo real, alertas, diagnósticos detallados, etc. En función de cómo se consuma la telemetría generada, debe definir una estrategia para reducir el volumen de datos generados. Esta estrategia permite supervisar, operar y diagnosticar correctamente las aplicaciones de funciones en producción. Considere las opciones siguientes:

  • Usar de muestreo: como se mencionó anteriormente, el muestreo ayuda a reducir drásticamente el volumen de eventos de telemetría ingeridos mientras se mantiene un análisis estadísticamente correcto. Podría ocurrir que, incluso con el muestreo, obtuviera un gran volumen de datos de telemetría. Inspeccione las opciones que proporciona el muestreo adaptable. Por ejemplo, establezca maxTelemetryItemsPerSecond en un valor que equilibre el volumen generado con sus necesidades de supervisión. Tenga en cuenta que el muestreo de telemetría se aplica por host que ejecuta la aplicación de funciones.

  • Nivel de registro predeterminado: use Warning o Error como valor predeterminado para todas las categorías de telemetría. Más adelante, puede decidir qué categorías desea establecer en el nivel de Information, de modo que pueda supervisar y diagnosticar correctamente las funciones.

  • Ajuste de la telemetría de las funciones: con el nivel de registro predeterminado establecido en Error o Warning, no se recopila información detallada de cada función (dependencias, métricas personalizadas, eventos personalizados y seguimientos). Para esas funciones que son clave para la supervisión de producción, defina una entrada explícita para la categoría Function.<YOUR_FUNCTION_NAME> y establézcala en Information, de modo que pueda recopilar información detallada. Para evitar recopilar registros generados por el usuario en el nivel de Information, establezca la categoría Function.<YOUR_FUNCTION_NAME>.User en el nivel de registro de Error o Warning.

  • Categoría Host.Aggregator: como se describe en Configuración de categorías, esta categoría proporciona información agregada de las invocaciones de funciones. La información de esta categoría se recopila en la tabla Application InsightscustomMetrics, y se muestra en la función pestaña Información general de Azure Portal. En función de cómo configure el agregador, tenga en cuenta que puede haber un retraso determinado por la configuración de flushTimeout, en la telemetría recopilada. Si establece esta categoría en un valor diferente de Information, dejará de recopilar los datos de la tabla customMetrics y no mostrará métricas en la función pestaña Información general.

    La siguiente captura de pantalla muestra los datos de telemetría correspondientes a Host.Aggregator en la pestaña Información general de la función:

    Captura de pantalla que muestra la telemetría host.Aggregator que se muestra en la pestaña Información general de la función.

    En la captura de pantalla siguiente, se muestran los datos de telemetría correspondientes a Host.Aggregator en la tabla customMetrics de Application Insights:

    Captura de pantalla que muestra la telemetría de Host.Aggregator en la tabla customMetrics Application Insights.

  • Categoría Host.Results: como se describe en Configuración de categorías, esta categoría proporciona los registros generados en tiempo de ejecución que indican el éxito o error de una invocación de función. La información de esta categoría se recopila en la tabla requests Application Insights y se muestra en la función pestaña Supervisar y en diferentes paneles de Application Insights (rendimiento, errores, etc.). Si establece esta categoría en un valor diferente de Information, solo recopilará telemetría generada en el nivel de registro definido (o superior). Por ejemplo, establecerla en error da como resultado el seguimiento de los datos de las solicitudes solo para las ejecuciones con errores.

    La siguiente captura de pantalla muestra los datos de telemetría correspondientes a Host.Results en la pestaña Supervisión de la función:

    Captura de pantalla que muestra la telemetría host.Results en la pestaña Monitor de función.

    En la captura de pantalla siguiente, se muestran los datos de telemetría correspondientes a Host.Results en el panel Rendimiento de Application Insights:

    Captura de pantalla que muestra la telemetría Host.Results en el panel rendimiento de Application Insights.

  • Host.Aggregator frente a Host.Results: ambas categorías proporcionan una buena información sobre las ejecuciones de las funciones. Si es necesario, puede eliminar la información detallada de una de estas categorías, de modo que pueda utilizar la otra para la supervisión y las alertas. Aquí tiene un ejemplo:

{
  "version": "2.0",  
  "logging": {
    "logLevel": {
      "default": "Warning",
      "Function": "Error",
      "Host.Aggregator": "Error",
      "Host.Results": "Information", 
      "Function.Function1": "Information",
      "Function.Function1.User": "Error"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 1,
        "excludedTypes": "Exception"
      }
    }
  }
} 

Con esta configuración:

  • El valor predeterminado para todas las funciones y categorías de telemetría se establece en Warning (incluidas las categorías Microsoft y Worker). Por lo tanto, de manera predeterminada, se recopilan todos los errores y advertencias generados por el entorno de ejecución y el registro personalizado.

  • El nivel de registro de categorías Function se establece en Error, por lo que para todas las funciones, de forma predeterminada, solo se recopilan excepciones y registros de errores. Se omiten las dependencias, las métricas generadas por el usuario y los eventos generados por el usuario.

  • En el caso de la categoría Host.Aggregator, ya que se establece en el nivel de registro de Error, la información agregada de las invocaciones de función no se recopila en la tabla customMetrics Application Insights y no se muestra información sobre los recuentos de ejecuciones (total, correcto y erróneo) en el panel de información general de funciones.

  • Para la categoría Host.Results, toda la información de ejecución del host se recopila en la tabla requests de Application Insights. Todos los resultados de las invocaciones se muestran en el panel monitor de funciones y en los paneles de Application Insights.

  • Para la función denominada Function1, establecemos el nivel de registro en Information. Por lo tanto, para esta función específica, se recopilan todos los datos de telemetría (dependencias, métricas personalizadas y eventos personalizados). Para la misma función, establecemos la categoría Function1.User (seguimientos generados por el usuario) en Error, por lo que solo se recopila el registro de errores personalizado.

    Nota:

    La configuración por función no se admite en la versión 1.x del entorno de ejecución de Functions.

  • El muestreo está configurado para enviar un elemento de telemetría por segundo por tipo, exceptuando las excepciones. Este muestreo se produce para cada host de servidor que ejecuta nuestra aplicación de funciones. Por lo tanto, si tenemos cuatro instancias, esta configuración emite cuatro elementos de telemetría por segundo por tipo y todas las excepciones que pueden producirse.

    Nota:

    Los recuentos de métrica, como la tasa de solicitudes y la tasa de excepciones, se ajustan para compensar la frecuencia de muestreo, de modo que exhiban valores aproximadamente correctos en el Explorador de métricas.

Sugerencia

Experimente con diferentes configuraciones para asegurarse de que cubran sus requisitos de registro, supervisión y alertas. Asegúrese también de tener diagnósticos detallados en caso de errores inesperados o un funcionamiento incorrecto.

Invalidación de la configuración de supervisión en tiempo de ejecución

Por último, puede haber situaciones en las que necesite cambiar rápidamente el comportamiento del registro de una determinada categoría en producción y no quiera realizar una implementación completa solo por un cambio en el archivo host.json. En tales casos, puede invalidar los valores del archivo host.json.

Para configurar estos valores en el nivel de configuración de la aplicación (y evitar una nueva implementación solo por los cambios en el archivo host.json), debe invalidar valores específicos del archivo host.json mediante la creación de un valor equivalente como una configuración de la aplicación. Cuando el entorno de ejecución encuentra una configuración de aplicación en el formato AzureFunctionsJobHost__path__to__setting, invalida la configuración de host.json equivalente que se encuentra en path.to.setting en el archivo JSON. Cuando se expresa como una configuración de aplicación, un carácter de subrayado doble (__) reemplaza el punto (.) usado para indicar la jerarquía JSON. Por ejemplo, puede usar la siguiente configuración de la aplicación para configurar los niveles de registro de funciones individuales en host.json.

Ruta de acceso de Host.json Configuración de aplicación
logging.logLevel.default AzureFunctionsJobHost__logging__logLevel__default
logging.logLevel.Host.Aggregator AzureFunctionsJobHost__logging__logLevel__Host.Aggregator
logging.logLevel.Function AzureFunctionsJobHost__logging__logLevel__Function
logging.logLevel.Function.Function1 AzureFunctionsJobHost__logging__logLevel__Function.Function1
logging.logLevel.Function.Function1.User AzureFunctionsJobHost__logging__logLevel__Function.Function1.User

Puede invalidar la configuración directamente en el panel Azure Portal Function App Configuration o mediante una CLI de Azure o un script de PowerShell.

az functionapp config appsettings set --name MyFunctionApp --resource-group MyResourceGroup --settings "AzureFunctionsJobHost__logging__logLevel__Host.Aggregator=Information"

Nota

Al invalidar host.json mediante el cambio de la configuración de la aplicación, se reiniciará la aplicación de funciones. La configuración de la aplicación que contiene un período no se admite cuando se ejecuta en Linux en un plan Elastic Premium o en un plan dedicado (App Service). En estos entornos de hospedaje, debe seguir usando el archivo host.json .

Supervisión de las aplicaciones de funciones mediante la comprobación de estado

Puede usar la característica Comprobación de estado para supervisar las aplicaciones de funciones en los planes Premium (Elastic Premium) y Dedicado (App Service). La comprobación de estado no es una opción para el plan de consumo. Para más información sobre cómo configurarla, consulte Supervisión de instancias de App Service mediante la comprobación de estado. La aplicación de funciones debe tener una función de desencadenador HTTP que responda con un código de estado HTTP de 200 en el mismo punto de conexión que configurado en el parámetro Path de la comprobación de estado. También puede hacer que esa función realice comprobaciones adicionales para asegurarse de que los servicios dependientes sean accesibles y funcionen.

Para más información sobre la supervisión, consulte: