Traitement des incidents liés à Ruby
Vous pouvez suivre les étapes suivantes pour identifier les problèmes susceptibles de survenir lors de la surveillance des applications Ruby à l'aide d' Instana. Le gem « Instana » est entièrement automatique, mais si un problème survient, ouvrez un ticket d'assistance.
Composants pris en charge
Avant de passer trop de temps à diagnostiquer un problème, assurez-vous d'abord que le composant et l'environnement concernés sont pris en charge. Vous trouverez la liste de tous les composants pris en charge dans la section « Versions prises en charge » du site Ruby.
Problèmes
Vous pourriez rencontrer les problèmes suivants :
Ruby le processus n'apparaît pas dans le tableau de bord
Pour résoudre ce problème, procédez comme suit
Vérifiez que votre environnement est pris en charge et que vous utilisez une version prise en charge d' Ruby.
Avant de passer trop de temps à diagnostiquer un problème, assurez-vous d'abord que le composant et l'environnement concernés sont pris en charge. Vous trouverez la liste de tous les composants pris en charge dans la section « Versions prises en charge » du site Ruby.
Consultez les étapes d'installation.
Vérifiez que les étapes d'installation ont été correctement suivies.
Vérifiez que le gem Instana Ruby est bien installé dans le bundle de l'application.
Vous pouvez vérifier cela en consultant
gem "instana"dans l'applicationGemfileet en recherchant les mentions deinstanadans leGemfile.lockfichier. Sinon, à partir du répertoire d'application Ruby, vous pouvez exécuter la commandebundle exec gem list. Cette commande répertorie tous les gemmes d' Ruby s contenus dans le bundle de l'application. Vérifiez que le gem Instana Ruby figure dans cette liste.Assurez-vous que le gem « Instana » est bien à jour.
La dernière version disponible se trouve sur RubyGems. Dans le fichier
Gemfile.lock, vous devez voir la dernière version du gem « Instana » Ruby indiquée à côté du nom, par exempleinstana (x.x.x).Vérifiez que la chaîne « Instana » apparaît dans le journal des événements de l'application.
Les journaux d'application ou de conteneur doivent toujours comporter un message de démarrage similaire à
Stan is on the scene. Starting Instana instrumentation version x.x.xActivez la sortie de débogage et vérifiez à nouveau les journaux de l'application ou du conteneur.
Définissez la variable d'environnement
INSTANA_DEBUG=truepour le processus Ruby et vérifiez à nouveau les journaux d'application ou de conteneur (voir l'étape 3). Vérifiez tout particulièrement s'il y a des messages d'erreur liés à Instana.Vérifiez les journaux de l'agent hôte d' Instana. pour voir s'il y a des messages liés à ce processus Ruby.
Essayez de lancer l'application « Ruby » en mode détaillé depuis une console.
Pour en savoir plus, consultez la section « Tests dans votre application ». Vérifiez tout particulièrement si des messages d'erreur liés à l' Instana apparaissent dans la sortie de l'application Ruby.
Créez un ticket d'assistance.
Si vous avez vérifié toutes les étapes précédentes et que le processus « Ruby » n'apparaît toujours pas dans le tableau de bord Instana, ouvrez un ticket d'assistance pour une analyse plus approfondie.
La demande d'assistance doit comporter :
- Détails de l'environnement : plateforme, version d' Ruby, et frameworks utilisés
- Résumé de toutes les validations précédentes.
Aucune trace pour l'application Ruby
Si votre application Instana Ruby figure dans votre tableau de bord Instana mais qu'aucune trace ne semble provenir de cette application, procédez comme suit :
Vérifiez si votre framework d'application est pris en charge.
Vérifiez que les composants utilisés dans votre application Ruby sont pris en charge.
Vérifiez si le
::Instana::Rackmiddleware est actif.Si vous utilisez un framework basé sur Rack, tel qu' Ruby -on-Rails, assurez-vous que le
::Instana::Rackmiddleware est correctement installé en tant que middleware. Dans des circonstances normales, ce middleware est installé automatiquement pour différentes infrastructures.Pour effectuer une validation dans « Ruby » sur Rails, vous pouvez exécuter la commande suivante :
bundle exec rake middlewareVous devriez voir une entrée pour
::Instana::Rack. Si vous devez l'installer, vous pouvez le faire manuellement.Vérifiez si vous avez chargé le gem «
require => falseInstana » trop tard dans le Gemfile.Le chargement tardif du gem Instana Ruby est déconseillé car les processus d'amorçage dans les différentes piles sont souvent stricts et doivent s'effectuer dans un certain ordre. L'un des symptômes courants d'un chargement tardif est l'absence du
::Instana::Rackmiddleware Rack, qui est chargé de lancer le traçage des requêtes entrantes.Si, pour une raison quelconque, vous préférez tout de même charger le gem Instana Ruby en différé, veillez à suivre les instructions du manuel (si nécessaire) concernant l'installation du middleware Rack Instana.
Activez la sortie de débogage et vérifiez à nouveau les journaux de l'application ou du conteneur.
Définissez la variable d'environnement
INSTANA_DEBUG=truepour le processus Ruby et vérifiez à nouveau les journaux d'application ou de conteneur (voir l'étape 3). Vérifiez tout particulièrement si des messages d'erreur liés à Instana s'affichent.Depuis une console d'application, générez une trace personnalisée.
Si tout le reste échoue, vous pouvez ouvrir une console d'application et exécuter la commande suivante pour générer une trace personnalisée :
require "instana" Instana.tracer.in_span(:my_custom_trace) do sleep 1 endSi l'opération aboutit et que la sortie de débogage est activée (comme décrit à l'étape précédente), la ligne suivante doit apparaître dans les journaux de l'application :
Instana:: Reporting 1 spansEnsuite, consultez votre tableau de bord Instana (sous « Query Analyze » pour un
call.span_typedeSDK). Vous devriez voir une trace nommée « my_custom_trace ».Vérifiez les journaux de l'agent hôte d' Instana. pour voir s'il y a des messages liés à ce processus Ruby.
Créez un ticket d'assistance.
Si vous avez vérifié toutes les étapes et que les traces d' Ruby s ne s'affichent toujours pas dans le tableau de bord d' Instana, veuillez ouvrir un ticket d'assistance afin que nous puissions approfondir l'analyse.
La demande d'assistance doit comporter :
- Détails de l'environnement : plateforme, version d' Ruby, et frameworks utilisés
- Résumé de toutes les validations précédentes.
Utilisation élevée de l'UC par l'agent dans des environnements conteneurisés
Dans les environnements conteneurisés utilisant des processus de type « Ruby », qui recourent à fork comme primitive de concurrence, l'agent peut être surchargé en essayant de suivre les processus nouvellement créés.
Assurez-vous que l'agent dispose de ressources suffisantes pour traiter les demandes
Si vous avez pris des mesures pour limiter la quantité de CPU et de mémoire requise par l'agent, assurez-vous que les limites définies fournissent suffisamment de ressources pour que l'agent puisse mener à bien toutes les tâches qui lui sont confiées.
Désactiver la recherche de processus
Vous pouvez également désactiver un « fast path » pour l'agent en ajoutant ce qui suit à la configuration de l'agent. Cette configuration permet de réduire la consommation de ressources de l'agent, mais peut entraîner la perte de traces si le processus se termine avant d'avoir pu envoyer des données à l'agent. Ce problème se pose généralement dans les applications qui utilisent
forkcomme primitive de concurrence avec des processus enfants de courte durée.com.instana.processlookup: enabled: false
Journalisation et variables d'environnement
Par défaut, le gem n'enregistre que les messages indiquant si des problèmes ont été rencontrés. Si vous souhaitez obtenir une journalisation plus prolixe, définissez la variable d'environnement INSTANA_DEBUG. Cela active la journalisation de niveau « Debug » dans le gem « Instana ».
L'image suivante montre la sortie de la console de l' Instana :

Dans l'exemple précédent, vous pouvez constater que l'agent hôte n'est pas disponible (soit parce qu'il n'est pas en cours d'exécution, soit parce qu'il n'a pas été installé). Une fois que l'agent hôte est disponible, le gem « Instana » se reconnectera automatiquement sans aucune intervention.
Pour plus d'informations sur les méthodes permettant de contrôler la sortie des journaux, consultez la page de configuration « Ruby ».
Test dans votre application
Pour diagnostiquer le module « Instana » depuis votre application, il suffit souvent d'ouvrir la console de l'application avec un niveau de journalisation détaillé pour identifier les problèmes.
L'image suivante montre la sortie de la console Rails : 
Dans l'exemple précédent, vous pouvez voir comment le gem Instana Ruby s'initialise, met en place certains composants et affiche une notification de réussite : Host agent available. We're in business.
Désactivation des composants individuels
Si un composant particulier du gem (telle que l'instrumentation) vous pose problème, vous pouvez temporairement y remédier en désactivant ce composant. Pour plus d'informations sur l'activation et la désactivation des composants individuels, consultez la page de configuration d' Ruby.