Cola múltiples archivos remotos

41

¿Hay alguna forma de archivos remotos de tail 2?

Tengo dos servidores (ayb) detrás de un equilibrador de carga y me gustaría hacer algo como esto si es posible:

tail -f admin@serverA:~/mylogs/log admin@serverB:~/mylogs/log

¡Gracias!

Pablo Fernández
fuente
¿Por qué borraste la respuesta?
Pablo Fernández
principalmente porque no funcionó :-)
mat
@mat Oh, estaba a punto de probarlo :). ¡Gracias de todos modos!
Pablo Fernández
no funciona porque la construcción <(foo) esperará a que termine el comando interno antes de ser reemplazado por una tubería en la línea de comando original desde la cual el software podrá leer, y la cola nunca terminaría :-)
mat

Respuestas:

31

Esto funcionó para mí:

ssh -n user@hostname1 'tail -f /mylogs/log' &
ssh -n user@hostname2 'tail -f /mylogs/log' &
einstiien
fuente
Sí, así es como lo hago, excepto que generalmente tengo múltiples terminales de gnomos abiertos, cada uno con una sesión dentro de él
Tom O'Connor
1
¿Hay alguna manera de hacer esto sin abrir múltiples sesiones ssh independientes?
tgies
8
Pero esto no le permite detener el seguimiento con Ctrl+C.
sorin
@sorin para terminar los procesos, solo vuelva a poner cada uno en primer plano con fg; entonces puedes ctrl+chacerlo. Lo harías una vez por cada cola que tengas corriendo. O podrías pkill -f sshapuntar a todos ellos al mismo tiempo.
Dale Anderson el
34

Mi opción preferida es ir con multitail. Me gustaría correr algo como:

multitail -l 'ssh user@host1 "tail -f /some/log/file"' -l 'ssh user@host2 "tail -f /some/log/file"'
giro
fuente
1
¡Gracias! ¡Estaba buscando un ejemplo de cómo usar multitail sobre ssh / en hosts remotos!
Noah Sussman
Multitail es una solución mucho más robusta.
obfk
nuestro sitio web tiene más de 10 nodos web, y el multitail falla en el primer intento con el error Operation not permitted, con 2 3 nodos web, está bien
Hieu Vo
También recibo Operation not permitted, ¿alguna pista?
Erik Aigner
7

Puede usar fabric para seguir varios hosts (y también resultados grep, si es necesario):

$ fab -P -u 'USER' -p 'PASSWORD' --linewise -H host1,host2,host3 -- tail -f /path/to/my/log.log | grep ERROR
jbochi
fuente
6

Estaba pensando que también podría ser posible usar:

ssh -f user@hostname1 "tail -f /var/log/file" > /tmp/somefile &
ssh -f user@hostname2 "tail -f /var/log/file" > /tmp/somefile &

La opción -f después de ssh le permite ingresar una contraseña antes de que se ejecute en segundo plano. Entonces podría tener los resultados línea por línea en un solo archivo y ejecutar:

tail -f /tmp/somefile

Le daría un poco más de control sobre el comando "cola" actual en caso de que quisiera usar otras opciones de cola para mostrar la salida.

bjcullinan
fuente
5

Echa un vistazo a multitail . Al igual que en los ejemplos anteriores, puede darle un comando a ssh, y luego terminará con una pantalla que muestra (y almacena en búfer para retroceder fácilmente) múltiples registros. También colorea, lo cual es muy útil para detectar anomalías.

Marcin
fuente
2

Paralelo ssh tiene una buena solución para esto:

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 desactiva el tiempo de espera de la conexión, de lo contrario, pssh cerró la conexión
  • -H '<host>...' es la lista de hosts para ejecutar el comando
  • -P es habilitar la impresión de stdout de cada host
  • tail -f /var/log/app.log puede ser cualquier comando que pueda ejecutar su shell remoto
Augusto Hack
fuente
1

¡Solo una solución extraña, pero funciona !:

Pantalla 1

ssh user@hostname1 "tail -f /var/log/file" > /dev/pts/6

Pantalla 2

ssh user@hostname2 "tail -f /var/log/file" > /dev/pts/6

fuente
esto funcionará, generando líneas en el terminal / dev / pts / 6 (para encontrar su propio terminal: ejecutar: who am i y se lo mostrará).
Olivier Dulac
1

Puedes pagar dbitail.

Una herramienta Java que creé, capaz de leer archivos de registro locales y distantes usando SSH. Es bastante simple de usar.

Algunas explicaciones más: https://github.com/pschweitz/DBITail/wiki

Simplemente descargue la versión correspondiente a su sistema operativo, del ejecutable de lanzamiento de jar nativo dentro de su Java Runtime (requiere java 8_40 o superior):

https://github.com/pschweitz/DBITail/releases

Puede encontrar una documentación completa (incrustada con y también la página de Github)

Philippe

Philippe Schweitzer
fuente
0

o puede usar la pantalla para crear dos terminales y luego dividirlos.

SSH en el primer host del que desea ajustar el archivo de registro y, antes de ejecutar tail, ingrese a la pantalla.

Luego, siga el archivo en este host.

CTRL + A, c creará una nueva pantalla o ventana. Desde esta nueva ventana, ingrese al segundo host y siga el archivo.

Ahora para crear la pantalla dividida

CTRL + A, SHIFT + S, esto creará una pantalla dividida con el shell actual en la parte superior y la parte inferior vacía. Para cambiar a la parte inferior y colocar la primera pantalla dentro de ella,

CTRL + A, TAB, esto lo moverá a la parte inferior. Ahora para traer su primera sesión SSH a esta área:

CTRL + A ", (símbolo de comillas) y seleccione la primera sesión y presione enter

Me doy cuenta de que esto puede parecer una gran cantidad de gimnasia, y lo es, pero te acostumbras una vez que lo usas varias veces.

Aquí hay un tutorial realmente bueno o una referencia rápida a los comandos de la pantalla: http://www.pixelbeat.org/lkdb/screen.html

Además, puede crear un archivo .screenrc para que gran parte de lo que describí pueda automatizarse la primera vez que ingrese a la pantalla.

Otra cosa buena de esto es que puede cerrar su sesión y reanudarla en otro lugar. Por ejemplo, estás en el trabajo y tienes algo de monitoreo. Puede cerrar su sesión sin cerrar sesión y reanudarla cuando llegue a casa o a otra ubicación.

Kilo
fuente