Résoudre les problèmes Azure Application Insights dans un projet web Java
Cet article fournit des solutions de résolution des problèmes courants au format Q&R pour Application Insights Java 2.x.
Attention
Ce document s’applique à Application Insights Java 2.x, qui n’est plus recommandé.
La documentation de la dernière version est disponible dans Application Insights Java 3.x.
Questions ou problèmes liés à Azure Application Insights dans Java ? Voici quelques conseils.
Erreurs de build
Dans Eclipse ou Intellij Idea, quand j’ajoute le SDK Application Insights via Maven ou Gradle, j’obtiens des erreurs de validation de build 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
.
Aucune donnée
J’ai correctement ajouté Application Insights 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 régulièrement, mais vous pouvez également les actualiser manuellement. L’intervalle d’actualisation dépend de l’intervalle de temps du 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 que vous en avez configuré une en tant que variable d’environnement.
Vérifiez qu’il n’y a 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 tableau de démarrage de Microsoft Azure, examinez le service status carte. S’il existe des indications d’alerte, attendez qu’elles soient revenues à OK, puis fermez et rouvrez votre panneau application Application Insights.
Activez la journalisation en ajoutant un <élément SDKLogger> sous le nœud racine dans le fichier ApplicationInsights.xml (dans le dossier resources de votre projet). Ensuite, case activée pour les entrées précédées
AI: INFO/WARN/ERROR
de pour tous les journaux suspects.Assurez-vous que le fichier deApplicationInsights.xml correct a été correctement chargé par le Kit de développement logiciel (SDK) Java. Vérifiez dans les messages de sortie de la console une instruction « Le fichier de configuration a été trouvé avec succès ».
Si le fichier de configuration est introuvable, case activée 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 à proximité des fichiers 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 liés au Kit de développement logiciel (SDK).
Veillez à utiliser la même version des appenders principaux, web, d’agent et de journalisation Application Insights pour éviter tout problème de conflit de version.
Remarque
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 Azure Monitor .
J’avais l’habitude de voir les données, mais il est arrêté
Avez-vous atteint votre quota mensuel de points de données ? Pour le savoir, ouvrez Paramètres>Quota et tarification . 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 SDK ? 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).
Recherchez-vous la ressource IA appropriée ? Veillez à faire correspondre l’iKey de votre application à la ressource où vous attendez des données de télémétrie. Ils devraient être les mêmes.
Je ne vois pas toutes les données que j’attends
Ouvrez la page Utilisation et estimation du coût et case activée pour voir si l’échantillonnage est en cours d’exécution. (La transmission à 100 % signifie que l’échantillonnage n’est pas en cours d’exécution.) Le service Application Insights peut être défini pour accepter uniquement une fraction des données de télémétrie qui arrivent de votre application. Ce paramètre vous permet de rester dans votre quota mensuel de télémétrie.
L’échantillonnage du KIT de développement logiciel (SDK) est-il activé ? Si c’est le cas, les données sont échantillonnées au taux spécifié pour tous les types applicables.
Exécutez-vous une version antérieure du Kit de développement logiciel (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 des données de télémétrie excessives ont provoqué une limitation. Si vous activez la journalisation INFO, un message de journal « L’application est limitée » s’affiche. 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 ?
Assurez-vous 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.
Aucune donnée d’utilisation
Je vois des données sur les demandes et les temps de réponse, mais pas d’affichage de page, de navigateur ou de données utilisateur
Vous avez correctement configuré votre application pour envoyer des données de télémétrie à partir du serveur. L’étape suivante consiste à configurer vos pages web pour envoyer des données de télémétrie à partir du navigateur web.
Si votre client est une application sur un téléphone ou un autre appareil, vous pouvez également envoyer des données de télémétrie à partir de là.
Utilisez la même clé d’instrumentation pour configurer les données de télémétrie client et serveur. Les données apparaîtront dans la même ressource Application Insights, et vous serez en mesure de 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 de données de télémétrie ?
Suivez l’une des solutions suivantes :
Désactivez la collecte 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 modifier la ressource Azure à laquelle mon projet envoie des données ?
Si vous avez ajouté Application Insights à votre projet à l’aide d’Azure Toolkit 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 iKey.
Sinon, mettez à jour la clé dans ApplicationInsights.xml dans le dossier ressources de votre projet.
Déboguer des données à partir du KIT de développement logiciel (SDK)
Comment puis-je savoir ce que fait le 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 configurationApplicationInsights.xml .
ApplicationInsights.xml
Dans l’élément <SDKLogger> , vous pouvez également indiquer à l’enregistreur d’événements de générer une sortie vers un fichier :
<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
<Level>TRACE</Level>
<UniquePrefix>AI</UniquePrefix>
<BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>
Démarrage Spring Boot
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’erreurs 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 des options de ligne de commande au lieu de modifier les 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’erreurs standard :
java -Dapplicationinsights.logger.console.level=trace -jar MyApp.jar
Écran de démarrage Azure
Je regarde le Portail Azure. La carte m’indique-t-elle quelque chose sur mon application ?
Non, cela 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 avez configuré 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 y arriver plus rapidement à 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 des données de télémétrie au portail Application Insights via l’Internet public.
Vous devrez peut-être ouvrir certains ports sortants dans le pare-feu de votre serveur pour permettre au SDK d’envoyer des données au portail.
Rétention de données
Combien de temps les données sont-elles conservées dans le portail ? Est-il sécurisé ?
Consultez Conservation et confidentialité des données.
Journalisation 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
. Ce déplacement permet à Application Insights de gérer des scénarios où différentes versions du même org.apache.http
élément existent dans une même base de code.
Remarque
Si vous activez DEBUG
la journalisation de niveau pour 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 com.microsoft.applicationinsights.core.dependencies.http
en ). 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 de niveau produit une quantité considérable de données de journal et n’est pas recommandée pour les instances de production en direct.
Étapes suivantes
J’ai configuré Application Insights pour mon application serveur Java. Que puis-je faire d’autre ?
Suivre l’utilisation et diagnostiquer les problèmes dans les applications de votre appareil
Écrire du code pour suivre l’utilisation de votre application
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.