如何透過網路將來自多個 Linux 實例的日誌傳輸到一個檔案中?

如何透過網路將來自多個 Linux 實例的日誌傳輸到一個檔案中?

我有一個在數百台 Linux 機器上運行的 shell 腳本,它在最後輸出一個 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供進一步處理。設定可能更困難,但從長遠來看更容易。

相關內容