Rsyslog+MySQL+LogAnalyzer部署日誌服務器

實驗要求php


  1. 搭建可視化日誌蒐集分析平臺,用於集中搜集日誌,並經過可視化日誌分析工具呈現;html

  2. Apps Server是要蒐集日誌的Nodes,能夠有多臺,這裏我只用1臺Node;node

  3. Rsyslog Server是統一接收各Nodes提交過來的日誌,監聽在TCP/UDP 514節點;mysql

  4. MySQL Server是用於存儲提交的日誌信息,作獨立服務器,也可作Cluster;sql

  5. LogAnalyzer是一款基於LAMP的可視化日誌分析工具,後端查詢數據庫,將結果整理輸出;
    數據庫

拓撲以下:
vim

wKioL1Y4QdqQYF0qAAjhMN3X8AA023.bmp


實現機理後端


Linux上的Rsyslogd能將產生的日誌提交到遠程日誌服務器上,Rsyslog Server不只能夠將日誌寫入本地文件,還能夠經過rsyslog-mysql模塊將日誌寫入數據庫中。LogAnalyzer可以對日誌信息進行分析並可視化呈現出現,顯然經過查詢MySQL數據庫中存儲的日誌信息便可完成!
瀏覽器


實驗步驟1.部署MySQL Serverbash


1.1 安裝MySQL

  這裏再也不贅述安裝過程,參考 MariaDB通用二進制部署手冊

1.2 建立Rsyslog依賴的數據庫

  因爲該架構中Rsyslog和MySQL是分離的,MySQL要想接受Rsyslog Server傳來的有特定格式的日誌信息,那麼必須得有特定的數據庫,並且該數據庫中的表有特定字段去接收特定日誌信息。固然這不須要咱們來定義。Rsyslog-mysql模塊就已經自帶了一個createDB.sql語句,可以自動建立特定數據庫。

yum -y install rsyslog-mysql
mysql -h localhost -u root -pzxczxc < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

這個SQL執行腳本的具體位置可能不一樣,使用rpm -ql /rsyslog-mysql能夠查詢到位置!

1.3 爲Syslog數據庫受權

  默認狀況MySQL不容許來自遠程的鏈接,這裏咱們建立一個專門的用戶來對Syslog數據庫有所有管理權限,而且能夠從遠程鏈接

mysql>GRANT ALL PRIVILEGES ON Syslog.* TO 'abc'@'10.134.140.65' IDENTIFIED BY 'zxczxc';
mysql>FLUSH PRIVILEGES;

wKioL1Y4RlHyYcgjAAG9VCEVLxk027.jpg


實驗步驟2.部署Rsyslog Server


1.1 安裝rsyslogd,安裝rsyslog-mysql模塊

  默認主流發行版都已安裝主程序,無需再安裝,若沒有#yum -y install rsyslogd

yum -y install rsyslog-mysql

1.2 編輯主配置文件

vim /etc/rsyslog.conf
#### MODULES ####
$ModLoad onmysql     --->加載鏈接mysql數據庫模塊
authpriv.* :onmysql:10.134.140.65,Syslog,abc,zxczxc
$ModLoad imudp
$UDPServerRun 514    --->監聽在udp514蒐集nodes日誌

wKiom1Y4SMGjadrSAAKAlOnykGQ635.jpg

1.3 重啓服務便可

service rsyslog restart

實驗步驟3.部署Nodes


所謂Nodes,即須要蒐集信息的Servers,只須要編輯主配置文件便可

vim /etc/rsyslog.conf
在最後行,添加你要蒐集並提交給日誌服務器的日誌分類.級別

authpriv.* @10.134.140.64

保存並重啓服務!

請注意:這裏的含義是將authpriv.*的日誌信息提交給日誌服務器10.134.140.64,目的端口默認就是步驟2中配置的udp514。

  1. rsyslog.conf默認的配置選項日誌蒐集仍然會生效!只不過保存在本地,若是不想保存在本地了,只須要註釋掉那行,只保留 @10.134.140.64 便可;

  2. 蒐集日誌信息是以 facility.priority 來規定的,如authpriv.*表示認證受權類的全部級別都蒐集

具體的分類和級別可使用man手冊。


實驗步驟3.簡單測試


