原文: [WWW] http://www2.logwatch.org:81/tabs/docs/HOWTO-Customize-LogWatch.html (v1.7)

中譯: ping (2006/1/18 v1.6) (更新: 2006/3/1 v1.7)

目次:

  1. 簡介
  2. 目錄結構
    1. 組態結構
    2. 執行檔結構
  3. 客製組態
  4. 客製手稿
  5. 建立新的服務過濾器
    1. Logfile 群組
    2. 服務過濾器組態檔
    3. 服務過濾器的執行檔
  6. 延伸閱讀
  7. 名詞翻譯彙編

這份文件描述這個 Logwatch 版本有哪些檔案、如何修改組態檔、和如何建立新的服務過濾器。

1. 簡介

Logwatch(日誌警戒)是個系統日誌的分析和報表程式,使用 Logwatch 的方式可以用

查到,在 man page 中的 "MORE INFORMATION" 一節列出了這個版本還有哪些文件檔可用。

在 man page 中說明的命令列選項可以用 '--help' 選項看到:

這份文件剩下的部分是給想要客製或增強 Logwatch、以超越命令列選項所能提供的能力的人看的。

2. 目錄結構

這一節用預設的檔案名稱和位置說明 Logwatch 套件中的子目錄和檔案。

/usr/share/logwatch 目錄含有組態檔和(perl)執行檔,內容如下:

/etc/logwatch 目錄含有以下子目錄:

2.1. 組態結構

/usr/share/logwatch/default.conf、/usr/share/logwatch/dist.conf 和 /etc/logwatch/conf 等三個目錄都有相同的結構:

/etc/logwatch/conf 目錄也可能會有個 'override.conf' 檔,請見第 4 節 "客製組態" 的說明。

2.2. 執行檔結構

/usr/share/logwatch/scripts 和 /etc/logwatch/scripts 兩個目錄有一樣的結構:

3. 客製組態

Logwatch 可以、也已經用在許多不同的 Linux 和 UNIX 系統中,有些包含 Logwatch 的發行版本修改了預設的組態來順從系統的設定,因此大多數的人都不需要再去修改 Logwatch。

然而,自 Logwatch 7.0 版以來,有了更容易修改局部系統組態的機制。為什麼還會要改組態呢?可能是因為寫出日誌的服務改了組態、或者 Logwatch 使用者想要有不同的報表內容或報表形式。

您可以修改 /etc/logwatch/conf 目錄中的變數來客製 Logwatch 的輸出。

預設值都是在 /usr/share/logwatch/default.conf 檔中指定,您的發行版本還可能會在 /usr/share/logwatch/dist.conf 目錄中追加一些預設值,所有這些變數都是在這些目錄中的檔案裡宣告的,您可以修改預設值來改變 Logwatch 會用什麼方式顯示什麼內容。

客製變數的機制有二:

1. Logwatch 會先在 /etc/logwatch/conf 目錄搜尋和 /usr/share/logwatch/default.conf 目錄相同的名稱和相對位置的檔案,在這些檔案中宣告的變數會蓋過預設值。

2. 然後會搜尋 /etc/logwatch/conf/override.conf 檔;每一行的第一欄可以是以下之一:

4. 客製手稿

和第四節中客製組態的方式類似,您可以蓋過預設的執行手稿,只要把名字相同的執行檔放在 /etc/logwatch/scripts 目錄下、和 /usr/share/logwatch/scripts 下的執行檔相同的相對路徑的位置就可以了。只要 /etc/logwatch/scripts 目錄下有這樣的檔,/usr/share/logwatch/scripts 目錄下對應的檔就會被忽略。

5. 建立新的服務過濾器

要建立新的服務,只要依上面文字所說、在 /etc/logwatch 目錄下正確的地方建立新的組態檔和執行檔就可以了。這一節補充一些細節和範例,不過用 /usr/share/logwatch 目錄下現有的組態檔和執行手稿為起點來產生新檔案可能會容易一些。

5.1. Logfile 群組

logfile 群組組態檔中只有一行是必須的,就是 'LogFile' 命令。

LogFile 行您愛放幾行都可以,所有指定的檔會串接起來、再餵給所有用到這個日誌群組的過濾器。在指定檔名時也可以用標準的萬用字元。

另一個可有可無的命令是 'Archive'。您可以指定當用到 '--archives' 選項時要串接進來的檔案,這個檔案不存在沒關係。舉例來說:

一般而言,分析 LogFile 群組時應該要限定日期的範圍,如果日誌檔是標準的系統日誌檔格式,您可以用標準手稿 'ApplyStdDate' 來濾出適當的日誌條目。呼叫共享手稿(在 /usr/share/logwatch/scripts/shared 目錄下)的方式是:

