介紹:
Logwatch是使用 Perl 開發的一個日志分析工具。
Logwatch能夠對Linux 的日志文件進行分析,并自動發送mail給相關處理人員,可定制需求。
Logwatch的mail功能是借助宿主系統自帶的mail server 發郵件的,所以系統需安裝mail server , 如sendmail,postfix,Qmail等
安裝:
redhat,centOS: yum -y install logwatch
debian,ubuntu: apt-get install logwatch
目錄結構:
/usr/share/logwatch
default.conf/ # 配置目錄
logwatch.conf # 主配置文件,收件人,級別等
logfiles/ # 定義待分析服務的日志文件組路徑,相對于/var/log(*.conf)
services/ # 自定義需分析日志的Service目錄(*.conf)
scripts/ # 可執行腳本
logwatch.pl # 啟動分析的perl腳本,/usr/sbin/logwatch的源鏈接
logfiles/ # 可包含多個logwatch日志文件組的子目錄,對應的日志服務運行的時候,子目錄下的腳本會自動被調用
services/ # logwatch日志服務的過濾腳本,一一對應
shared/ # 可被多個logwatch日志服務引用的腳本
dist.conf/
logfiles/
services/
lib/
默認情況下使用的是/usr/share/logwatch/default.conf/logwatch.conf作為主配置文件,但在/etc/logwatch/conf/logwatch.conf中的存在配置選項會覆蓋前一個(/usr/share/logwatch下的logwatch.conf還是會起作用,比如在/etc/logwatch的logwatch.conf中沒有的選項)。但優先級最高的是在執行命令行中指定的選項。在/etc/logwatch下也存在一個與/usr/share/logwatch類似的目錄結構,可以在這里添加自定義的監控日志信息。
配置結構:
這三個目錄的內容是/usr/share/logwatch/default.conf,/usr/share/logwatch/dist.conf和/etc/logwatch/conf,都有相同結構:services:此子目錄包含配置特定于每個服務的文件。Logwatch確定哪些服務可用檢查此目錄的內容。每個服務配置文件由其服務名稱帶有“.conf”后綴。logfiles:此子目錄包含日志文件組配置文件。每個日志文件組配置文件包含有關信息一個或多個具有相同格式的日志文件。幾個服務可能使用相同的日志文件組配置文件。每一個配置文件由組命名名稱與“.conf”后綴。許多的組名取自該名稱的系統日志文件(如消息,郵件日志,安全等),但不總是。logwatch.conf:此文件包含默認值整體執行Logwatch,并影響全部的服務。它的許多參數都可以當命令行開關被覆蓋調用Logwatch可執行文件。
ignore.conf:該文件指定正則表達式,當與logwatch的輸出匹配時,會抑制匹配線,無論哪一個正在執行服務。
/etc/logwatch/conf目錄也可能包含文件'override.conf'
可執行結構:兩個目錄的內容/usr/share/logwatch/scripts和/etc/logwatch/scripts具有相同的結構:services:此子目錄包含可執行文件為每項服務。除非另有規定在配置服務文件(見上文)中,可執行文件是用perl語言編寫的。shared:此子目錄包含可執行文件由多個配置服務調用文件。
logfiles:此子目錄可能包含子目錄日志文件組名。每個可執行文件這些子目錄自動被調用運行使用相應的服務日志文件組名。
編輯配置:
cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
vim /etc/logwatch/conf/logwatch.conf #配置文件中不區分大小寫
MailTo = root #指定電子郵件地址,每日發送報告,多郵箱逗號隔開
LogDir = /var/log #定義日志文件位置
TmpDir = /var/cache/logwatch #緩存
MailFrom = Logwatch #郵件發送來源
Print = #選項yes會打印到系統輸出,不會發送到設定郵箱,NO則會發送到郵箱
Range = yesterday #接受范圍,如yesterday昨天或today今天或all所有
#Range = all #當配置所有日志時,必須配上archive = yes 將會處理所有的包括已存檔的日志
#Archive = yes
Detail = High #等級,低:Low=0,中:Med=5,高:High = 10 字母或數字都可以
Service = All #所有服務,或指定某個服務
Service = "-zz-network" #在前面加“-”表示不監控服務
Service = "-zz-sys" #Service選項指定想要監控的一個或多個服務。在/usr/share/logwatch/scripts/services目錄下列出的服務都能被監控
Service = "-eximstats"
mailer = "sendmail -t" #指定發送郵件的客戶端
#DailyReport = No #禁止每日執行任務
#Output = #指定輸出格式
#Save = /tmp/logwatch #將會把輸出報錯到文件中
使用:
檢測命令
/usr/bin/perl /usr/share/logwatch/scripts/logwatch.p
選項:
--detail: 指定日志報告的詳細程度;
--logfile: 僅處理指定的日志文件;
--service: 僅處理指定服務的日志文件;
--print: 打印結果到標準輸出;
--mailto: 將結果發送到指定郵箱;
--range: 指定處理日志的日期范圍;
--archives: 處理歸檔日志文件;
--debug: 調試模式;
--save: 將結果保存到指定文件中,而不顯示或者發送到指定郵箱;
--logdir: 指定查找日志文件的目錄,而不使用默認的日志目錄;
--hostname: 指定在日志報告中使用的主機名,不使用系統默認的主機名;
--numeric: 在報告中顯示ip地址而不是主機名;
--help: 顯示指令的幫助信息。
實例:
logwatch --detail Low --mailto email@address --service http --range today #將今天的http LOW日志發送到郵箱
logwatch --detail High --service all --range all --print 打印所有服務日志
logwatch --service sshd --detail high --print 打印SSHD錯誤日志
定制自己要監控的日志
首先創建logwatch日志文件組:
vim /etc/logwatch/conf/logfiles/test.conf
LogFile = /usr/local/nginx/logs/nginx.log
然后創建logwatch服務配置文件:
vim /etc/logwatch/conf/services/test.conf
Title = test title #日志文件的標題
LogFile = test #日志文件組的名字,即上面創建的日志文件組test.conf
創建logwatch服務過濾器腳本:
vim /etc/logwatch/scripts/services/test
cat /etc/logwatch/scripts/services/test
#!/bin/sh
grep -i ERROR | wc -l
#此處實驗只是簡單的寫了腳本,工作中可根據需要編寫
給腳本文件可執行權限:
chmod +x /etc/logwatch/scripts/services/test
測試輸出效果:
logwatch --service test --print #test為服務名
################### Logwatch 7.3.6 (05/19/07) ####################
Processing Initiated: Mon May 22 14:09:22 2017
Date Range Processed: yesterday
( 2017-May-21 )
Period is day.
Detail Level of Output: 10
Type of Output: unformatted
Logfiles for Host: zabbix
##################################################################
--------------------- test title Begin ------------------------
1022
---------------------- test title End -------------------------
###################### Logwatch End #########################
|