
我的主要要求是能夠查看多台機器組合的日誌並進行簡單搜尋。但是,我希望該解決方案對(核心)系統的其餘部分的影響最小。我沒有任何即時性要求,該過程可以是非同步的。
最初 syslog 似乎是一個不錯的選擇,但是如果 syslog 伺服器掛掉了怎麼辦?在最壞的情況下,核心系統的使用者會看到錯誤,在最好的情況下,一些日誌會遺失。
於是我開始環顧四周,發現了 Logstash (http://logstash.net/)。目前我的想法是:
- 在每台伺服器(運行系統的核心元件)上都有一個 Logstash 代理正在執行
- 代理監控日誌檔案並將其發送到 ElasticSearch 集群
- 還有另一台有 Logstash UI 的伺服器
那樣:
- 沒有單點故障
- 即使 ES 叢集掛掉,只有代理會受到影響 - 應用程式仍然會愉快地將日誌寫入文件
- ES 返回後,代理將(希望)趕上並發送所有待處理的日誌(Logstash 是否足夠聰明來做到這一點?)
你認為這會起作用嗎?或者也許您可以推薦另一種解決方案?
答案1
系統日誌具有您所描述的一些功能,並且該項目還具有大量有關可靠訊息轉發的文檔。
簡而言之,透過 rsyslog,您可以使用RELP可靠的系統日誌訊息轉發協議,這樣您就不必擔心訊息遺失。您也可以選擇設定本機假脫機文件,其中 rsyslog 將緩衝訊息,以防遠端伺服器關閉。一旦遙控器恢復正常,您的代理就會趕上。
您也可以選擇配置 rsyslog 以寫入關聯式資料庫,然後您可以根據需要使資料庫具有冗餘性(我個人發現 syslog 伺服器更容易叢集)。
答案2
這個問題很可能會作為題外話而被關閉,請參閱常見問題。
無論如何,系統日誌(或任何基於系統日誌的系統)應該可以正常工作,畢竟如果您擔心丟失日誌,請確保備份系統日誌伺服器作為正常災難復原場景的一部分。這是一個非常簡單的任務/請求。