Tomcat fonctionne-t-il?

109

Intéressé de savoir comment les gens vérifient habituellement si Tomcat fonctionne dans un environnement Unix.

Soit je vérifie que le processus fonctionne en utilisant

ps -ef | grep java
ps -ef | grep logging

ou je vérifie que le numéro de port est actif

netstat -a | grep 8080

existe-t-il un meilleur moyen de vérifier que Tomcat fonctionne? Ce qui précède semble être un moyen «piraté» de vérifier que Tomcat fonctionne.

ziggy
la source

Réponses:

57

Pourquoi grep ps, quand le pid a été écrit dans le $CATALINA_PIDfichier?

J'ai un cronscript 'd checker' qui envoie un email lorsque Tomcat est en panne:

kill -0 `cat $CATALINA_PID` > /dev/null 2>&1
if [ $? -gt 0 ]
then
    echo "Check tomcat" | mailx -s "Tomcat not running" [email protected]
fi

Je suppose que vous pouvez également utiliser wgetpour vérifier la santé de votre chat. Si vous avez une page de diagnostic avec charge utilisateur, etc., vous pouvez la récupérer régulièrement et l'analyser pour déterminer si quelque chose ne va pas.

dogbane
la source
est-ce aussi facile à faire avec Windows? est-ce que je modifierais simplement les commandes pour les équivalents Windows, le jetterais dans un fichier batch, puis planifierais via le planificateur?
liltitus27
Vous pouvez faire quelque chose comme tasklist |find /I "Tomcat" || echo "Tomcat not running"dans un fichier chauve-souris, mais vous devrez peut-être trouver java, pas Tomcat, selon le nom du processus.
GL2014
1
Pour savoir quelle est la valeur de $ CATALINA_PID à partir de votre Tomcat installé sur le système d'exploitation, essayez: ps aewwx | grep CATALINA_PID et vous le trouverez dans la sortie du processus en cours, parmi les autres variables d'environnement. Dans Debian 8, cette valeur est: CATALINA_PID = / var / run / tomcat8.pid
Professeur Falken
2
Il est important de noter qu'un fichier pid peut ne pas exister, cela dépend de l'environnement et de la façon dont tomcat a été démarré. Consultez cette réponse pour créer un fichier pid au démarrage.
Alberto de Paola
92

Sur mon système Linux, je lance Tomcat avec le script startup.sh. Pour savoir s'il fonctionne ou non, j'utilise

ps -ef | grep tomcat  

Si le résultat de sortie contient le chemin complet de mon dossier tomcat, alors il est en cours d'exécution

Thai Tran
la source
68

essayez plutôt ceci et parce qu'il a besoin des privilèges root, utilisez sudo

sudo service tomcat7 status
Kemboi
la source
17
Et si Tomcat n'est pas un service? Au lieu d'un paquet.
emeraldhieu
1
@ Emerald214 dans ce cas, vous obtiendrez untomcat7: unrecognized service
Yar
@Yar, cela dépend de votre version de Tomcat
tmh
14

netstat -lnp | grep 8080serait probablement le meilleur moyen, si vous connaissez le port d'écoute de Tomcat. Si vous voulez être certain que cela fonctionne, vous devrez établir une connexion et envoyer une requête HTTP et obtenir une réponse. Vous pouvez le faire par programme ou en utilisant n'importe quel navigateur Web.

Michael Goldshteyn
la source
SI vous connaissez le port, je pense que c'est le moyen le plus simple étant donné qu'il existe des variations dans la façon dont vous vérifiez si l'exécutable fonctionne en fonction de la façon dont vous avez installé Tomcat, qu'il s'agisse d'un service ou non, etc.
Jaffer
9

Vous pouvez vérifier l'état de tomcat des manières suivantes:

ps -ef | grep tomcat  

Cela renverra le chemin du tomcat si le tomcat est en cours d'exécution

netstat -a | grep 8080

où 8080 est le port tomcat

Dhanish Jose
la source
7

Si tomcat est installé localement, saisissez l'url suivante dans une fenêtre de navigateur: {localhost: 8080}

Cela affichera la page d'accueil de Tomcat avec le message suivant.

Si vous voyez cela, vous avez correctement installé Tomcat. Toutes nos félicitations!

Si tomcat est installé sur un serveur séparé, vous pouvez taper remplacer localhost par un nom d'hôte valide ou Iess où tomcat est installé.

Ce qui précède s'applique pour une installation standard dans laquelle tomcat utilise le port par défaut 8080

Lokanath
la source
19
Si Tomcat est installé sur un serveur séparé, ne pas y accéder depuis un navigateur ne vous dira pas avec certitude s'il est en cours d'exécution ou non: il peut être inaccessible.
Marco Lackovic
J'ai installé Tomcat8 sur Ubuntu, mais aller sur localhost: 8080 entraîne le message "Impossible de se connecter".
ibodi
1
Si vous avez un serveur headless sous Linux, ce n'est pas une option.
Klaus Nji
5

wget urlou curl url où url est une URL du serveur tomcat qui devrait être disponible, par exemple: wget http://localhost:8080. Ensuite, vérifiez le code de sortie, s'il est 0 - tomcat est actif.

