實驗要求php
搭建可視化日誌蒐集分析平臺,用於集中搜集日誌,並經過可視化日誌分析工具呈現;html
Apps Server是要蒐集日誌的Nodes,能夠有多臺,這裏我只用1臺Node;node
Rsyslog Server是統一接收各Nodes提交過來的日誌,監聽在TCP/UDP 514節點;mysql
MySQL Server是用於存儲提交的日誌信息,作獨立服務器,也可作Cluster;sql
LogAnalyzer是一款基於LAMP的可視化日誌分析工具,後端查詢數據庫,將結果整理輸出;
數據庫
拓撲以下:
vim
實現機理後端
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;
實驗步驟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日誌
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。
rsyslog.conf默認的配置選項日誌蒐集仍然會生效!只不過保存在本地,若是不想保存在本地了,只須要註釋掉那行,只保留 @10.134.140.64 便可;
蒐集日誌信息是以 facility.priority 來規定的,如authpriv.*表示認證受權類的全部級別都蒐集
具體的分類和級別可使用man手冊。
實驗步驟3.簡單測試
如今一套簡單的日誌蒐集模型搭建完畢,全部的nodes上登陸認證受權日誌信息會被記錄提交給Rsyslog Server,並寫入數據庫中,那麼咱們嘗試錯誤登陸10.134.140.63這臺機器,而後查看數據庫呢!
3.1 模擬2次錯誤登陸
3.2 查詢MySQL數據庫
這裏爲了顯示直觀,我使用了Navicat For MySQL鏈接工具查看
成功,接下來咱們只須要整合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版本以下
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 具體目錄可依據實體狀況更改。
Next,肯定配置文件
Next,配置日誌顯示信息等
Next,指明後端MySQL數據庫鏈接信息
『這裏我理解出錯了,這裏若是Enable User Database會將LoyAnalyzper自身產生的數據保存到後端數據庫中,會在後端數據庫中插入相關表,而不是指定蒐集到的日誌源,日誌源配置真正實在Setp 7』
Next,在後端MySQL數據庫中建立表
Next,建立用於管理LogAnalyzper的帳號密碼
Next,在後端MySQL數據庫中建立第一條測試日誌消息
『真正指定蒐集日誌源的地方,這裏指定咱們的MySQL Server』
Next,完成!
4.4 經過網頁日誌記錄吧!
幾點小結:
這個架構中數據庫角色其實能夠直接裝在Rsyslog Server上,可是出於測試的目的,這是是剝離的
Rsyslog Server既能夠監聽在TCP514也能夠UDP514,不過一般推薦在UDP514,你懂的;
請注意:若是Nodes上指明瞭提交給Rsyslog Server蒐集,那麼建議將/etc/rsyslog.conf中其餘無關行註釋掉,即僅提交給遠程服務器,固然能夠適當指定一些高級別日誌信息再存放一份於本地;
MySQL遠程連接要受權,MySQL遠程連接要受權,MySQL遠程連接要受權,重要的話說三遍。
小規模的系統日誌蒐集這種架構還能夠,可是對於WEB服務器日誌收集顯然不適合,這種架構不適合大併發日誌模型,中小型能夠參考ELK日誌架構!