Est Tomcat en cours d'exécution?
S'intéresse à savoir comment les gens vérifient habituellement si Tomcat tourne sur 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
y a-t-il un meilleur moyen de vérifier que Tomcat court? Ce qui précède semble être une façon "hacky" de vérifier que Tomcat est en cours d'exécution.
16 réponses
pourquoi grep ps
, alors que le pid a été écrit dans le fichier $CATALINA_PID
?
j'ai un script cron
'd checker qui envoie un e-mail quand 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" support@dom.com
fi
je suppose que vous pouvez également utiliser wget
pour vérifier la santé de votre tomcat. Si vous avez une page de diagnostic avec la charge de l'utilisateur etc, Vous pouvez le récupérer périodiquement et le Parser pour déterminer si quelque chose va mal.
sur mon système linux, je démarre Tomcat avec le startup.sh script. Pour savoir s'il fonctionne ou non, j'utilise
ps -ef | grep tomcat
si le résultat de sortie contient le chemin complet vers mon dossier tomcat, alors il s'exécute
essayez ceci à la place et parce qu'il a besoin de privilèges root utiliser sudo
sudo service tomcat7 status
netstat -lnp | grep 8080
serait probablement le meilleur moyen, si vous connaissez le port d'écoute de Tomcat. Si vous voulez être certain que is est fonctionnel, vous devrez établir une connexion et envoyer une requête HTTP et obtenir une réponse. Vous pouvez le faire de manière programmatique, ou en utilisant n'importe quel navigateur web.
Si tomcat est installé localement, tapez 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 installé Tomcat avec succès. Félicitations!
si tomcat est installé sur un serveur séparé, vous pouvez taper remplacer localhost par un nom d'hôte ou Iess valide où tomcat est installer.
ce qui précède s'applique à une installation standard dans laquelle tomcat utilise le port par défaut 8080
vous pouvez vérifier le statut de tomcat avec les moyens suivants:
ps -ef | grep tomcat
cela retournera le chemin tomcat si le tomcat est en cours d'exécution
netstat -a | grep 8080
où 8080 est le port tomcat
wget url
ou curl url
où url est l'url du serveur tomcat qui devraient être disponibles, par exemple:
wget http://localhost:8080
.
Ensuite, vérifiez le code de sortie, s'il est 0 - tomcat est en place.
J'ai trouvé que Tomcat est assez délicat dans le fait qu'un processus en cours d'exécution ou un port ouvert ne signifie pas nécessairement qu'il traite effectivement les requêtes. J'essaie habituellement de saisir une page connue et de comparer son contenu avec une valeur attendue précalculée.
je fais toujours de
tail -f logs/catalina.out
Quand je vois
INFO: Server startup in 77037 ms
alors je sais que le serveur est activé.
crée un script Shell qui vérifie si tomcat est en haut ou en bas et définit un cron pour sh pour le faire vérifier toutes les quelques minutes, et auto start tomcat si down. Exemple d'extrait de code en dessous de
TOMCAT_PID=$(ps -ef | awk '/[t]omcat/{print }')
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
essayez-vous de mettre en place un système d'alerte? Pour un simple "heartbeat", faites une requête HTTP vers le port Tomcat.
pour une surveillance plus élaborée, vous pouvez configurer JMX et/ou SNMP pour voir les statistiques JVM. Nous exécutons Nagios avec le plugin SNMP (bridges to 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. Je l'aime vraiment. Avec très peu de configuration, il vérifie automatiquement que le service est en cours d'exécution, et redémarre automatiquement s'il ne l'est pas. (envoi d'un email d'alerte). Il peut s'intégrer dans le fichier /etc/init.d scripts ou vérification par nom de processus.
puisque mes instances tomcat sont nommées tomcat_ . Exemple. tomcat_8086, j'utilise
#
ps aux | grep tomcat
autre méthode utilisant l'utilité nc
nc -l 8086
(numéro de port)
ou
ps aux | grep java
$ sudo netstat -lpn |grep :8080
pour vérifier le numéro de port
$ ps -aef|grep tomcat
est tout tomcat tournant 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
essayez cette commande
ps -ef | awk '/[t]omcat/{print }'
il retournera le pid si tomcat est en cours d'exécution.
Fondamentalement, vous voulez tester
- la Connectivité de votre tomcat instance
- rassembler quelques statistiques de base
- si le processus unix fonctionne
je vais évaluer les deux premières options car la troisième a déjà reçu suffisamment de réponses.
le plus facile est juste de développer une page Web sur votre WebApp qui rassemble quelques paramètres de base, et avoir un client que peut lire les résultats ou détecter les problèmes de connectivité.
Pour ce faire, vous disposez de plusieurs questions
Voici mes deux cents.
j'ai plusieurs instances tomcat qui fonctionnent sur différents ports pour ma configuration de cluster. J'utilise la commande suivante pour vérifier chaque processus tournant sur des ports différents.
/sbin/fuser 8080/tcp
remplacer le numéro de port selon vos besoins.
et pour tuer le processus utiliser -k
dans la commande ci-dessus.
- autres commandes où vous appelez une commande et appelez une autre
grep
en haut de celle-ci. - fonctionne bien avec plusieurs installations de tomcat ,ou tout autre serveur qui utilise un port comme une question de fait courant sur le même serveur.
la commande équivalente sur BSD
systèmes d'exploitation est fstat