Surveiller simultanément plusieurs fichiers journaux (sur ssh) sous Windows?
-
01-07-2019 - |
Question
J'ai utilisé poderosa (une application de terminal .NET) pour surveiller les journaux sur plusieurs serveurs linux / solaris. Cette application N'EST PAS mise à jour actuellement et j'ai eu plusieurs problèmes avec.
Je me demande ce que les autres utilisateurs font pour surveiller simultanément plusieurs journaux en temps réel (comme dans le fichier journal tail -f). Je voudrais pouvoir intercaler / mettre en cascade plusieurs queues ssh.
merci
La solution
Vous pouvez utiliser Putty Connection Manager pour ajouter des onglets à PuTTy. Puis SSH dans la machine à deux reprises et on bascule dans les deux sens.
Autres conseils
Vous pouvez simplement vous connecter à un serveur et utiliser mutitail à partir de là pour aligner les journaux sur tous les autres serveurs.
Ssh sur l'un des serveurs, lancez l'écran dessus. Vous pouvez ensuite diviser l’écran en plusieurs fenêtres, chacune d’elles
.ssh serverX tail -f /path/to/log/file
Un avantage accessoire de cette méthode est qu'il n'est pas nécessaire de redémarrer le message chaque fois que vous vous connectez; vous pouvez simplement vous reconnecter à la session à l'écran en cours d'exécution.
À partir de bash, vous pouvez (enregistrer dans ~ / .bashrc
ou quelque chose du genre):
function create-follower () {
local _NAME=$1;
local _USER=$2;
local _HOST=$3;
local _PATH=$4;
if ! [ "${_NAME}" ]\
|| ! [ "${_USER}" ]\
|| ! [ "${_HOST}" ]\
|| ! [ "${_PATH}" ] ; then
{ echo "Cannot create log follower." ;
echo;
echo "Usage: create-follower NAME USER HOST LOG-FILE";
} >&2;
return 1 ;
fi ;
eval "function ${_NAME}(){ ssh ${_USER}@${_HOST} tail -f \"${_PATH}\" & }"
}
function activate-followers () {
if (( $# < 1 )) ; then
{ echo "You must specify at least one follower to use" ;
echo ;
echo "Usage:" ;
echo " activate-followers follower1 [follower2 ... followerN]";
} >&2;
return 1 ;
fi ;
for FOLLOW in "${@}" ; do
${FOLLOW} ;
done ;
wait;
}
function stop-followers () {
if [ "$(jobs)" ] ; then
kill -9 $(jobs | perl -pe 's/\[([0-9]+)\].*/%$1/') ;
fi ;
}
Ensuite, à partir de votre shell, définissez les journaux à suivre:
[dsm@localhost:~]$ create-follower test1 user1 localhost /tmp/log-1.txt
[dsm@localhost:~]$ create-follower test2 user2 otherhost /tmp/log-2.txt
[dsm@localhost:~]$ create-follower test2 user3 remotebox /tmp/log-3.txt
Maintenant, activez les abonnés:
[dsm@localhost:~]$ activate-followers test1 test2 test3
Pour sortir de la fonction, utilisez CTRL + C
, et pour arrêter les processus en arrière-plan, utilisez:
[dsm@localhost:~]$ stop-followers
REMARQUE 1: cela suppose que l'authentification par clé publique a été configurée pour vos boîtes.
REMARQUE 2: Vous devrez supprimer toutes les tâches en cours d'exécution après avoir quitté la fonction activate-followers. Vous souhaiterez peut-être le faire manuellement, car la fonction fournie effectue un kill force par brute sur TOUS les travaux en arrière-plan
NOTE 3: Cela suppose un environnement de travail semblable à Unix, que vous pouvez obtenir en installant cygwin
Qui a dit que vous ne pouviez pas faire de lisp en shellscript ;-)
Vous pouvez consulter le journal interne.
Un outil Java que j'ai créé, capable de lire les fichiers journaux locaux et distants à l'aide de SSH. C'est assez simple à utiliser.
Quelques explications supplémentaires: https://github.com/pschweitz/insidelog/wiki
Il vous suffit de télécharger la version correspondant à votre système d'exploitation ou l'exécutable de la version native de jar dans votre environnement d'exécution Java (requiert Java 8_40 ou une version ultérieure):
https://github.com/pschweitz/insidelog/releases
Vous pouvez trouver une documentation complète (intégrée avec et dans la page de Github également)
Deux options qui me viennent à l’esprit en premier.
Choisissez votre application SSH préférée (mastic, ssh dans cygwin, etc.) et connectez-vous à la machine.
1. SSH pour chaque journal (de nombreuses fenêtres ouvertes sur votre ordinateur ou sur des onglets en fonction de votre application)
2. SSH une fois et utilisez écran .
Si vous aviez réellement besoin de voir les deux journaux en même temps et que les onglets étaient hors de question, vous pouvez installer un script Perl appelé LogResolveMerge.pl. Il va fusionner deux journaux et vider la sortie dans STDOUT. Cependant, cela demandera beaucoup de ressources et si votre intention est de conserver les journaux, cela ne sera probablement pas trop efficace.