標籤:mysql rsyslog loganalyzer
實驗要求
搭建可視化日誌搜集分析平台,用於集中搜集日誌,並通過可視化日誌分析工具呈現;
Apps Server是要搜集日誌的Nodes,可以有多台,這裡我只用1台Node;
Rsyslog Server是統一接收各Nodes提交過來的日誌,監聽在TCP/UDP 514節點;
MySQL Server是用於儲存提交的日誌資訊,做獨立伺服器,也可做Cluster;
LogAnalyzer是一款基於LAMP的可視化日誌分析工具,後端查詢資料庫,將結果整理輸出;
拓撲如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/75/62/wKioL1Y4QdqQYF0qAAjhMN3X8AA023.bmp" title="Drawing13.bmp" alt="wKioL1Y4QdqQYF0qAAjhMN3X8AA023.bmp" />
實現機理
Linux上的Rsyslogd能將產生的日誌提交到遠程Log Service器上,Rsyslog Server不僅可以將日誌寫入本地檔案,還可以通過rsyslog-mysql模組將日誌寫入資料庫中。LogAnalyzer能夠對日誌資訊進行分析並可視化呈現出現,顯然通過查詢MySQL資料庫中儲存的日誌資訊即可完成!
實驗步驟1.部署MySQL Server
1.1 安裝MySQL
這裡不再贅述安裝過程,參考 MariaDB通用二進位部署手冊
1.2 建立Rsyslog依賴的資料庫
由於該架構中Rsyslog和MySQL是分離的,MySQL要想接受Rsyslog Server傳來的有特定格式的日誌資訊,那麼必須得有特定的資料庫,而且該資料庫中的表有特定欄位去接收特定日誌資訊。當然這不需要我們來定義。Rsyslog-mysql模組就已經內建了一個createDB.sql語句,能夠自動建立特定資料庫。
yum -y install rsyslog-mysqlmysql -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;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/75/62/wKioL1Y4RlHyYcgjAAG9VCEVLxk027.jpg" title="Image 6.png" alt="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日誌
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/75/65/wKiom1Y4SMGjadrSAAKAlOnykGQ635.jpg" title="Image 8.png" alt="wKiom1Y4SMGjadrSAAKAlOnykGQ635.jpg" />
1.3 重啟服務即可
service rsyslog restart
實驗步驟3.部署Nodes
所謂Nodes,即需要搜集資訊的Servers,只需要編輯主設定檔即可
vim /etc/rsyslog.conf在最後行,添加你要搜集並提交給Log Service器的日誌分類.層級authpriv.* @10.134.140.64
儲存並重啟服務!
請注意:這裡的含義是將authpriv.*的日誌資訊提交給Log Service器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次錯誤登入
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/75/65/wKiom1Y4TFOSX8c2AAU88DgnSpI893.bmp" title="BaiduShurufa_2015-11-3_13-54-59.bmp" alt="wKiom1Y4TFOSX8c2AAU88DgnSpI893.bmp" />
3.2 查詢MySQL資料庫
這裡為了顯示直觀,我使用了Navicat For MySQL串連工具查看
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/75/63/wKioL1Y4TTqSknZVAAR05D9yFyg923.jpg" title="Image 13.png" alt="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版本如下
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/75/67/wKiom1Y4Xe2Ss64cAAD4eaPO6-8880.jpg" title="Image 15.png" alt="wKiom1Y4Xe2Ss64cAAD4eaPO6-8880.jpg" />
4.2 下載LogAnalyzper並解壓到網站根目錄
LogAnalyzper的官網是http://loganalyzer.adiscon.com/
此處我選擇了最新版4.1.3來做實驗
wget tar -zxvf loganalyzer-4.1.3.tar.gzcp -r loganalyzer-4.1.3/src /var/www/html/logcp loganalyzer-4.1.3/contrib/* /var/www/html/logcd /var/www/html/logchmod +x configure.sh secure.sh./configure.sh./secure.shchmod 666 config.php
4.3 啟動httpd並進行初始化安裝配置
service httpd start
接著開啟瀏覽器,訪問http://10.134.140.66/log/install.php 具體目錄可依據實體情況更改。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/75/65/wKioL1Y4YoKim_YwAALC91un_0g101.jpg" title="Image 18.png" alt="wKioL1Y4YoKim_YwAALC91un_0g101.jpg" />
Next,確定設定檔
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/75/65/wKioL1Y4YumisuRLAAFelVszeY8216.jpg" title="Image 21.png" alt="wKioL1Y4YumisuRLAAFelVszeY8216.jpg" />
Next,配置日誌顯示資訊等
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/75/65/wKioL1Y4Y33zBTm0ABS3MPBoWTs044.bmp" title="a1.bmp" alt="wKioL1Y4Y33zBTm0ABS3MPBoWTs044.bmp" />
Next,指明後端MySQL資料庫連接資訊
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/75/68/wKiom1Y4ZCKgO8pdAAIPFLcgwq0353.bmp" title="a2.bmp" alt="wKiom1Y4ZCKgO8pdAAIPFLcgwq0353.bmp" />
Next,在後端MySQL資料庫中建立表
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/75/68/wKiom1Y4ZXWAvf_jABGayDPfRWg861.bmp" title="a3.bmp" alt="wKiom1Y4ZXWAvf_jABGayDPfRWg861.bmp" />
Next,建立用於管理LogAnalyzper的帳號密碼
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/75/66/wKioL1Y4Zb-A7-GRABAyaK9BrIc385.bmp" title="a4.bmp" alt="wKioL1Y4Zb-A7-GRABAyaK9BrIc385.bmp" />
Next,在後端MySQL資料庫中建立第一條測試日誌訊息
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/75/66/wKioL1Y4Zl_wRUWhABb9YDFh2y8937.bmp" title="a5.bmp" alt="wKioL1Y4Zl_wRUWhABb9YDFh2y8937.bmp" />
Next,完成!
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/75/66/wKioL1Y4ZkSwaLFwAA6hCOIJIYs265.bmp" title="a6.bmp" alt="wKioL1Y4ZkSwaLFwAA6hCOIJIYs265.bmp" />
4.4 通過網頁日誌記錄吧!
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/75/68/wKiom1Y4Z7yxYE7GAATRkrPiN5Q708.jpg" title="a7.png" alt="wKiom1Y4Z7yxYE7GAATRkrPiN5Q708.jpg" />
幾點小結:
這個架構中資料庫角色其實可以直接裝在Rsyslog Server上,但是出於測試的目的,這是是剝離的
Rsyslog Server既可以監聽在TCP514也可以UDP514,不過通常推薦在UDP514,你懂的;
請注意:如果Nodes上指明了提交給Rsyslog Server搜集,那麼建議將/etc/rsyslog.conf中其他無關行注釋掉,即僅提交給遠程伺服器,當然可以適當指定一些進階別日誌資訊再存放一份於本地;
MySQL遠程連結要授權,MySQL遠程連結要授權,MySQL遠程連結要授權,重要的話說三遍。
本文出自 “藍色倉庫” 部落格,請務必保留此出處http://bluebox.blog.51cto.com/8852456/1709167
Rsyslog+MySQL+LogAnalyzer部署Log Service器