Как передать журналы из нескольких экземпляров Linux по сети в один файл?

Как передать журналы из нескольких экземпляров Linux по сети в один файл?

У меня есть скрипт оболочки, работающий на сотнях машин Linux, который выводит строку резюме csv в конце. Мне нужно собрать это в один файл, чтобы просмотреть сводку результатов. Есть ли способ передать эту строку csv по сети на одну машину, которая передаст их все в один файл?

Может быть, что-то вроде простого http-сервера, который добавляет >>, печатает все входные данные в файл, а затем скрипт может запустить команду curl, чтобы отправить их на этот сервер?

решение1

Простым решением, позволяющим сотням систем отправлять выходные данные приложения обратно в одну систему, было бы использование netcat.

Один из центральных серверов, помещенный netcatв бесконечный цикл для получения входных данных.

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

Затем на каждом из хостов приложений запустите

app.exe | nc foo.example.com 4444

Может быть, не очень прочный, но свою задачу он выполняет.

Для более надежного решения настройте rsyslogна центральном сервере. Затем на каждом из хостов приложений используйте logger --server foo.example.com "your message here". Сообщения, отправленные через , loggerбудут записаны в файл rsyslogдля дальнейшей обработки. Возможно, сложнее настроить, но проще в долгосрочной перспективе.

Связанный контент