1. 程式人生 > >Logwatch日誌分析工具

Logwatch日誌分析工具

logwatch日誌監控

介紹:

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 = <mail,html,unformattted>  #指定輸出格式
#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 protected] --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 #########################


本文出自 “80後小菜鳥” 博客,請務必保留此出處http://zhangxinqi.blog.51cto.com/9668428/1928208

Logwatch日誌分析工具