Surveillance de Ruby
Grâce à l'Observability d' Instana, vous pouvez surveiller de manière exhaustive vos applications Ruby afin d'identifier les goulots d'étranglement et d'optimiser les performances.
Pour commencer, installez l 'agent hôte d' Instana s dans votre environnement. Ensuite, ajoutez le instana gem à votre application. Ce module collecte automatiquement les métriques et les traces de vos instances d' Ruby, que vous pouvez consulter dans l'interface utilisateur d' Instana.
Ce instana gem offre une instrumentation automatisée du code pour les technologies prises en charge, une surveillance de l'état de santé des instances d' Ruby. ne nécessitant aucune configuration, ainsi que des traces de bout en bout des requêtes sur l'ensemble des systèmes.
Environnements d'exécution, frameworks et bibliothèques pris en charge
Pour plus d'informations, consultez la documentation dédiée aux versions prises en charge par Ruby.
Métriques d'exécution
Le instana gem recueille les métriques d'exécution suivantes à partir de vos instances d' Ruby :
- Version Ruby
- Arguments d'environnement d'exécution
- Infrastructure
- Bundle Gem
- Temps consacré au nettoyage de la mémoire (GC)
- Utilisation de la mémoire
- Emplacements de segment de mémoire
- Unités d'exécution
Installation
Ce instana gem est disponible sur Rubygems. Pour l'installer, ajoutez cette ligne à la fin du fichier Gemfile de votre application :
gem 'instana'
Exécutez ensuite :
bundle
Vous pouvez également l'installer vous-même comme suit :
gem install instana
Bundler::HTTPError Could not
fetch specs from # https://rubygems.org/Gem::RemoteFetcher::UnknownHostError timed out ou lors de l'exécution de la bundle commande, essayez de désactiver IPv6 pour résoudre le problème.Journaux de trace
A l'heure indiquée, la bibliothèque va générer la sortie suivante :
Stan is on the scene. Starting Instana instrumentation version X.X.X.
Une fois que l'agent a établi une connexion à l'agent hôte, vous recevez ce message :
Host agent available. We're in business.
D'autres messages de journal peuvent apparaître et indiquer un état d'erreur. Pour plus d'informations, voir la section Traitement des incidents .
Plateformes
Vous pouvez surveiller les applications d' Ruby s à l'aide d' Instana sur les plateformes suivantes :
Kubernetes
Le webhook Instana AutoTrace est une implémentation d'un contrôleur d'admission de webhooks de type « Mutating » ( Kubernetes ) qui configure automatiquement tout ce qui est nécessaire pour surveiller les applications Ruby à l'aide de Instana, sur l'ensemble d'un cluster Kubernetes.
Si vous choisissez d'installer le webhook Instana AutoTrace sur vos clusters Kubernetes, vous n'avez pas besoin d'effectuer une étape manuelle pour tracer l'une de vos applications Ruby fonctionnant dans ces clusters.
Pour Kubernetes (et d'autres déploiements basés sur des conteneurs), la gemme Ruby d'Instana nécessite un binaire ip disponible (tel que celui du paquet OS iproute2). Cette exigence sera supprimée dans une version ultérieure.
Cloud Foundry
La méthode d'installation standard fonctionne également sur Cloud Foundry grâce au Buildpack Cloud Foundry Ruby. Par ailleurs, depuis la vignette version 1.177.0, le pack de construction instana_buildpack automatise la configuration des applications Ruby sur Cloud Foundry. Pour plus d'informations, consultez la documentation relative au Buildpack « Instana ».
Configuration
Bien que le gem n'ait pas de configuration requise pour les métriques prédéfinies et le traçage distribué, il est possible de configurer des composants individuels si nécessaire. Pour plus d'informations, consultez la page de configuration de l' Ruby.
Kits de développement logiciel (SDK)
Le gem Instana prend en charge un kit SDK natif et le kit SDK OpenTracing.
SDK Instana natif
- https://github.com/instana/ruby-sensor
- Voir la section installation .
- Exemples
OpenTracing
Traitement des incidents
Vous pouvez rencontrer les problèmes suivants lorsque vous surveillez des applications Ruby à l'aide d' Instana :
Capteur Ruby non installé
Type de problème de surveillance : ruby_sensor_not_installed
Le webhook Instana AutoTrace n'est pas installé et le processus Ruby n'inclut pas le gem instanaRuby, ou le capteur Ruby ne parvient pas à communiquer avec l'agent hôte Instana.
Pour activer la surveillance d' Instana pour Ruby, consultez la section Installation. Si vous êtes certain que le webhook Instana AutoTrace ou le gem Ruby est correctement installé, résolvez ce problème en suivant les étapes décrites à l'adresse Ruby : le processus n'apparaît pas dans le tableau de bord pour le capteur Instana Ruby.
Vérifier que le processus est instrumenté
Si vous utilisez le webhook Instana AutoTrace et que le capteur Ruby est actif, vous pouvez voir la ligne suivante dans les journaux de votre application :
AutoTracing for Ruby is starting on version #<version>
Si vous ne voyez pas cette ligne dans les journaux de votre application, la configuration est incorrecte. Pour plus d'informations sur la configuration correcte, consultez Instana AutoTrace webhook.
Si vous effectuez une instrumentation manuelle, assurez-vous que le gem instana est installé dans votre application et qu'il est actif. Si le capteur Ruby est actif, vous verrez les entrées suivantes dans les journaux de votre application :
Stan is on the scene. Starting Instana instrumentation version #<version>
Si vous ne voyez pas ces entrées dans le journal, la configuration n'est pas correcte. Reportez-vous à la documentation Installation .
Si ce message apparaît dans le journal, il s'agit très probablement d'un problème de connectivité réseau avec l'agent hôte; consultez la section suivante.
Vérifier que le traceur peut se connecter à l'agent hôte
Si le traceur Ruby est installé (voir la section précédente), vérifiez que le processus Ruby peut se connecter à l'agent hôte sur le même hôte avec le port 42699. Pour plus d'informations sur la visibilité réseau requise, consultez la documentation relative aux exigences réseau de l'agent hôte Instana.
Nous constatons de plus en plus souvent que dans les plateformes conteneurisées, il existe des problèmes de visibilité réseau entre le conteneur avec l'application à tracer et le conteneur de l'agent hôte Instana ; un autre problème du même type est dû à une configuration de réseau de superposition, où le conteneur de l'application à tracer ne se connecte pas au conteneur d'agent Instana sur le même hôte.
Souvent, le problème réside dans le fait que le traceur Ruby utilise une adresse IP ou un nom DNS incorrect pour communiquer avec l'agent Instana. Vous pouvez demander au traceur Ruby d'utiliser une adresse réseau spécifique via la variable d'environnement INSTANA_AGENT_HOST.
Dans très peu de cas, nous avons vu des clients qui ont configuré leur réseau de sorte que le problème ne soit pas lié à l'adresse réseau, mais au port utilisé par le traceur. Si vous avez besoin d'une redéfinition de port, car l'agent hôte n'écoute pas sur le port 42699, vous pouvez demander au traceur d'utiliser un autre port via la variable d'environnement INSTANA_AGENT_PORT.
Si ces étapes de dépannage ne vous ont pas aidé, créez un ticket d'assistance.
Interactions avec d'autres bibliothèques d'instrumentation et de surveillance
À partir de la version 194, la gemme instana utilise la méthode prepend au lieu du chaînage d'alias pour lui permettre de travailler en parallèle avec les bibliothèques d'instrumentation et de surveillance. Cela signifie que si plusieurs bibliothèques ajoutent leur instrumentation à une méthode cible, l'instrumentation se déclenchera en séquence.
Si vous devez explicitement créer une chaîne d'alias pour une méthode instrumentée par le gem instana ou que vous utilisez une bibliothèque qui effectue le chaînage d'alias pour vous, le chaînage d'alias explicite ou le chargement de la bibliothèque qui effectue le chaînage d'alias doit avoir lieu après le chargement du gem instana . Sinon, l'instrumentation instana ne fonctionne pas.
Autres problèmes
Vous constatez quelque chose d'inattendu ou vous avez du mal à configurer quelque chose ? Consultez la page de dépannage d' Ruby pour obtenir de l'aide.