rsyslog+loganalyzer系統日誌分析系統(loganalyzer基本功能)

裝完之後總感覺,恩。好像很容易就分析了系統日誌,目的是達到了。但問題是好像功能太過簡單和呆板化,如果我要做其它分析怎麼辦?loganalyzer基本功能必須得到徹底的瞭解。官網什麼的我也去找過,不過天生英語弱智,沒找出什麼有用的東西(還好軟件是用的網友漢化版)。於是一邊從網上找資料一邊自己分析。好吧,好歹還得到了一點東西。

 

 

 一、關閉loganalyzer的資助信息

 

其實這個東西雖然有點礙事,但總感覺把它去掉有點不道德。額,當我什麼都沒說吧。

# vim /var/www/html/log/src/include/functions_common.php

把 $content['SHOW_DONATEBUTTON'] 的值改成 false

 

再次讀入文件的時候就消失了,不需要重啓任何服務。

 

二、對於loganalyzer功能的基本認識

沒登錄的時候,可以看到的功能是

 

搜索,其實是一個比較全面的高級篩選器。

顯示事件,查看分析過的日誌內容,這個是基本功能。

統計,這個是根據數據源而產生的統計圖表。

報表,如果不登錄,只能看到模板,不能使用。模板的新建,使用下面單列說明。

幫助,除了第一個文檔可以看看以外,下面三個好像都夠水。

知識庫,好像也打不開。


管理中心,在登錄之後可以使用。

 

設置,分成默認的全局設置和個人設置。這個進入系統之後都可以改。

數據源,即最原始的日誌信息。可以是文件也可以是mysql數據庫。

字段,這個是內部字段,是視圖積木的最小塊。

視圖,這個其實是顯示出的二維表結構。

搜索,其實就是已經定下了條件的快捷搜索。

圖表,這個是統計圖表設置。

消息分析器,這個是解決拆分數據源內日誌字符串使之與字段相對應。

報表模塊,根據四個報表模板對需求的數據進行報表設置。

數據映射,字段分內部和loganalyzer字段。內部字段是rsyslog的日誌字段,這裏就是完成日誌字段和軟件字段的對應。

 

 

三、數據源的添加。

一時不知道從何說起,先做吧,先完之後再細說。

a.添加 cron日誌分析

這裏說明一下,因爲我寫的是 *.*其實包括cron在內所有rsyslog記錄的日誌都已經寫入mysql了。這裏單獨拿出來,是爲演示數據源的添加。

 

恩,添加

 

 

源的名稱:cron

來源類型:磁盤文件 //這裏直接取的是/var/log/cron

視圖選擇:syslog fidlds //這個就是顯示的二維表

消息分析器:注意,這裏是空的

日誌類型:syslog / Rsyslog  //這時其實就是日誌記錄源。

Syslog file:這裏是寫明日誌文件的路徑  //注意一點,日誌文件權限最好644否則可能日誌   無法讀取。

 

 

完成。

好了。下面查看一下效果:

 

顯示事件

 

右上角選擇“消息源:cron”

 

 顯示成功。不過要注意,facility(來源設備)和Severity(嚴重程度)這兩行是沒有的。

日誌本身也沒有

 

不過如果換成數據庫裏的數據源。應該是有的:

 


b.添加apache日誌

其實apache日誌之前已經用awstats做過分析了,效果比這個要好。不過那個格式要求是combined,而這裏兩個格式都通用。So,試試看common格式

# vim /etc/httpd/conf/httpd.conf

把 CustomLog log/access_log combined 改成 CustomLog "/var/log/access_log" common

這裏說明一下,磁盤目錄文件強制要求放在/var/log之下,鏈接好像不起作用。

 

名字設成 apache 這個隨便

消息分析器是 apache2common 這裏必寫否則會有字段無法顯示。

視圖也要改成 Webserver Fields

數據源選擇 apache 之後,日誌分析如下:

 

 

消息分析器,只有四個。有兩個是apache的,一個是syslog,還有一個IIS的。官方沒有再提供新的,自己也學也沒辦法添加。So,暫時到這裏吧。

 

