Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Functions ofrece integración integrada con Application Insights para supervisar las funciones. En el caso de lenguajes distintos de .NET y .NET Core, se requieren otras extensiones o trabajos específicos del lenguaje para aprovechar todas las ventajas del seguimiento distribuido.
Application Insights recopila datos de registros, de rendimiento y de errores, y detecta automáticamente las anomalías en el rendimiento. Application Insights incluye herramientas de análisis eficaces que ayudan a diagnosticar problemas y comprender cómo se usan las funciones. Cuando tenga la visibilidad de los datos de su aplicación, puede mejorar continuamente el rendimiento y la facilidad de uso. Incluso puede usar Application Insights durante el desarrollo local de proyectos de aplicación de función.
La instrumentación de Application Insights necesaria está integrada en Azure Functions. Todo lo que necesita es una cadena de conexión válida para conectar la aplicación de funciones a un recurso de Application Insights. La cadena de conexión se debe agregar a la configuración de la aplicación cuando se cree el recurso de la aplicación de funciones en Azure. Si la aplicación de funciones aún no tiene esta cadena, puede establecerla de forma manual. Para más información, consulte Supervisión de ejecuciones en Azure Functions y cadenas de conexión.
Nota
El 31 de marzo de 2025 finalizará la compatibilidad con la ingesta de claves de instrumentación. La ingesta de claves de instrumentación seguirá funcionando, pero la característica ya no recibirá actualizaciones ni soporte técnico. Transición a cadenas de conexión para aprovechar las nuevas funcionalidades.
Para obtener una lista de los escenarios de autoinstrución admitidos, consulte Entornos, lenguajes y proveedores de recursos admitidos.
Seguimiento distribuido para aplicaciones Java
Nota
Esta característica solía tener una implicación de inicio en frío de 8 a 9 segundos, que se ha reducido a menos de 1 segundo. Si era un pionero de esta característica (por ejemplo, antes de febrero de 2023), revise la sección "Solución de problemas" para actualizar a la versión actual y beneficiarse del nuevo inicio más rápido.
Para ver más datos de las aplicaciones de Azure Functions basadas en Java de los que se recopilan de forma predeterminada, habilite el agente Java 3.x de Application Insights. Este agente permite a Application Insights recopilar y correlacionar automáticamente dependencias, registros y métricas de bibliotecas populares y los kit de desarrollo de software (SDK) de Azure. Esta telemetría se suma a la telemetría de solicitud ya capturada por Functions.
Al usar el mapa de aplicaciones y tener una vista más completa de las transacciones de un extremo a otro, puede diagnosticar mejor los problemas. Tiene una vista topológica de cómo interactúan los sistemas junto con los datos sobre rendimiento medio y tasas de errores. También tiene más datos para los diagnósticos de un extremo a otro. Puede usar el mapa de aplicaciones para encontrar fácilmente la causa principal de problemas de confiabilidad y cuellos de botella de rendimiento por solicitud.
Para casos de uso más avanzados, modifique la telemetría; para ello, agregue intervalos, actualice el estado del intervalo y agregue atributos del intervalo. También puede enviar telemetría personalizada mediante las API estándar.
Habilitación del seguimiento distribuido para las aplicaciones de funciones de Java
En el panel Información general de la aplicación de funciones, vaya a Application Insights. En Nivel de colección, seleccione Recomendado.
Configuración
Para configurar esta característica para una aplicación de funciones de Azure no en un plan de consumo, agregue variables de entorno en Configuración de la aplicación. Para revisar las configuraciones disponibles, consulte Opciones de configuración: Azure Monitor Application Insights para Java.
Para Azure Functions en un plan de consumo, las opciones de configuración disponibles se limitan a APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL y APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL. Para realizar configuraciones adicionales en una función de plan de consumo, implemente su propio agente, consulte Custom Distributed Tracing Agent for Java Functions.
La implementación de su propio agente dará como resultado una implicación de arranque en frío más larga para el plan de consumo Functions.
Solución de problemas
Las funciones de Java pueden tener tiempos de inicio lentos si ha adoptado esta característica antes de febrero de 2023. En el panel Información general de la aplicación de funciones, vaya a Configuración en el menú de navegación del lado izquierdo. A continuación, seleccione Configuración de la aplicación y siga estos pasos para corregir el problema.
Windows
Compruebe si existen las siguientes opciones de configuración y quítelas:
XDT_MicrosoftApplicationInsights_Java -> 1 ApplicationInsightsAgent_EXTENSION_VERSION -> ~2
Habilite la versión más reciente agregando este valor:
APPLICATIONINSIGHTS_ENABLE_AGENT: true
Dedicado/Premium de Linux
Compruebe si existen las siguientes opciones de configuración y quítelas:
ApplicationInsightsAgent_EXTENSION_VERSION -> ~3
Habilite la versión más reciente agregando este valor:
APPLICATIONINSIGHTS_ENABLE_AGENT: true
Prueba de la conectividad entre el host de la aplicación y el servicio de ingesta
Los SDK y agentes de Application Insights envían telemetría para ingerirse como llamadas REST a nuestros puntos de conexión de ingesta. Puede probar la conectividad desde el servidor web o la máquina host de la aplicación a los puntos de conexión del servicio de ingesta mediante clientes REST sin procesar con comandos de PowerShell o curl. Consulte Solución de problemas de telemetría de aplicaciones que faltan en Azure Monitor Application Insights.
Registros duplicados
Si usa log4j
o logback
para el registro de la consola, el seguimiento distribuido para Java Functions creará registros duplicados. Estos registros duplicados se envían a Application Insights. Para evitar este comportamiento, use las siguientes soluciones alternativas.
Log4j
Agregue el siguiente filtro al log4j.xml:
<Filters>
<ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Filters>
<ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Logback
Agregue el siguiente filtro al logback.xml:
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>OFF</level>
</filter>
Ejemplo:
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are by default assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>OFF</level>
</filter>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Seguimiento distribuido para aplicaciones de funciones de Node.js
Para ver más datos de la aplicación de Node.js que se ejecuta en Azure Functions que se recopila de forma predeterminada con la implementación automática, instrumente la aplicación manualmente mediante la OpenTelemetry Distro de Azure.
Seguimiento distribuido para aplicaciones de funciones de Python
Para recopilar datos de telemetría de servicios como Requests, urllib3, httpx
, PsycoPG2, etc., use OpenTelemetry Distro de Azure Monitor. Las solicitudes entrantes supervisadas que llegan a la aplicación de Python hospedada en Azure Functions no se correlacionan automáticamente con los datos de telemetría de los que se realiza un seguimiento en dicha aplicación. Puede lograr manualmente la correlación del seguimiento al extraer el contexto de seguimiento (TraceContext) directamente como a continuación:
import azure.functions as func
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.propagate import extract
# Configure Azure monitor collection telemetry pipeline
configure_azure_monitor()
def main(req: func.HttpRequest, context) -> func.HttpResponse:
...
# Store current TraceContext in dictionary format
carrier = {
"traceparent": context.trace_context.Traceparent,
"tracestate": context.trace_context.Tracestate,
}
tracer = trace.get_tracer(__name__)
# Start a span using the current context
with tracer.start_as_current_span(
"http_trigger_span",
context=extract(carrier),
):
...
Pasos siguientes
- Lea más instrucciones e información sobre la supervisión de Azure Functions.
- Obtenga información general sobre el seguimiento distribuido.
- Vea lo que el mapa de aplicaciones puede hacer para su negocio.
- Obtenga información sobre las solicitudes y dependencias de las aplicaciones de Java.
- Obtenga más información sobre Azure Monitor y Application Insights.