monitorar simultaneamente vários arquivos de log (sobre ssh) no Windows?
-
01-07-2019 - |
Pergunta
Eu usei (um aplicativo de terminal .NET) para monitorar logs em múltiplos linux / Solaris servidores. Esta aplicação é não recebendo atualmente mantido e eu tive vários problemas com ele.
Eu estou querendo saber o que outros usuários fazer para monitorar simultaneamente vários registros em tempo real (como no arquivo de log tail -f). Eu gostaria de ser capaz de guia / cascata caudas vários ssh.
obrigado
Solução
Você pode usar Putty Connection Manager para adicionar guias para PuTTy. Então SSH na máquina duas vezes e guia e para trás.
Outras dicas
Você poderia apenas ssh para um servidor, ea utilização mutitail de lá para a cauda dos logs em todos os os outros servidores.
SSH para um dos servidores, o ecrã rodar nele. Você pode, então, dividir a tela em várias janelas, e cada um deles fazer
ssh serverX tail -f /path/to/log/file
Uma vantagem incidental a este método é que você não tem para reiniciar as caudas cada vez que você conectar -. Em vez disso, você pode simplesmente recolocar a sessão de tela em execução
A partir do bash você pode (salvo em ~/.bashrc
ou algo assim):
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 ;
}
E, em seguida, a partir de sua concha, definir os registros que você deseja seguir:
[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
Agora, ativar os seguidores:
[dsm@localhost:~]$ activate-followers test1 test2 test3
Para sair do uso CTRL+C
função, e para parar os processos backgrounded usar:
[dsm@localhost:~]$ stop-followers
NOTA 1:. Isso pressupõe autenticação de chave pública foi criada para suas caixas
NOTA 2: você terá que matar todos os trabalhos que são deixados em execução depois de parar de ativar a função seguidores. Você pode querer fazer isso manualmente como a função fornecida faz uma matança de força bruta em TODOS backgrounded empregos
NOTA 3: Isso pressupõe um unix-like ambiente de trabalho, que você pode obter através da instalação de cygwin
Quem disse que você não pode fazer lisp em shellscript; -)
Você pode verificar log in'side.
A Java ferramenta que eu criei, capaz de ler arquivos de log locais e distantes usando SSH. É bastante simples de usar.
Alguns mais explicações: https://github.com/pschweitz/insidelog/wiki
Basta baixar a versão correspondente ao seu sistema operacional, ou o executável liberação jar nativa dentro do seu Java Runtime (requer java 8_40 ou superior):
https://github.com/pschweitz/insidelog/releases
Você pode encontrar uma documentação completa (incorporado com e na página do Github também)
Duas opções que surgem em minha mente em primeiro lugar.
Escolha a sua aplicação SSH favorito (arremate, ssh em cygwin, etc) e logon na máquina.
1. SSH para cada log (lotes de janelas abertas em sua máquina ou guias dependendo do seu app)
2. SSH uma vez e uso tela .
Se você realmente necessário para ver os dois registros ao mesmo tempo, e abas estavam fora de questão, você pode instalar um script perl chamado LogResolveMerge.pl. Vai irão se fundir dois registros juntos, e despejar a saída para STDOUT. No entanto, será um recurso intensivo, e se sua intenção é tail -f os logs, ele provavelmente não vai ser muito eficaz.