Solución de problemas de Aplicación de Azure Insights en un proyecto web de Java

En este artículo se proporcionan soluciones para solucionar problemas comunes en un formato Q&A para Application Insights Java 2.x.

Precaución

Este documento se aplica a Application Insights Java 2.x, que ya no se recomienda.

Puede encontrar documentación para la versión más reciente en Application Insights Java 3.x.

¿Preguntas o problemas con Aplicación de Azure Insights en Java? Estos son algunos consejos.

Errores de compilación

En Eclipse o Intellij Idea, cuando agrego el SDK de Application Insights a través de Maven o Gradle, obtengo errores de validación de compilación o suma de comprobación.

Si el elemento dependency <version> usa un patrón que contiene caracteres comodín (por ejemplo, <version>[2.0,)</version> en Maven o version:'2.+' en Gradle), intente especificar una versión específica en su lugar, como 2.6.4.

Sin datos

He agregado Application Insights correctamente y he ejecutado mi aplicación, pero nunca he visto datos en el portal

  • Espere aproximadamente un minuto y, a continuación, seleccione Actualizar. Los gráficos se actualizan periódicamente, pero también se pueden actualizar manualmente. El intervalo de actualización depende del intervalo de tiempo del gráfico.

  • Asegúrese de que ha definido una clave de instrumentación en el archivo ApplicationInsights.xml (en la carpeta resources del proyecto) o ha configurado una como variable de entorno.

  • Compruebe que no hay ningún <DisableTelemetry>true</DisableTelemetry> nodo en el archivo XML.

  • Si es necesario, abra los puertos TCP 80 y 443 en el firewall para el tráfico saliente a dc.services.visualstudio.com. Consulte la lista completa de excepciones de firewall.

  • En el panel de inicio de Microsoft Azure, examine el mapa de estado del servicio. Si hay algunas indicaciones de alerta, espere hasta que vuelvan a Aceptar y, a continuación, cierre y vuelva a abrir la hoja de aplicación de Application Insights.

  • Active el registro agregando un <elemento SDKLogger> en el nodo raíz del archivo ApplicationInsights.xml (en la carpeta resources del proyecto). A continuación, compruebe si hay entradas precedidas de AI: INFO/WARN/ERROR registros sospechosos.

  • Asegúrese de que el SDK de Java ha cargado correctamente el archivo deApplicationInsights.xml correcto. Compruebe los mensajes de salida de la consola para obtener una instrucción "El archivo de configuración se ha encontrado correctamente".

  • Si no se encuentra el archivo de configuración, compruebe los mensajes de salida para ver dónde se busca el archivo de configuración. Asegúrese de que el ApplicationInsights.xml se encuentra en una de esas ubicaciones de búsqueda. Como regla general, puede colocar el archivo de configuración cerca de los ARCHIVOS JAR del SDK de Application Insights. Por ejemplo, en Tomcat, la carpeta sería WEB-INF/classes. Durante el desarrollo, puede colocar ApplicationInsights.xml en la carpeta resources del proyecto web.

  • Consulte la página problemas de GitHub para ver si hay problemas conocidos con el SDK.

  • Asegúrese de usar la misma versión de los anexadores principales, web, agente y registro de Application Insights para evitar problemas de conflictos de versiones.

Nota:

Este artículo se actualizó recientemente para usar el término registros de Azure Monitor en lugar de Log Analytics. Los datos de registro todavía se almacenan en un área de trabajo de Log Analytics y el mismo servicio Log Analytics los recopila y analiza. Estamos actualizando la terminología para reflejar mejor el rol de los registros en Azure Monitor. Consulte Cambios en la terminología de Azure Monitor para obtener más información.

Solía ver los datos, pero se detuvieron.

  • ¿Ha alcanzado la cuota mensual de puntos de datos? Abra Cuota de configuración>y Precios para averiguarlo. Si es así, puede actualizar el plan o pagar por más capacidad. Para obtener más información, consulte el esquema de precios.

  • ¿Ha actualizado recientemente el SDK? Asegúrese de que solo los archivos JAR del SDK único están presentes dentro del directorio del proyecto. No debe haber dos versiones diferentes del SDK presentes.

  • ¿Está viendo el recurso de inteligencia artificial correcto? Asegúrese de hacer coincidir la iKey de la aplicación con el recurso donde espera la telemetría. Deben ser iguales.

No veo todos los datos que espero.

  • Abra la página Uso y costo estimado y compruebe si el muestreo está en funcionamiento. (La transmisión al 100 % significa que el muestreo no está en funcionamiento). El servicio Application Insights se puede establecer para aceptar solo una fracción de la telemetría que llega desde la aplicación. Esa configuración le ayuda a mantenerse dentro de la cuota mensual de telemetría.

  • ¿Tiene el muestreo del SDK activado? Si es así, los datos se muestrearían a la velocidad especificada para todos los tipos aplicables.

  • ¿Está ejecutando una versión anterior del SDK de Java? A partir de la versión 2.0.1, hemos introducido un mecanismo de tolerancia a errores para controlar los errores intermitentes de red y back-end, así como la persistencia de datos en las unidades locales.

  • Compruebe si la telemetría excesiva ha causado una limitación. Si activa el registro INFO, verá un mensaje de registro "Aplicación limitada". Nuestro límite actual es de aproximadamente 32 000 elementos de telemetría por segundo.

El agente de Java no puede capturar datos de dependencia

  • ¿Ha configurado el agente de Java?

  • Asegúrese de que el archivo jar del agente de Java y el archivo AI-Agent.xml se colocan en la misma carpeta.

  • Asegúrese de que la dependencia que intenta recopilar automáticamente es compatible con la recopilación automática. Actualmente solo se admite MySQL, Microsoft SQL Server, Oracle DB y Azure Cache for Redis colección de dependencias.

