如何將 haproxy 日誌訊息排除在 /var/log/syslog 之外

如何將 haproxy 日誌訊息排除在 /var/log/syslog 之外

我使用以下提示透過 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 上測試)

希望有幫助!

相關內容