Résoudre les problèmes liés à Azure Application Insights dans un projet web Java
Cet article fournit des solutions à des problèmes courants au format Q&A pour Application Insights Java 2.x.
Attention
Ce document s’applique à Application Insights Java 2.x, qui n’est plus recommandé.
Vous trouverez la documentation de la dernière version dans Application Insights Java 3.x.
Vous avez des questions concernant Azure Application Insights dans Java ou vous rencontrez des problèmes ? Voici quelques conseils.
Erreurs de build
Dans Eclipse ou Intellij Idea, quand j’ajoute le Kit de développement logiciel (SDK) Application Insights via Maven ou Gradle, j’obtiens des erreurs de validation de génération ou de somme de contrôle
Si l’élément de version> de dépendance< utilise un modèle qui contient des caractères génériques (par exemple, <version>[2.0,)</version>
dans Maven ou version:'2.+'
Gradle), essayez de spécifier une version spécifique à la place, comme 2.6.4
.
Pas de données
J’ai ajouté Application Insights avec succès et exécuté mon application, mais je n’ai jamais vu de données dans le portail
Attendez environ une minute, puis sélectionnez Actualiser. Les graphiques s’actualisent à intervalles réguliers, mais vous pouvez également les actualiser manuellement. L’intervalle d’actualisation dépend de l’intervalle de temps sur lequel porte le graphique.
Vérifiez que vous avez défini une clé d’instrumentation dans le fichier ApplicationInsights.xml (dans le dossier ressources de votre projet) ou configuré une clé d’instrumentation en tant que variable d’environnement.
Vérifiez qu’il n’existe aucun
<DisableTelemetry>true</DisableTelemetry>
nœud dans le fichier XML.Si nécessaire, ouvrez les ports TCP 80 et 443 dans votre pare-feu pour le trafic sortant vers
dc.services.visualstudio.com
. Consultez la liste complète des exceptions de pare-feu.Dans le panneau de démarrage Microsoft Azure, examinez la carte d'état du service. S’il existe des indications d’alerte, attendez qu’elles soient retournées à OK, puis fermez et rouvrez votre panneau d’application Application Insights.
Activez la journalisation en ajoutant un <élément SDKLogger> sous le nœud racine du fichier ApplicationInsights.xml (dans le dossier ressources de votre projet). Vérifiez ensuite les entrées précédées
AI: INFO/WARN/ERROR
des journaux suspects.Assurez-vous que le fichier ApplicationInsights.xml correct a été correctement chargé par le Kit de développement logiciel (SDK) Java. Vérifiez que les messages de sortie de la console pour obtenir une instruction « Fichier de configuration ont été trouvés ».
Si le fichier de configuration est introuvable, vérifiez les messages de sortie pour voir où le fichier de configuration est recherché. Assurez-vous que le ApplicationInsights.xml se trouve dans l’un de ces emplacements de recherche. En règle générale, vous pouvez placer le fichier de configuration près du JAR du Kit de développement logiciel (SDK) Application Insights. Par exemple, dans Tomcat, le dossier serait WEB-INF/classes. Pendant le développement, vous pouvez placer ApplicationInsights.xml dans le dossier ressources de votre projet web.
Consultez la page des problèmes GitHub pour connaître les problèmes connus avec le Kit de développement logiciel (SDK).
Veillez à utiliser la même version des ajouts de base, de web, d’agent et de journalisation Application Insights pour éviter tout problème de conflit de version.
Note
Cet article a été récemment mis à jour pour utiliser le terme journaux Azure Monitor au lieu de Log Analytics. Les données de journal sont toujours stockées dans un espace de travail Log Analytics, et elles sont toujours collectées et analysées par le même service Log Analytics. Nous mettons à jour la terminologie pour mieux refléter le rôle des journaux dans Azure Monitor. Pour plus d'informations, consultez Modifications de la terminologie d'Azure Monitor.
J’ai utilisé pour voir des données, mais elle est arrêtée
Vous souhaitez savoir si vous avez atteint votre quota mensuel de points de données ? Ouvrez le quota des paramètres>et la tarification pour en savoir plus. Si c’est le cas, vous pouvez mettre à niveau votre plan ou payer pour plus de capacité. Pour plus d’informations, consultez le schéma de tarification.
Avez-vous récemment mis à niveau votre kit de développement logiciel ? Assurez-vous que seuls les fichiers jar du Kit de développement logiciel (SDK) uniques sont présents dans le répertoire du projet. Il ne doit pas y avoir deux versions différentes du Kit de développement logiciel (SDK) présentes.
Examinez-vous la ressource AI appropriée ? Veillez à faire correspondre l’iKey de votre application à la ressource où vous attendez des données de télémétrie. Il doit s’agir du même élément.
Je ne vois pas toutes les données que j’attends
Ouvrez la page Utilisation et estimation des coûts et vérifiez si l’échantillonnage est en cours d’opération. (Une transmission de 100 % signifie que l’échantillonnage n’est pas activé). Le service Application Insights peut être défini pour n’accepter qu’une fraction des données de télémétrie provenant de votre application. Ce paramètre vous aide à rester dans votre quota mensuel de télémétrie.
L’échantillonnage du SDK est-il activé ? Le cas échéant, les données sont échantillonnées à la fréquence spécifiée pour l’ensemble des types applicables.
Exécutez-vous une version antérieure du SDK Java ? À compter de la version 2.0.1, nous avons introduit un mécanisme de tolérance de panne pour gérer les défaillances réseau et back-end intermittentes, ainsi que la persistance des données sur les lecteurs locaux.
Vérifiez si une télémétrie excessive a provoqué la limitation. Si vous activez la journalisation INFO, vous verrez un message de journalisation « L’application est limitée ». Notre limite actuelle est d’environ 32 000 éléments de télémétrie par seconde.
L’agent Java ne peut pas capturer les données de dépendance
Avez-vous configuré l’agent Java ?
Vérifiez que le fichier jar de l’agent Java et le fichier AI-Agent.xml sont placés dans le même dossier.
Assurez-vous que la dépendance que vous essayez de collecter automatiquement est prise en charge pour la collecte automatique. Actuellement, nous prenons uniquement en charge MySQL, Microsoft SQL Server, Oracle DB et Azure Cache pour Redis collection de dépendances.
Absence de données d'utilisation
Je vois des données sur les demandes et les temps de réponse, mais aucune vue de page, navigateur ou données utilisateur
Assurez-vous d'avoir configuré correctement votre application de façon à envoyer la télémétrie depuis le serveur. L’étape suivante consiste à configurer vos pages web pour l’envoi de la télémétrie depuis le navigateur web.
Si votre client est une application d’un téléphone ou d’un autre appareil, vous pouvez également envoyer la télémétrie à partir de ce dernier.
Utilisez la même clé d'instrumentation pour configurer la télémétrie de votre client et de votre serveur. Les données apparaissent dans la même ressource Application Insights et vous pourrez mettre en corrélation les événements du client et du serveur.
Désactiver la télémétrie
Comment puis-je désactiver la collecte télémétrique ?
Suivez l’une des solutions suivantes :
Désactivez la collection dans le code :
TelemetryConfiguration config = TelemetryConfiguration.getActive(); config.setTrackingIsDisabled(true);
Mettez à jour ApplicationInsights.xml (dans le dossier ressources de votre projet). Ajoutez l’élément XML suivant sous le nœud racine :
<DisableTelemetry>true</DisableTelemetry>
Si vous utilisez la méthode XML, vous devez redémarrer l’application lorsque vous modifiez la valeur.
Modifier la cible
Comment puis-je changer la ressource Azure à laquelle mon projet envoie des données ?
Si vous avez ajouté Application Insights à votre projet à l’aide du Kit de ressources Azure pour Eclipse, cliquez avec le bouton droit sur votre projet web, sélectionnez Azure>Configurer Application Insights, puis modifiez la clé.
Si vous avez configuré la clé d’instrumentation en tant que variable d’environnement, veillez à mettre à jour la valeur de la variable d’environnement avec la nouvelle clé iKey.
Sinon, mettez à jour la clé dans ApplicationInsights.xml dans le dossier ressources de votre projet.
Données de débogage du Kit de développement logiciel (SDK)
Comment puis-je savoir ce que fait le Kit de développement logiciel (SDK) ?
Pour obtenir plus d’informations sur ce qui se passe dans l’API, ajoutez l’élément <SDKLogger> dans le nœud racine du fichier de configuration ApplicationInsights.xml.
ApplicationInsights.xml
Dans l’élément <SDKLogger> , vous pouvez également indiquer à l’enregistreur d’événements de générer un fichier :
<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
<Level>TRACE</Level>
<UniquePrefix>AI</UniquePrefix>
<BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>
Spring Boot Starter
Pour activer la journalisation du Kit de développement logiciel (SDK) avec les applications Spring Boot à l’aide du démarrage Application Insights Spring Boot, ajoutez les lignes suivantes au fichier application.properties :
azure.application-insights.logger.type=file
azure.application-insights.logger.base-folder-path=C:/agent/AISDK
azure.application-insights.logger.level=trace
Vous pouvez également imprimer dans le flux d’erreur standard :
azure.application-insights.logger.type=console
azure.application-insights.logger.level=trace
Agent Java
Pour activer la journalisation de l’agent JVM, mettez à jour le fichier AI-Agent.xml :
<AgentLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
<Level>TRACE</Level>
<UniquePrefix>AI</UniquePrefix>
<BaseFolderPath>C:/agent/AIAGENT</BaseFolderPath>
</AgentLogger>
Propriétés de ligne de commande Java
Depuis la version 2.4.0
Pour activer la journalisation à l’aide d’options de ligne de commande au lieu de modifier des fichiers de configuration, exécutez la commande suivante :
java -Dapplicationinsights.logger.file.level=trace \
-Dapplicationinsights.logger.file.uniquePrefix=AI \
-Dapplicationinsights.logger.baseFolderPath="C:/my/log/dir" \
-jar MyApp.jar
Ou exécutez la commande suivante pour imprimer dans le flux d’erreur standard :
java -Dapplicationinsights.logger.console.level=trace -jar MyApp.jar
L'écran d'accueil Azure
J’ai ouvert le portail Azure. Est-ce que la carte fournit des informations concernant mon application ?
Non, elle montre l'intégrité des serveurs Azure dans le monde entier.
Comment faire trouver des données sur mon application à partir du tableau de démarrage Azure (écran d’accueil) ?
En supposant que vous configurez votre application pour Application Insights, sélectionnez Parcourir>Application Insights, puis sélectionnez la ressource d’application que vous avez créée pour votre application. Pour être plus rapide à l’avenir, épinglez votre application au tableau de démarrage.
Serveurs intranet
Puis-je surveiller un serveur sur mon intranet ?
Oui, à condition que votre serveur puisse envoyer la télémétrie vers le portail Application Insights via l'Internet public.
Vous devrez peut-être ouvrir certains ports sortants dans le pare-feu de votre serveur pour autoriser le Kit de développement logiciel (SDK) d’envoyer des données au portail.
Conservation des données
Combien de temps les données sont-elles conservées dans le portail ? Sont-elles sécurisées ?
Consultez Rétention des données et confidentialité.
Enregistrement du débogage
Application Insights utilise org.apache.http
. Cet espace de noms est déplacé dans les fichiers jar principaux Application Insights sous l’espace de noms com.microsoft.applicationinsights.core.dependencies.http
. Cette réaffectation permet à Application Insights de gérer les scénarios où des versions différentes de la même org.apache.http
version existent dans une base de code.
Note
Si vous activez DEBUG
la journalisation au niveau de tous les espaces de noms de l’application, elle sera respectée par tous les modules en cours d’exécution (y compris org.apache.http
renommés en tant que com.microsoft.applicationinsights.core.dependencies.http
). Application Insights ne pourra pas appliquer de filtrage pour ces appels, car l’appel de journal est effectué par la bibliothèque Apache. DEBUG
La journalisation au niveau produit une quantité considérable de données de journal, et elle n’est pas recommandée pour les instances de production dynamique.
Prochaines étapes
J’ai configuré Application Insights pour mon application serveur Java. Que puis-je faire d’autre ?
Obtenir de l’aide
Exclusion de responsabilité de tiers
Les produits tiers mentionnés dans le présent article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.