天天看點

Linux 系統中使用 logwatch 監控日志檔案Linux 系統中使用 logwatch 監控日志檔案

linux 作業系統和許多應用程式會建立特殊的檔案來記錄它們的運作事件,這些檔案通常被稱作“日志”。當要了解作業系統或第三方應用程式的行為或進行故障排查時,這些系統日志或特定的應用程式日志檔案是必不可少的的工具。但是,日志檔案并沒有您們所謂的“清晰”或“容易”這種程度的可讀性。手工分析原始的日志檔案簡直是浪費時間,并且單調乏味。出于這個原因,對于系統管理者來說,發現任何一款能把原始的日志檔案轉換成更人性化的記錄摘要的工具,将會受益無窮。

Linux 系統中使用 logwatch 監控日志檔案Linux 系統中使用 logwatch 監控日志檔案

logwatch 報告的詳細程度和報告覆寫範圍是完全可定制化的。logwatch 的日志處理引擎也是可擴充的,從某種意義上來說,如果您想在一個新的應用程式中使用 logwatch 功能的話,隻需要為這個應用程式的日志檔案編寫一個日志處理腳本(使用 perl 語言),然後挂接到 logwatch 上就行。

logwatch 有一點不好的就是,在它生成的報告中沒有詳細的時間戳資訊,而原來的日志檔案中是存在的。您隻能知道被記錄下來的一段時間之内的特定事件,如果想要知道精确的時間點的資訊,就不得不去檢視原日志檔案了。

<a target="_blank"></a>

在 debian 系統或其派生的系統上:

# aptitude install logwatch

在基于 red hat 的釋出系統上:

# yum install logwatch

安裝時,主要的配置檔案(logwatch.conf)被放到 /etc/logwatch/conf 目錄中。此檔案(預設是空的)定義的設定選項會覆寫掉定義在 /usr/share/logwatch/default.conf/logwatch.conf 檔案中的系統級設定。

在指令行中,啟動 logwatch, 如果不帶參數的話,将會使用 /etc/logwatch/conf/logwatch.conf 檔案中定義的選項。但,隻要一指定參數,它們就會覆寫 /etc/logwatch/conf/logwatch.conf 檔案中的任意預設/自定義設定。

這篇文章裡,我們會編輯 /etc/logwatch/conf/logwatch.conf 檔案來對一些預設的設定項做些個性化設定。

detail = &lt;low, med, high, 或數字&gt;

“detail” 配置指令控制着 logwatch 報告的詳細程度。它可以是個正整數,也可以是分别代表着10、5和0數字的 high、med、low 幾個選項。

mailto = [email protected]

如果您讓把一份 logwatch 的報告郵件給您,就要使用 “mailto” 這個配置指令。要把一份報告發送給多個使用者,隻需要把他們的郵件位址用空格格開,然後配置上去。但是,您需要在 logwatch 運作的伺服器上配置好本地郵件傳輸代理(mta)如,sendmail、 postfix 等,這個配置指令項才能起作用。

range = &lt;yesterday|today|all&gt;

"range" 配置指令定義了生成 logwatch 報告的時間段資訊。這個指令通常可選的值是 yesterday、today、all。當作用了“rang = all”時,“archive = yes” 這個指令項也必須配置上,那麼所有的已存檔的日志檔案 (比如,/var/log/maillog、/var/log/maillog.x 或 /var/log/maillog.x.gz 檔案)都會被處理到。

除了這些通用的 range 值,您也可以使用複雜點的選擇值,如下所示:

range = "2 hours ago for that hour"

range = "-5 days"

range = "between -7 days and -3 days"

range = "since september 15, 2014"

range = "first friday in october"

range = "2014/10/15 12:50:15 for that second"

service = &lt;service-name-1&gt;

service = &lt;service-name-2&gt;

. . .

“service” 選項指定想要監控的一個或多個服務。在 /usr/share/logwatch/scripts/services 目錄下列出的服務都能被監控,它們已經涵蓋了重要的系統服務(例如:pam,secure,iptables,syslogd 等),也涵蓋了一些像 sudo、sshd、http、fail2ban、samba等主流的應用服務。如果您想添加新的服務到清單中,得編寫一個相應的日志處理 perl 腳本,并把它放在這個目錄中。

如果這個選項要用來選擇特定的服務話,您需要把 /usr/share/logwatch/default.conf/logwatch.conf 檔案中的 "service = all " 這一行注釋掉。

Linux 系統中使用 logwatch 監控日志檔案Linux 系統中使用 logwatch 監控日志檔案

format = &lt;text|html&gt;

“format” 配置指令定義了一份 logwatch 報告的格式(比如 text 或者 html)。

output = &lt;file|mail|stdout&gt;

"output" 配置指令定義生成的 logwatch 報告要發送的目的地。它能被儲存成檔案(file),生成電子郵件(mail)或者是直接在螢幕上顯示(stdout)。

要弄明白怎麼使用 logwatch 來分析日志檔案,可以參考下面的 logwatch.conf 檔案例子:

detail = high

range = today

service = http

service = postfix

service = zz-disk_space

format = html

output = mail

使用這些設定,logwatch 将會處理三個應用服務(http、postfix 和 zz-disk_space)當天産生的日志,生成一份非常詳細的 html 格式報告,然後郵件給您。

如果您不想個性化 /etc/logwatch/conf/logwatch.conf,您可以不修改此檔案讓其預設,然後在指令行裡運作如下所示的指令。也會得到同樣的輸出。

# logwatch --detail 10 --mailto [email protected] --range today --service http --service postfix --service zz-disk_space --format html --output mail

電子郵件發送的報告樣子如圖示:

Linux 系統中使用 logwatch 監控日志檔案Linux 系統中使用 logwatch 監控日志檔案

這份電子郵件頭部包含指向導航到報告細節的連結,在每個選中的服務細節,也會有“傳回頂部”的連結。

接收人很少的情況下您可能會使用電子郵件發送報告這個選項。其它情況下,您可能會把讓其生成為 html 格式的報告,這樣每個想看這份報告的人都可以從網絡共享裡看到。隻需要把上面例子中的配置做些修改就可以實作:

output = file

filename = /var/www/html/logs/dev1.html

同樣的,也可以在指令行中運作如下的指令。

# logwatch --detail 10 --range today --service http --service postfix --service zz-disk_space --format html --output file --filename /var/www/html/logs/dev1.html

最後,讓我們使用 cron 來配置 logwatch 的定時執行任務。下面的例子中,将會在每個工作日的下午 12:15 分運作 logwatch 排程任務。

# crontab -e

15 12 * * 1,2,3,4,5 /sbin/logwatch

希望這會有所幫助。歡迎到社群發表評論或分享自己的心得和體會!

原文釋出時間:2014-12-21

本文來自雲栖合作夥伴“linux中國”

繼續閱讀