如今一套簡單的日誌蒐集模型搭建完畢,全部的nodes上登陸認證受權日誌信息會被記錄提交給Rsyslog Server,並寫入數據庫中,那麼咱們嘗試錯誤登陸10.134.140.63這臺機器,而後查看數據庫呢!

3.1 模擬2次錯誤登陸

wKiom1Y4TFOSX8c2AAU88DgnSpI893.bmp

3.2 查詢MySQL數據庫

這裏爲了顯示直觀,我使用了Navicat For MySQL鏈接工具查看

wKioL1Y4TTqSknZVAAR05D9yFyg923.jpg


成功,接下來咱們只須要整合LogAnalyzer便可!


實驗步驟4.整合LogAnalyzer並測試


LogAnalyzer自身是PHP語言寫的,須要PHP引擎,顯然要和Apache結合,而日誌源在後端MySQL Server上,因此須要php-mysql驅動,因此直接搭建一套LAMP環境便可。能夠參考博文 編譯安裝LAMP

這裏我直接使用yum來安裝!

4.1 安裝LAMP環境

yum -y install httpd php php-mysql php-gd

我這裏yum源爲Aliyun的Centos-6,安裝的LAMP版本以下

wKiom1Y4Xe2Ss64cAAD4eaPO6-8880.jpg

4.2 下載LogAnalyzper並解壓到網站根目錄

LogAnalyzper的官網是http://loganalyzer.adiscon.com/

此處我選擇了最新版4.1.3來作試驗

wget 
tar -zxvf loganalyzer-4.1.3.tar.gz
cp -r loganalyzer-4.1.3/src /var/www/html/log
cp loganalyzer-4.1.3/contrib/* /var/www/html/log
cd /var/www/html/log
chmod +x configure.sh secure.sh
./configure.sh
./secure.sh
chmod 666 config.php

4.3 啓動httpd並進行初始化安裝配置

service httpd start

接着打開瀏覽器,訪問http://10.134.140.66/log/install.php 具體目錄可依據實體狀況更改。

wKioL1Y4YoKim_YwAALC91un_0g101.jpg


Next,肯定配置文件 

wKioL1Y4YumisuRLAAFelVszeY8216.jpg


Next,配置日誌顯示信息等

wKioL1Y4Y33zBTm0ABS3MPBoWTs044.bmp


Next,指明後端MySQL數據庫鏈接信息

『這裏我理解出錯了,這裏若是Enable User Database會將LoyAnalyzper自身產生的數據保存到後端數據庫中,會在後端數據庫中插入相關表,而不是指定蒐集到的日誌源,日誌源配置真正實在Setp 7』

wKiom1Y4ZCKgO8pdAAIPFLcgwq0353.bmp


Next,在後端MySQL數據庫中建立表

wKiom1Y4ZXWAvf_jABGayDPfRWg861.bmp


Next,建立用於管理LogAnalyzper的帳號密碼

wKioL1Y4Zb-A7-GRABAyaK9BrIc385.bmp


Next,在後端MySQL數據庫中建立第一條測試日誌消息

『真正指定蒐集日誌源的地方,這裏指定咱們的MySQL Server』

wKioL1Y4Zl_wRUWhABb9YDFh2y8937.bmp


Next,完成!

wKioL1Y4ZkSwaLFwAA6hCOIJIYs265.bmp


4.4 經過網頁日誌記錄吧!

wKiom1Y4Z7yxYE7GAATRkrPiN5Q708.jpg


幾點小結:


  1. 這個架構中數據庫角色其實能夠直接裝在Rsyslog Server上,可是出於測試的目的,這是是剝離的

  2. Rsyslog Server既能夠監聽在TCP514也能夠UDP514,不過一般推薦在UDP514,你懂的;

  3. 請注意:若是Nodes上指明瞭提交給Rsyslog Server蒐集,那麼建議將/etc/rsyslog.conf中其餘無關行註釋掉,即僅提交給遠程服務器,固然能夠適當指定一些高級別日誌信息再存放一份於本地;

  4. MySQL遠程連接要受權,MySQL遠程連接要受權,MySQL遠程連接要受權,重要的話說三遍。

  5. 小規模的系統日誌蒐集這種架構還能夠,可是對於WEB服務器日誌收集顯然不適合,這種架構不適合大併發日誌模型,中小型能夠參考ELK日誌架構!

相關文章
相關標籤/搜索