네트워크를 통해 여러 Linux 인스턴스의 로그를 하나의 파일로 파이프하려면 어떻게 해야 합니까?

네트워크를 통해 여러 Linux 인스턴스의 로그를 하나의 파일로 파이프하려면 어떻게 해야 합니까?

끝에 csv 요약 줄을 출력하는 수백 대의 Linux 시스템에서 실행되는 쉘 스크립트가 있습니다. 결과 요약을 검토하려면 이를 하나의 파일로 수집해야 합니다. 해당 csv 라인을 네트워크를 통해 하나의 단일 시스템으로 전송하여 모두 단일 파일로 파이프하는 방법이 있습니까?

>>를 추가하여 모든 입력을 파일에 인쇄한 다음 스크립트가 컬 명령을 실행하여 해당 서버에 게시하는 간단한 http 서버와 같은 것일 수 있습니까?

답변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설정하기가 더 어려울 수도 있지만 장기적으로는 더 쉬울 수도 있습니다.

관련 정보