Sin datos de uso

Veo datos sobre solicitudes y tiempos de respuesta, pero no hay vista de página, explorador ni datos de usuario

Ha configurado correctamente la aplicación para enviar telemetría desde el servidor. Ahora el siguiente paso es configurar las páginas web para enviar telemetría desde el explorador web.

Como alternativa, si el cliente es una aplicación en un teléfono u otro dispositivo, puede enviar telemetría desde allí.

Use la misma clave de instrumentación para configurar la telemetría de cliente y servidor. Los datos aparecerán en el mismo recurso de Application Insights y podrá correlacionar eventos desde el cliente y el servidor.

Deshabilitación de la telemetría

¿Cómo puedo deshabilitar la recopilación de telemetría?

Siga una de estas soluciones:

  • Deshabilite la colección en el código:

    TelemetryConfiguration config = TelemetryConfiguration.getActive();
    config.setTrackingIsDisabled(true);
    
  • Actualice ApplicationInsights.xml (en la carpeta resources del proyecto). Agregue el siguiente elemento XML en el nodo raíz:

    <DisableTelemetry>true</DisableTelemetry>
    

    Si usa el método XML, tendrá que reiniciar la aplicación al cambiar el valor.

Cambio del destino

¿Cómo puedo cambiar el recurso de Azure al que mi proyecto envía datos?

  • Obtenga la clave de instrumentación del nuevo recurso.

  • Si ha agregado Application Insights al proyecto mediante Azure Toolkit for Eclipse, haga clic con el botón derecho en el proyecto web, seleccione Azure>Configure Application Insights y, a continuación, cambie la clave.

  • Si ha configurado la clave de instrumentación como una variable de entorno, asegúrese de actualizar el valor de la variable de entorno con la nueva iKey.

  • De lo contrario, actualice la clave en ApplicationInsights.xml en la carpeta resources del proyecto.

Depuración de datos desde el SDK

¿Cómo puedo averiguar lo que hace el SDK?

Para obtener más información sobre lo que sucede en la API, agregue el <elemento SDKLogger> en el nodo raíz del archivo de configuración deApplicationInsights.xml .

ApplicationInsights.xml

En el <elemento SDKLogger> , también puede indicar al registrador que genere la salida a un archivo:

<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>

Inicio de Spring Boot

Para habilitar el registro del SDK con aplicaciones de Spring Boot mediante el inicio de Spring Boot de Application Insights, agregue las líneas siguientes al archivo application.properties :

azure.application-insights.logger.type=file
azure.application-insights.logger.base-folder-path=C:/agent/AISDK
azure.application-insights.logger.level=trace

Como alternativa, puede imprimir en la secuencia de errores estándar:

azure.application-insights.logger.type=console
azure.application-insights.logger.level=trace

Agente de Java

Para habilitar el registro del agente de JVM, actualice el archivo AI-Agent.xml:

<AgentLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AIAGENT</BaseFolderPath>
</AgentLogger>

Propiedades de la línea de comandos de Java

Desde la versión 2.4.0

Para habilitar el registro mediante opciones de línea de comandos en lugar de cambiar los archivos de configuración, ejecute el siguiente comando:

java -Dapplicationinsights.logger.file.level=trace \
    -Dapplicationinsights.logger.file.uniquePrefix=AI \
    -Dapplicationinsights.logger.baseFolderPath="C:/my/log/dir" \
    -jar MyApp.jar

O bien, ejecute el siguiente comando para imprimir en la secuencia de errores estándar:

java -Dapplicationinsights.logger.console.level=trace -jar MyApp.jar

Pantalla de inicio de Azure

Estoy mirando el Azure Portal. ¿El mapa me dice algo sobre mi aplicación?

No, muestra el estado de los servidores de Azure de todo el mundo.

Cómo buscar datos sobre mi aplicación desde el panel de inicio de Azure (pantalla principal)?

Suponiendo que configuró la aplicación para Application Insights, seleccione Examinar>Application Insights y, a continuación, seleccione el recurso de aplicación que creó para la aplicación. Para llegar más rápido en el futuro, ancla la aplicación al panel de inicio.

Servidores de intranet

¿Puedo supervisar un servidor en mi intranet?

Sí, siempre que el servidor pueda enviar telemetría al portal de Application Insights a través de la red pública de Internet.

Es posible que tenga que abrir algunos puertos salientes en el firewall del servidor para permitir que el SDK envíe datos al portal.

Retención de datos

¿Cuánto tiempo se conservan los datos en el portal? ¿Es seguro?

Consulte Retención y privacidad de datos.

Registro de depuración

Application Insights usa org.apache.http. Este espacio de nombres se reubica dentro de los archivos jar principales de Application Insights en el espacio de nombres com.microsoft.applicationinsights.core.dependencies.http. Esta reubicación permite a Application Insights controlar escenarios en los que existen diferentes versiones de la misma org.apache.http en una base de código.

Nota:

Si habilita DEBUGel registro de nivel de todos los espacios de nombres de la aplicación, todos los módulos en ejecución lo respetarán (incluido org.apache.http el nombre cambiado por com.microsoft.applicationinsights.core.dependencies.http). Application Insights no podrá aplicar el filtrado para estas llamadas porque la biblioteca de Apache realiza la llamada de registro. DEBUGEl registro de nivel genera una cantidad considerable de datos de registro y no se recomienda para instancias de producción en directo.

Pasos siguientes

Configuro Application Insights para mi aplicación de servidor java. ¿Qué más puedo hacer?

Obtener ayuda

Aviso de declinación de responsabilidades sobre la información de terceros

Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.

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.