Linux 系統中使用 logwatch 監控記錄檔

來源:互聯網
上載者:User

Linux 系統中使用 logwatch 監控記錄檔

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

logwatch 是一款用 Perl 語言編寫的開源日誌解析分析器。它能對原始的記錄檔進行解析並轉換成結構化格式的文檔,也能根據您的使用方式和需求來定製報告。logwatch 的主要目的是產生更便於使用的日誌摘要,並不是用來對日誌進行即時的處理和監控的。正因為如此,logwatch 通常被設定好時間和頻率的自動定時任務來調度運行或者是有需要Tlog的時候從命令列裏手動運行。一旦日誌報告產生,logwatch 可以通過電子郵件把這報告發送給您,您可以把它儲存成檔案或者直接顯示在螢幕上。

Logwatch 報告的詳細程度和報告覆蓋範圍是完全可定製化的。Logwatch 的Tlog引擎也是可擴充的,從某種意義上來說,如果您想在一個新的應用程式中使用 logwatch 功能的話,只需要為這個應用程式的記錄檔編寫一個Tlog指令碼使用 Perl 語言),然後掛接到 logwatch 上就行。

logwatch 有一點不好的就是,在它產生的報告中沒有詳細的時間戳記資訊,而原來的記錄檔中是存在的。您只能知道被記錄下來的一段時間之內的特定事件,如果想要知道精確的時間點的資訊,就不得不去查看原記錄檔了。

安裝 Logwatch

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

 
  1. # aptitude install logwatch

在基於 Red Hat 的發布系統上:

 
  1. # yum install logwatch
配置 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 檔案來對一些預設的設定項做些個人化。

 
  1. Detail = <Low, Med, High, 或數字>

“Detail” 配置指令控制著 logwatch 報告的詳細程度。它可以是個正整數,也可以是分別代表著10、5和0數位 High、Med、Low 幾個選項。

 
  1. MailTo = youremailaddress@yourdomain.com

如果您讓把一份 logwatch 的報告郵件給您,就要使用 “MailTo” 這個配置指令。要把一份報告發送給多個使用者,只需要把他們的郵件地址用空格格開,然後配置上去。但是,您需要在 logwatch 啟動並執行伺服器上配置好本地郵件傳輸代理程式MTA)如,sendmail、 Postfix 等,這個配置指令項才能起作用。

 
  1. Range = <Yesterday|Today|All>

"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"

要使用上面例子中自由形式的 range,您需要從 CPAN註:Comprehensive Perl Archive Network) 上下載安裝 Perl 的 Date::Manip 模組。關於 CPAN 模組的安裝說明,請請參閱此帖 。

 
  1. Service = <service-name-1>
  2. Service = <service-name-2>
  3. . . .

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

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

 
  1. Format = <text|html>

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

 
  1. Output = <file|mail|stdout>

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

用 Logwatch 來分析記錄檔

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

 
  1. Detail = High
  2. MailTo = youremailaddress@yourdomain.com
  3. Range = Today
  4. Service = http
  5. Service = postfix
  6. Service = zz-disk_space
  7. Format = html
  8. Output = mail

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

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

 
  1. # logwatch --detail 10 --mailto youremailaddress@yourdomain.com --range today --service http --service postfix --service zz-disk_space --format html --output mail

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

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

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

 
  1. Detail = High
  2. Range = Today
  3. Service = http
  4. Service = postfix
  5. Service = zz-disk_space
  6. Format = html
  7. Output = file
  8. Filename = /var/www/html/logs/dev1.html

同樣的,也可以在命令列中運行如下的命令。

 
  1. # 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 調度任務。

 
  1. # crontab -e
 
  1. 15 12 * * 1,2,3,4,5 /sbin/logwatch

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

via: http://xmodulo.com/monitor-log-file-linux-logwatch.html

作者:Gabriel Cánepa 譯者:runningwater 校對:wxy

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.