四、報表的使用

報表很重要,但確實用得不是很熟。

 

點開之後,如下:

 

auditsummary 事件日誌審計總結報告

eventsummary 事件日誌總結報告

logonlogoff 事件日誌登錄/登出總結報告

syslogsummary Syslog總結報告

 

這是我選了最後一個

 

標題和默認的一樣,按需求自己改一下。

過濾器,這個東西說白了就是篩選條件。圖上我添加的”Date 最後條件是 last 最近24小時”意思就是說篩選出昨天的所有日誌。其它的可以通過“添加過濾器”完成多條件查詢。

日誌源,這個不必說了吧。選自己要的。

輸出格式,這個有htmlpdf兩種,具體看自己要求。

輸出目標,有個直接輸出和保存到文件,因爲我是要郵件發出的,所以保存到文件了。

保存路徑,這個自不必說了,當心目標路徑的權限apache要能寫。

最後保存並返回了。

 

 

有了,不過後面的還要點進去看,直接點名字。


 

看到紅色的麼,複製一下。

 

然後用mail發郵件

進入控制檯

# /usr/bin/php /var/www/html/log/src/cron/cmdreportgen.php runreport syslogsummary 1

 

OKhtml文件生成。接下來,準備發郵件。

 

首先,把sendmail服務打開。

# service sendmail start

 

# echo "內容" | mail  -v -s "標題" -r 發件郵箱 -a   "/tmp/report.html"  收件郵箱


這裏建議還是加 -v,因爲之前試過不加的話,可能會在隊列裏排很久。

儘量用 -r 參數,因爲不加發件郵箱,很可能被當成垃圾郵件。收件郵箱的白名單最好做一下設置,畢竟內容一般不是很多,很容易被當成垃圾處理。

最後打開結果如下:

 

PS,不要把report.html的內容直接發到郵箱。

生成文件然後發送到郵箱,一般是用於每天定時發送報告。這個和crontab一起使用。

# crontab -e

0 8 * * * /usr/bin/php /var/www/html/log/src/cron/cmdreportgen.php runreport syslogsummary 1  &&  echo "內容" | mail  -v -s "loganalyzer 每日rsyslog總結 "  -r   發件郵箱 -a   "/tmp/report.html"  收件郵箱


# service crond restart 


這樣每天上班的時候就能看到前一天的報表了


報表不發郵件:

 

其實就是輸出目標變成直接輸出。

然後效果是:

 

可以直接從報表查看。

 

看到綠色的箭頭了麼。

如果是輸出到文件,點完之後是這樣的:

 

而如果是直接輸出是這樣的:

 

SO.就直接輸出了。


這兩種方式區別在於:

輸出到文件,可以轉發到郵件,也可以發到另外的文件夾進行收集,不過這個除了管理員,其它用戶沒有直接查看的權力。

輸出到文件,則只讀用戶也可以查看報表內容。

(其實兩者按html輸入的話,結果是一樣的。輸出到文件併發郵件那個其實是我截圖有問題。)

最後說明一下,這裏是爲了實驗,所以只輸出默認的100條,按個人建議越大越好,不過還是按實際要求來比較好。設置在:

 

Max hosts 顯示多少個主機信息

Max Syslogmessages per host 每個主機信息最大的數量

Counter Threshold 閥值,如果一個事件反覆出現,而且最後合計值大於這個值。那會被標爲紅色。如:

 

  

五、圖表

Loganalyzer的圖表比較簡單,好像都是單數據。額。好像一般圖表也只是單數據。

管理中心

 

然後添加圖表

 

 

這裏主要是三個屬性。

名稱,不要重複

圖表類型,主要有三種,垂直,餅狀,水平。

圖表字段,這個是核心,自己選擇自己要監控的字段。

 

六、字段,映射,視圖

這個是本篇的最後一節,本來我也不想搞三合一的,但這三個關聯性比較強,放在一起分析比較容易理解。

Loganalyzer的默認的視圖 Syslog Fields 沒有來源IPSo,添加。

