2013-10-30 25 views
2

我讓syslog成功轉發日誌到上游服務器,像這樣經過轉發的郵件:獲取rsyslog現在遠程服務器重啓

$MainMsgQueyeType LinkedList 
$MainMsgQueueSize 10000 
$MainMsgQueusDiscardMark 8000 
$MainMsgQueueDiscardSeverity 1 
$MainMsgQueueSaveOnShutdown off 
$MainMsgQueueTimeoutEnqueue 0 

$ActionQueueType LinkedList # in memory queue 
$ActionQueueFileName fwdRule1 # unique name prefix for spool files 
$ActionQueueSize 10000   # Only allow 10000 elements in the queue 
$ActionQueueDiscardMark 8000 # Only allow 8000 elements in the queue before dropping msgs 
$ActionQueueDiscardSeverity 1 # Discard Alert,Critical,Error,Warning,Notice,Info,Debug, NOT Emergency 
$ActionQueueSaveOnShutdown off # save messages to disk on shutdown 
$ActionQueueTimeoutEnqueue 0 
$ActionResumeRetryCount -1  # infinite retries if host is down 

$RepeatedMsgReduction off 

*.* @@remoteserver.mynetwork.com:5544 

在REMOTESERVER我有一些會談syslog和監聽端口上。爲了測試,我有一個簡單的日誌客戶端,每秒向syslog記錄100條消息。

這一切工作正常,我已經配置上面的隊列,以便在遠程服務器不可用的情況下,隊列開始填滿,然後最終消息被丟棄,從而保護系統日誌阻止其日誌記錄客戶端。

當我停止remoteserver:5544上的遠程日誌接收器時,syslog仍然是穩定的(隊列填滿/滿),但是當我重新啓動遠程日誌接收器一段時間後,rsyslog再次檢測到服務器,重新建立TCP連接

無論其 - 日誌只轉發1條消息給它,儘管有它數以萬計的消息隊列,並記錄客戶繼續記錄100條消息第二

我怎樣才能使系統記錄再次開始轉發消息一旦它檢測到遠程服務器備份了? (不重新啓動系統日誌)。

我使用rsyslog現在4.6.2-2

我使用,並且要使用TCP

回答

5

問題的情況下,任何人都遇到這個是workdirectory設置爲:

$WorkDirectory /var/spool/rsyslog 

和上面的配置,這是否:

$ActionQueueFileName fwdRule1 

即使它應該是一個in - 存儲隊列。因此,當隊列達到800(奇怪的是,不是8000)時,啓動了磁盤輔助模式,系統日誌嘗試將消息寫入/ var/spool/rsyslog。 此目錄不存在。隨機地,(因此競爭條件必須存在並且rsyslog中存在一個錯誤),在不斷嘗試在該目錄中的磁盤上打開隊列文件後,rsyslog進入扭曲狀態並放棄並繼續排隊消息,直到達到高位10,000馬克。重新啓動下游日誌服務器無法恢復。

取出對ActionQueueFileName的所有引用並使WorkDirectory存在已解決此問題。

+0

感謝您的支持。我很好奇如何去調試呢?我正在處理類似的問題,並不熟悉rsyslog調試。 –