Dikla
la source
4

Créez un script Shell qui vérifie si tomcat est actif ou non et définissez un cron pour sh pour le faire vérifier toutes les quelques minutes, et démarrer automatiquement tomcat s'il est arrêté. Exemple d'extrait de code ci-dessous

TOMCAT_PID=$(ps -ef | awk '/[t]omcat/{print $2}')
echo TOMCAT PROCESSID $TOMCAT_PID

if [ -z "$TOMCAT_PID" ]
then
    echo "TOMCAT NOT RUNNING"
    sudo /opt/tomcat/bin/startup.sh
else
   echo "TOMCAT RUNNING"
fi
Devendra Dora
la source
J'ai créé un script shell qui renvoie toujours "TOMCAT RUNNING" même si j'ai arrêté tomcat. Mais quand j'exécute la commande sur la console, cela a bien fonctionné.
Charles PHAM
Assurez-vous que le nom du script shell ne correspond pas au mot clé tomcat. Vous pouvez donner n'importe quel nom au script sans mot-clé tomcat
Devendra Dora
3

J'ai trouvé que Tomcat était assez pointilleux dans la mesure où un processus en cours d'exécution ou un port ouvert ne signifie pas nécessairement qu'il traite réellement les demandes. J'essaie généralement de saisir une page connue et de comparer son contenu avec une valeur attendue précalculée.

Alex Howansky
la source
3

je fais toujours

tail -f logs/catalina.out

Quand je vois là

INFO: Server startup in 77037 ms

alors je sais que le serveur est en place.

konkit
la source
2

Essayez-vous de mettre en place un système d'alerte? Pour un simple «battement de cœur», faites une requête HTTP au port Tomcat.

Pour une surveillance plus élaborée, vous pouvez configurer JMX et / ou SNMP pour afficher les statistiques JVM. Nous exécutons Nagios avec le plugin SNMP (ponts vers JMX) pour vérifier l'utilisation de la mémoire Tomcat et demander la taille du pool de threads toutes les 10-15 minutes.

http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html

Mise à jour (2012):

Nous avons mis à niveau nos systèmes pour utiliser "monit" pour vérifier le processus tomcat. J'aime vraiment ça. Avec très peu de configuration, il vérifie automatiquement que le service est en cours d'exécution et redémarre automatiquement si ce n'est pas le cas. (envoi d'une alerte email). Il peut s'intégrer aux scripts /etc/init.d ou vérifier par nom de processus.

Will Glass
la source
1

Étant donné que mes instances tomcat sont nommées tomcat_. Par exemple. tomcat_8086, j'utilise

#

ps aux | grep tomcat

Une autre méthode utilise l'utilitaire nc

nc -l 8086 (numéro de port )

Ou

ps aux | grep java

Himanshu Chauhan
la source
1

Essayez cette commande

ps -ef | awk '/[t]omcat/{print $2}' 

Il renverra le pid si tomcat est en cours d'exécution.

Alin
la source
0
$ sudo netstat -lpn |grep :8080

Pour vérifier le numéro de port

$ ps -aef|grep tomcat

Est-ce qu'un tomcat est en cours d'exécution sous le serveur.

tsssinfotech-K53U infotech # ps -aef|grep tomcat

root 9586 9567 0 11:35 pts / 6 00:00:00 grep --colour = auto tomcat

Batchu Bhargava
la source
0

Fondamentalement, vous voulez tester

  1. Connectivité à votre instance Tomcat
  2. Rassemblez quelques statistiques de base
  3. Si le processus Unix est en cours d'exécution

J'évaluerai les 2 premières options car la 3ème a déjà été suffisamment répondue.

le plus simple est simplement de développer une page Web sur votre WebApp qui rassemble des mesures de base et d'avoir un client capable de lire les résultats ou de détecter les problèmes de connectivité.

Pour ce faire, vous rencontrez plusieurs problèmes

Yo-yo
la source
0

Voici mes deux cents.

J'ai plusieurs instances de tomcat fonctionnant sur différents ports pour ma configuration de cluster. J'utilise la commande suivante pour vérifier chaque processus s'exécutant sur différents ports.

/sbin/fuser 8080/tcp

Remplacez le numéro de port selon vos besoins.

Et pour tuer le processus, utilisez -kla commande ci-dessus.

  • C'est beaucoup plus rapide que le ps -efmoyen ou toute autre commande où vous appelez une commande et en appelez une autregrep par-dessus.
  • Fonctionne bien avec plusieurs installations de tomcat, ou tout autre serveur qui utilise un port en fait fonctionnant sur le même serveur.

La commande équivalente sur BSDles systèmes d'exploitation estfstat

Raja Anbazhagan
la source
0

tomcat.sh vous aide à le savoir facilement.

Le document d'utilisation de tomcat.sh dit:

pas d'argument: affiche le process-id du tomcat, s'il est en cours d'exécution, sinon ne rien faire

Alors, exécutez la commande sur votre invite de commande et vérifiez pid:

$ tomcat.sh

Techflash
la source