首先,修改數據庫結構。

mysql> use Syslog;

mysql> ALTER TABLE SystemEvents ADD FromIP VARCHAR(60) DEFAULT NULL AFTER FromHost;

 

其實這個如果用phpmyadmin更加方便一點

 

 

安裝phpmyadmin可能要用到php-mbstringSO.安裝就好了

# rpm -ivh php-mbstring-5.3.3-3.el6_2.8.i686.rpm

 

#service httpd restart   //phpmyadmin就可以訪問了

第二,編輯/etc/rsyslog.conf

# vim /etc/rsyslog.conf

在” *.*       :ommysql:localhost,Syslog,rsyslog,123456 ” 行之上添加

添加

$template insertpl,"insert into SystemEvents (Message, Facility, FromHost, FromIP, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%HOSTNAME%', '%fromhost-ip%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",SQL

 

把” *.*       :ommysql:localhost,Syslog,rsyslog,123456 ”修改爲:

*.*       :ommysql:localhost,Syslog,rsyslog,123456;insertpl

 

然後重啓服務

#service rsyslog restart

OK.場外的工作已經結束了。下面準備loganalyzer

 

第三Loganalyzer設置

字段添加:

 

這裏其實並沒有完全吃透,不過大概分析一下:

字段ID,這個是指數據庫表SystemEvents的字段

顯示名稱,這個是loganalyzer顯示的名稱

內部字段ID,這個是loganalyzer做內部數據連接用的,不過名字只要不與其它重複可以隨便起,爲了與顯示名相對應默認的內部字段都是”SYSLOG_”+顯示名稱

搜索過濾器,這個怎麼說,還記得剛剛報表在添加完 過濾編輯器(篩選條件)之後後面出面的具體條件麼。如:

 

紅框裏是過濾的字段,綠框中就是具體條件。這個搜索過濾器,決定的就是後面這個綠框裏出現的到底是什麼。不過很可惜沒有找到loganalyzer中有關於搜索過濾器的信息。不建議使用其它字段的搜索過濾器,因爲做報表添加字段的時候會自動識別到之前那個字段上去。建議直接填“顯示名字”——因爲有幾個字段就是如此,而且會自動識別出來的過濾器好像和HOST字段很像,對於IP來說,字符型的字段已經夠用了。

SO.我還會繼續查找,哪有如果有發現,請告知一聲。

添加新視圖

把新字段加入視圖中,不過原始的三個視圖默認不能修改,所以照着 Syslog Fields 做一個,把新字段加進去就可以了。

 

 

添加新的映射關係

映射關係是視圖的靈魂所在——說簡單點,映射關係就將視圖字段所對應數據庫字段的值取過來填充視圖二維表。既然視圖都重做了,那依樣重做一個新的映射關係。

 

最後做完,大概就是這個樣子。不過要說明一下:

映射名,別忘記寫

紅框裏都是loganalyzer的字段,橙框裏都是數據庫表SystemEvents的字段,這裏大小寫不強求。

添加的方法:

在黃框內選擇loganalyzer字段,然後寫入要映射的數據庫表字段就可以了。除了新字段IP映射爲fromip之外,其它的基本照抄MonitorWare 

有個小問題,添加uID映射爲id的時候,好像會出錯,建議單獨先行添加,免得加了一大堆最後一個錯誤前功盡棄。

 

最後配置新的數據源,使得映射關係可以從數據庫裏提取數據,以便應用於新的視圖。

 

先定名字,Syslog IP

數據源,還是選MYSQL

視圖,選剛剛新建的 Syslog Fields New

下面的表類型,其實是映射關係,選擇剛剛新建的 New Syslog

餘下其它的就和剛剛安裝時的配置一樣了。具體可以參考數據源 My Syslog Source

 

OK.現在驗證吧。

點擊數據源上的顯示事件

右上角數據源選擇:Syslog IP,視圖會自動轉換成: Syslog Fields New

 

最後結果,IP已經出來了

 

對比一下Syslog Fields視圖

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章