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