2 votes

Comment mettre à niveau les agents dans un environnement en cours d'exécution ?

J'utilise Perfino pour surveiller certains Tomcats dans SLES. Le serveur possède son propre installateur, ce qui fait que sa mise à jour ne pose pas de problème (il suffit de lancer l'installateur, qui détectera l'installation existante et la mettra à jour). Mais il n'y a pas d'installateur pour les agents.

J'ai déjà contacté le support d'EJ-Technology à ce sujet (c'est moi qui souligne) :

le site les agents sont mis à jour automatiquement . Les applications surveillées continueront à fonctionner avec le même agent. jusqu'à ce qu'ils soient redémarrés . Dans la vue des VMs, vous verrez une icône spéciale à côté de la VM qui indique que l'agent n'est pas à jour.

Si je comprends bien, les agents des JVM en cours d'exécution sont mis à jour à la volée. Mais j'ai vérifié le agent.jar , perfino.jar y libperfino.so et aucun d'eux n'est modifié, donc après le redémarrage, le serveur devra à nouveau le mettre à jour.

J'ai déjà rencontré des problèmes avec des agents périmés, j'ai donc commencé à construire mes propres rpms pour déployer les mises à jour des agents (c'est-à-dire toutes les agent.tar.gz ). Mais je suis maintenant un peu préoccupé par l'opportunité de cette méthode : cela dépend du chargeur de classe ; le jar d'une application en cours d'exécution peut être écrasé. Je l'ai déjà fait et rien de cassé. Mais...

Est-il prudent de déballer un nouveau agent.tar.gz d'une application surveillée en cours d'exécution ?

1voto

Ingo Kegel Points 13858

Mais j'ai vérifié les fichiers agent.jar, perfino.jar et libperfino.so et aucun d'eux n'est modifié.

Le serveur pousse le nouvel agent vers toutes les JVM surveillées, mais il n'écrase pas l'agent que vous avez spécifié dans le fichier -javaagent:[path to perfino.jar] VM, car ces fichiers peuvent être en cours d'utilisation et ne sont peut-être même pas accessibles en écriture.

Au lieu de cela, le nouvel agent est enregistré dans le fichier ~/.perfino/agent répertoire. Chaque mise à jour d'agent possède un ID, qui est le nom du sous-répertoire où l'agent est stocké. Le fichier perfino.jar est juste un bootstrapper qui sélectionne l'agent disponible le plus récent au démarrage.

Est-il sûr de décompresser un nouvel agent.tar.gz d'une application surveillée en cours d'exécution ?

Non, ce ne serait pas sûr en général, les fichiers JAR supprimés peuvent encore être nécessaires pour le chargement des classes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X