2015-05-21 118 views
0

我們正在嘗試爲我們的應用程序找到最佳的logstash配置。該應用程序由大約30個進程組成一臺運行在Linux機器上的服務器。來自同一臺計算機上多個進程的Logstash

這些進程中的每一個都寫入專用文件夾中的日誌文件。我們希望收集這些日誌並使用logstash將它們保存到elasticsearch。

雖然我們確實有資源問題。我們將無法在日誌中寫入日誌並保持彈性搜索運行相同的數據(elasticsearch需要這些日誌文件的5倍空間)

現在我們想到了試圖管道每個進程的輸出到它自己的logstash將包含grok過濾器和elasticsearch輸出,同時我們將在同一臺機器上運行elasticsearch實例。

這看起來有點沉重,有30個logstash正在運行......有更好的解決方案嗎?我們是否會破壞CPU或者這是做這種事情的標準方式?

+0

你不能讓機器在一天的日誌,然後將其刪除,他們已經被處理後,通過logstash?如何將stdout重定向到端口,我的google-fu說應該是可以的。也似乎很難相信你使用elasticsearch會導致5倍的懲罰。 –

+0

@AlainCollins一天過多,我們每10分鐘旋轉一次原木,最多保持10轉。如果我讓logstash從這些中讀取數據,並且它正在讀取一個旋轉將發生,我將鬆散日誌。此外,logstash如何處理日誌轉換? – user1708860

+0

logstash文檔顯示「它處理旋轉」,FWIW。如果您擔心這些邊緣情況,請將logstash配置爲僅處理最近旋轉的文件(例如logfile.1)。只要它有一個不同的inode號碼,你應該沒問題。 –

回答

0

也許我失去了一些東西,但我認爲你可以有一個logstash偵聽多個TCP端口https://www.elastic.co/guide/en/logstash/current/plugins-inputs-tcp.html

+0

我們考慮使用套接字,但現在談到如何。我們有一個簡單的日誌記者,我們可以改變它來報告一個套接字。但是這個解決方案對我來說並不合適,現在我們必須爲任何與日誌基礎結構鏈接的人運行logstash。我們想到的另一個解決方案是將輸出傳遞給一個簡單的C++程序,該程序從stdin讀取並寫入套接字。在這兩種解決方案中,我們必須處理主要的logstash崩潰和其他套接字相關的問題。將輸出傳送到redis/zeromq/logstash-forwarder客戶端並不簡單嗎? – user1708860

+0

如果你管的東西,logstash仍然可能崩潰,你必須爲此做好準備。 –

相關問題