Developpez.com - Rubrique Java

Le Club des Développeurs et IT Pro

Introduction à CRaSH

Un shell pour superviser une machine virtuelle Java, application à la visualisation d'un cache, par Damien Rieu

Le 2012-11-20 16:17:20, par drieu13, Membre confirmé
Bonjour,

Vous trouverez un article sur CRaSH à cette adresse : http://damienrieu.developpez.com/art...hcache_spring/

CRaSH permet de se connecter à une JVM en mode Shell puis d'exécuter des commandes directement sur cette JVM. Ainsi, nous allons accéder à un certain nombre de commandes prédéfinies (exemple la commande thread, jdbc, java…).
Une des grandes forces de CRaSH est que l'on peut aussi définir ses propres commandes Shell par programmation (Syntaxe Java ou Groovy). Il est alors possible de réaliser des commandes spécifiques à nos besoins !
Dans cette article, nous allons présenter CRaSH grâce à un cas pratique. Pour cela, nous allons réaliser une commande CRaSH d'affichage d'un cache puis nous intègrerons cette commande dans notre application démo.
Nous montrerons ensuite comment utiliser cette commande à l'aide de CRaSH.

Si vous avez des questions ou des remarques sur cet article, profitez de cette discussion.

J'espère que cet article vous fera découvrir CRaSH et vous aura donné envie d'en savoir plus sur CRaSH.
  Discussion forum
10 commentaires
  • drieu13
    Membre confirmé
    Pour vous incitez à poster des commentaires, je vais essayer de vous donner quelques précisions :
    - Vous accéder au coeur de la JVM en mode Shell.
    - Vous pouvez vous connecter sur n'importe quel JVM et la monitorer.
    - Vous créer des commandes (Java ou Groovy) pour vos propres besoins (dans l'article on va voir les valeurs d'un cache ehcache)

    De plus , depuis la version 1.2, il existe la possibilité de faire des dashboards personnalisés (la commande Linux Top mais adaptée à vos besoins !) et il existe aussi
    un plugin Visual VM. (Plus d'infos sur http://www.crashub.org/)

    Avez-vous des questions sur l'article ? sur CRaSH ?
  • hwoarang
    Membre chevronné
    Ca a l'air interessant. Par contre, j'ai jeté un oeil à l'article et au site de crash mais il ne semble pas etre possible d'utiliser l'outil hors des services web ? Par exemple pour une appli java ou bien une applet ? C'est dommage...
  • drieu13
    Membre confirmé
    Merci pour le commentaire,
    En fait, l'outil peut se connecter sur n'importe quel JVM.Il suffit d'avoir le PID de l'application (avec la commande jps du JDK)
    Ensuite, Il suffit de faire :

    ./crash.sh PID
    Est ce que je répond bien à la question ?
  • drieu13
    Membre confirmé
    Je complète ma réponse :

    CRaSH peut etre embarqué dans une application Java non serveur.Il y actuellement 2 exemples : le mode standalone mode ou le mode Spring.Pour l'embarquer dans une application Java non serveur, il existe une classe Bootstrap.
    Cependant, la manière de l'embarquer en utilisant la classe Boostrap n'est pas documentée aujourd'hui.
    Pour plus d'information :

  • hwoarang
    Membre chevronné
    Dans ce cas, ca m'interesse
    Va falloir que je jette un oeil des que j'aurais l'occasion.

    Merci pour le tuto (lu en diagonale pour l'instant mais qui a l'air bien fait)

    Si je peux me permettre une petite remarque, je dirais que dans le tuto, j'aurais mis dans l'introduction des exemples de cas que crash peut debugger (par exemple thread en deadlock j'imagine). Parce que la, le sujet est tres technique et ca peut aider de savoir un peu plus précisement ou on met les pieds
  • drieu13
    Membre confirmé
    Merci pour le conseil Je vais voir comment ajouter cela.

    Autre point que je n'ai pas invoqué, il est possible de tester les fonctionnalités de base de CRaSH directement sur Internet (http://crash.vietj.cloudbees.net/).
    Cela peut peut aider à se faire une idée sur CRaSH sans rien avoir installer (encore que l'installation de CRaSH se résume à décompresser un zip )

    Si d'autres personnes ont des commentaires sur l'article, n'hésitez pas ! Toutes les questions sont les bienvenues

    ps : Si il y a des fonctionnalités que vous souhaiteriez voir, vous pouvez aussi le poster, je transmettrai !
  • Robin56
    Modérateur
    Je suis totalement d'accord avec le conseil. Dans ton tutoriel, tu te sers de CRaSH pour faire surtout du traçage/débuggage en visualisant ce qu'il y a dans le cache d'après ce que je comprends.

    Du coup comme l'a fait remarquer hwoarang, j'aimerais savoir s'il y a d'autres avantages à se servir de CRaSH via des exemples concrets.

    En tout cas merci pour ce tutoriel et bravo pour ta contribution à cet outil.
  • drieu13
    Membre confirmé
    Merci pour ton commentaire
    En faite, suite aux conseils de hwoarang, j'ai rajouté un lien vers la démo en ligne car je trouve qu'elle permet de tester directement les commandes de base et je pense de se faire une idée.
    Pour l'instant, CRaSH n'a pas encore beaucoup d'exemples concrets car c'est un projet encore jeune.Ce que l'on peut dire par contre, c'est que CRaSH offre énormément de possibilités car on peut programmer ses propres commandes !

    Sinon, voici des cas d'utilisations que j'imagine pour CRaSH :

    - Modification des valeurs en live :
    Dans le cas de l'article par exemple, on pourrait modifier la commande pour mettre à jour les caches ou pour ajouter des données dans le cache.
    On pourrait imaginer l'utiliser par exemple dans un contexte d'intégration pour mettre à jour des properties, des caches ...

    - Dans son application en développement, on pourrait par exemple réaliser des commandes spécifiques à ses besoins.
    En ce moment, j'utilise un projet qui fait des Jobs (framework Play).J'aimerais par exemple avoir une commande qui me donne plus de détails sur les jobs en cours et leurs valeurs ....

    - Remplacement de la console JMX :
    Il y a une commande JMX qui permet de visualiser les métriques JMX et de les modifier.
    On pourrait par exemple faire sa propre commande de mise à jour de métriques.

    - Utilisation de la commande JPA pour accèder aux entities.

    - Monitoring/Debugging : Depuis la version 1.2, il existe la possibilité de faire des dashboards (similaire à la commande unix top) personnalisés
    Il existe aussi un plugin JVisualVM.

    Voici aussi le lien sur la présentation faite à Devoxx avec quelques exemples d'utilisations : http://blog.julienviet.com/2012/11/1...xx-university/

    Voilà, j'espère avoir répondu à ta question
  • spiderdev
    Nouveau Candidat au Club
    Bonsoir

    Dommage que les exports PDF... soient tous mort.

    Tony
  • drieu13
    Membre confirmé
    Merci pour la remarque
    C'est corrigé