
我使用以下提示透過 rsyslogd 設定了 haproxy 日誌記錄本文,一切似乎都正常工作。日誌檔案取得日誌訊息。
然而,來自 haproxy 的每個日誌訊息也會顯示在/var/log/syslog
。這意味著一旦伺服器上線,系統日誌將毫無用處,因為它將與 haproxy 日誌訊息一起運行。
我想過濾掉那些來自 的訊息/var/log/syslog
。查看 rsyslogd 文件後,我嘗試更改文件/etc/rsyslog.d/50-default.conf
:
*.*;auth,authpriv.none;haproxy.none -/var/log/syslog
我只是添加了該;haproxy.none
部分。重新啟動 rsyslogd 後,它完全停止工作,直到我恢復變更。
我究竟做錯了什麼?
答案1
您還可以執行以下操作,這樣它們就不會進入任何其他日誌:
local0.* -/var/log/haproxy.log
& ~
這& ~
意味著不要將上面一行中匹配的內容放在其他規則的其他地方。
答案2
rsyslogd v7 中已棄用使用& ~
,建議您改為使用& stop
。您可以在本節中閱讀更多相關信息v7 相容性頁面。
omruleset 和丟棄 (~) 操作已棄用
兩者都繼續有效,但已被更好的替代品所取代。
丟棄操作(波形符號)已被「停止」RainerScript 指令取代。它被認為更直觀並且提供稍微更好的性能。
omruleset 模組已被「call」RainerScript 指令取代。 Call 允許像子程式一樣執行規則集,並且比 omruleset 具有更高的效能。請注意,omruleset 可以在非同步隊列中運行。這只是一個方面,而不是期望的效果,並且不受呼叫語句的支援。如果需要這種效果,可以透過非同步運行呼叫的規則集操作來簡單地模擬它(無論如何,這是處理此問題的正確方法)。
請注意,已棄用的模組在使用時會發出警告訊息。他們告訴我們該結構已被棄用,並將使用哪個語句作為替代。這不會影響操作:兩個模組仍然完全可操作,並且不會在 v7 時間範圍內刪除。
所以對於 HAProxy 來說是這樣的:
$ more /etc/rsyslog.d/haproxy.conf
local2.* /var/log/haproxy.log
& stop
至於它是如何運作的,它& stop
告訴 rsyslogd 丟棄迄今為止與先前匹配的規則相符的任何其他訊息。為了確保儘早採用此規則,您可以將檔案名稱從 變更/etc/rsyslog.d/haproxy.conf
為/etc/rsyslog.d/00-haproxy.conf
.
答案3
好吧,我明白了。這就是我的/etc/rsyslog.d/20-haproxy.conf
樣子:
$ModLoad imudp
$UDPServerRun 514
local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log
我將行更改50-default.conf
為:
*.*;auth,authpriv,local0,local1.none -/var/log/syslog
現在它似乎正在做我想做的事。
答案4
我不想弄亂文件的順序,所以我將 local0.none 添加到。行輸入。配置看起來像:
*.info;mail.none;authpriv.none;cron.none;local2.none /var/log/messages
local2.* /var/log/haproxy.log
(在 CentOS 7 上測試)
希望有幫助!