任何在等號之後的東西都會當作引數傳給程式(如果不需要引數的話,可以不寫等號)。您應該拿現有的 LogFile 群組組態檔當實例閱讀。

最後,如果 /usr/share/logwatch/scripts/logfiles/ 目錄存在的話,該目錄中的所有手稿都會執行。這些手稿從 STDIN 取得所有的日誌檔,並把修改過的日誌檔從 STDOUT 輸出。

5.2. 服務過濾器組態檔

您一旦定義了一個或多個日誌群組(或決定要用一個或多個已有的日誌群組),您需要定義您的服務過濾器。

這個檔案必須在 /etc/logwatch/conf/services/ 目錄,名字必須是 service_name.conf,其中 service_name 是服務的名字。您或許應該把別的服務現有的組態檔拷貝過來改。

只有一行是一定要的,就是 'LogFile' 命令。LogFile 命令讓您指定這個過濾器會處理的一個或多個 日誌群組(如上所述),請記住,任何過濾器可以處理任意多的日誌群組,而每個日誌群組都可以含有任意多的日誌檔和其歸檔的資料。

需要 /var/log/messages 中訊息的服務過濾器請加這一行:

註:這不是因為日誌檔的名字是 'messages',而是因為已定義的日誌群組的名字是 'messages'。

您可以有如下形式的命令:

這會執行 /usr/share/logwatch/scripts/shared/ 目錄下找到名為 SharedScriptName 的手稿,並傳送引數 'Arguments'。這個過濾器會修改該服務過濾器的輸入。

您也可以有如下形式的命令:

這個命令會設定環境變數 'EnvironmentVariable' 的值為 'Value',這個環境變數可以為您的過濾器所用。

您通常要為您的手稿指定一個標題(在 Logwatch 4.0 版加入的功能),如果指定了,Logwatch 會在您的服務的輸出前面加上開始符號、後面加上結束符號。這只會在有輸出時生效,如果您沒有產生輸出,就不會產生檔頭檔尾。定義標題的方式如下:

5.3. 服務過濾器的執行檔

一旦上面所請的手續都做好了,您就可以開始寫您的過濾器了。您可以用任何程式語言寫,因為過濾器要做的事情是:

  1. 從標準輸入讀取日誌的條目

  2. 取用某些環境變數

  3. 生個報告送到標準輸出

在您嘗試寫過濾器之前,您應該先把下面的內容當成您的測試手稿,把它放到 /etc/logwatch/scripts/services/ 目錄,取名為 service_name(因為您把組態檔取名為 service_name.conf)。

如果您暫時性地把某個手稿(如 'pam')換成上面這個,您會注意到在 /var/log/messages 的訊息到達這個過濾器之前,很大一部分已經被切掉了。

環境變數 LOGWATCH_DETAIL_LEVEL 的值可以是任何整數;實際上,它通常是 0(低)、5(中)、或 10(高)。

您的手稿應該只產生合適的輸出,如果沒有相關的日誌條目,就不應該有輸出。同樣地,如果您要報告兩件事,如『Good Logins』和『Bad Logins』,您應該產生適當的標頭,比方說:

然而,如果沒有發生失敗的登入,您應該只輸出:

請注意看,因為沒有不良的登入,這裡就沒有 "Bad Logins:" 的標頭。您也應該使用細節環境變數來決定輸出什麼。不良登入恐怕總是要顯示出來,但是良好登入或許只有在較高的細節水準才要顯示。以下是您該如何使用細節設定的指南:

在某些情況下,您可以用高於 10 的設定,這保留給連美國政府都沒興趣的瑣碎資訊。

6. 延伸閱讀

這份文件的簡介部分列出了一些資訊的出處,此外,[WWW] http://www.logwatch.org 網站含有:

如果您建立了新服務或加強了舊服務,而且覺得可能對其他人有用的話,請送信給 logwatch.org 的 logwatch-devel 通信論壇。

如果您寄補丁出來,請確定您有從 CVS 拿到的最新版,並且用統一格式(用 'cvs diff -u' 或 'diff -u' 產生)把補丁夾在信中當附件。

加強功能的建議,如果有實作的補丁的話,被接受的機會比較大。

7. 名詞翻譯彙編

日誌

log

日誌檔

log file

日誌群組

logfile group

條目

entry

歸檔

archive

服務

service

過濾器

filter

補丁

patch

last edited 2006-02-28 22:54:17 by PingYeh