¿Cómo canalizo registros de varias instancias de Linux a través de la red en un solo archivo?

¿Cómo canalizo registros de varias instancias de Linux a través de la red en un solo archivo?

Tengo un script de shell ejecutándose en cientos de máquinas Linux que genera una línea de resumen csv al final. Necesito recopilar eso en un archivo para revisar el resumen de resultados. ¿Hay alguna manera de transferir esa línea csv a través de la red a una sola máquina que las canalice todas a un solo archivo?

¿Quizás algo así como un servidor http simple que agrega >> imprime todas las entradas a un archivo y luego el script puede ejecutar un comando curl para publicarlo en ese servidor?

Respuesta1

Una solución sencilla para que cientos de sistemas envíen la salida de una aplicación a uno solo sería utilizar netcat.

Uno, el servidor central, colocado netcaten un bucle infinito para recibir información.

while true; do nc -l 4444; done | tee foo.csv

Luego, en cada uno de los hosts de la aplicación se ejecuta

app.exe | nc foo.example.com 4444

Quizás no sea muy robusto pero haría el trabajo.

Para obtener una solución más confiable, configúrela rsyslogen el servidor central. Luego, en cada una de las aplicaciones que utilizan los hosts logger --server foo.example.com "your message here". Los mensajes publicados loggerse registrarán en un archivo rsyslogpara su posterior procesamiento. Posiblemente sea más difícil de configurar pero más fácil a largo plazo.

información relacionada