2017-07-06 91 views

回答

0

Gelf-Appenders是沒有緩存的在線appender。他們直接連接遠程服務,並根據應用程序生成這些事件來提交日誌事件。

如果遠程服務關閉,日誌事件就會丟失。有不同的影響,幾個選項:

  1. TCP:TCP自帶網絡傳輸的可靠性,需要一個連接。如果遠程服務變得緩慢/無響應,那麼只要I/O緩衝區飽和,應用程序就會受到影響。 logstash-gelf如果發送了所有數據,則以非阻塞方式使用NIO。如果TCP連接斷開,那麼如果遠程端不可訪問或連接拒絕狀態表示遠程端口已關閉,則會遇到連接超時。在任何情況下,您都可以獲得可靠性,但這會影響您的應用程序性能。

  2. UDP:UDP沒有連接概念,它用於防火和遺忘通信。如果遠程端變得不健康,您的應用程序通常不會受到影響,但會遇到日誌事件丟失。

  3. Redis:如果您的Graylog實例已知失敗/已被關閉以進行維護,則可以使用Redis作爲中間緩衝區。一旦Graylog再次可用,它應該趕上,並且在一定程度上防止日誌事件丟失。如果您的Redis服務變得不健康,請參閱第1點。

  4. HTTP:HTTP是另一個可以提供一定靈活性的選項。您可以將您的Graylog服務器放在負載平衡器後面,以提高可用性並降低失敗風險。日誌事件丟失仍然是可能的。

如果要確保日誌連續性並減少日誌事件丟失的概率,請將日誌寫入磁盤。它仍然不是100%的保證(磁盤故障,磁盤滿),但可以提高應用程序性能。日誌文件(最好是一些基於JSON的格式)可以通過保持讀取偏移量來從遠程中斷中恢復,然後解析並提交給Graylog。