Linux:logwatch(8) 太吵了。如何控制噪音水平?
我們的 Linux 系統預設執行logwatch(8)實用程序。在 RedHat/CentOS/SL 系統上,Logwatch 由
/etc/cron.daily/
cronjob 呼叫,然後每天發送一封包含結果的電子郵件。這些電子郵件的主題如下:Subject: Logwatch for $HOSTNAME
問題在於,預設情況下,這些每日電子郵件過於嘈雜,並且包含許多已經被其他服務(Nagios、Cacti、中央系統日誌等)監控的多餘資訊(HTTP 錯誤、每日磁碟使用情況等)。對於 100 個系統,電子郵件負載難以承受。人們會忽略電子郵件,這意味著我們可能會錯過 logwatch 發現的問題。
如何減少 logwatch 產生的噪音,但仍使用 logwatch 通知我們重大問題?
我將在下面發布我自己的答案,但我想看看其他人做了什麼。
注意:我有一個關於 FreeBSD 的類似問題,在FreeBSD:periodic(8) 太吵了。如何控制噪音水平?
總體而言,Logwatch 的可用文件缺乏足夠的解釋,而且通常過於模糊。我拼湊了一些有用的範例,並將 Logwatch 噪音降低了 95% 以上。
這是我發現的。
請記住,您可以在 中找到一些 Logwatch 文件
/usr/share/doc/logwatch-*/HOWTO-Customize-LogWatch
,其中包含一些有用的範例。
- 在 RHEL/CentOS/SL 上,預設的 logwatch 配置在
/usr/share/logwatch/default.conf/logwatch.conf
這些設置可以通過將您的本地配置放在
/etc/logwatch/conf/logwatch.conf
. 將以下內容放在該文件中,以告訴 logwatch 完全忽略“httpd”等服務和每日磁碟使用情況檢查:# Don't spam about the following Services Service = "-http" Service = "-zz-disk_space"
- 有時我不想完全禁用特定服務的 logwatch,我只想微調結果以減少噪音。
/usr/share/logwatch/default.conf/services/*.conf
包含服務的預設配置。這些參數可以通過將本地配置放在/etc/logwatch/conf/services/$SERVICE.conf
. 不幸的是,logwatch 在這方面的能力是有限的,而且許多 logwatch 執行檔都充滿了未記錄的 Perl。您的選擇是用其他東西替換執行檔,或者嘗試使用/etc/logwatch/conf/services
.例如,我有一個安全掃描器,它在網路上執行掃描。隨著測試的執行,安全掃描程序會在應用程序日誌中生成許多錯誤消息。我希望 logwatch 忽略來自我的安全掃描程序的錯誤,但仍會通知我來自其他主機的攻擊。這在Logwatch 中有更詳細的介紹:Ignore certain IPs for SSH & PAM checks? . 為此,我將以下內容放在
/etc/logwatch/conf/services/sshd.conf
:# Ignore these hosts *Remove = 192.168.100.1 *Remove = X.Y.123.123 # Ignore these usernames *Remove = testuser # Ignore other noise. Note that we need to escape the () *Remove = "pam_succeed_if\(sshd:auth\): error retrieving information about user netscan.*
" 3. logwatch 還允許您通過將正則表達式放入
/etc/logwatch/conf/ignore.conf
. HOWTO-Customize-LogWatch 說:ignore.conf:此文件指定正則表達式,當與 logwatch 的輸出匹配時,將抑制匹配行,而不管正在執行哪個服務。
但是,我對此並沒有太多運氣。我的要求需要一個條件語句,類似於“如果由於我的安全掃描程序而出現安全警告,則不要列印輸出。但是,如果我的安全掃描器和一些壞人發出了安全警告,那麼列印有用的部分——標頭“登錄失敗:”,壞主機的 IP,而不是掃描器的 IP。 4. 從源頭處扼殺牠(正如@user48838 所建議的那樣)。這些消息是由某個應用程序生成的,然後 Logwatch 很樂意將結果發送給您。在這些情況下,您可以修改應用程序以減少日誌記錄。
這並不總是可取的,因為有時您希望將完整日誌發送到某個地方(到中央 syslog 伺服器、中央 IDS 伺服器、Splunk、Nagios 等),但您不希望 logwatch 向您發送有關此問題的電子郵件每台伺服器,每一天。