天天看點

部署rsyslog+loganalyzer日志伺服器

一、簡要說明 

    日志記錄了對伺服器系統的一切操作,是以,對伺服器日志的管理,是我們每個運維人員每天的必要工作,也是評估伺服器安全狀況的有效手段之一,可是如何管理衆多伺服器的日志?如果要是一台一台看的話,怕是不止盯的眼花缭亂,累也的累壞了。

    是以,我們要搭建一台日志伺服器,要把所有伺服器的日志通通存到這台遠端日志伺服器上來,這樣,不僅可以集中管理、評估各伺服器的安全狀況,還可以減少各伺服器的磁盤占用率。

    即使所有伺服器的日志都儲存在一台伺服器上的mysql(也可存到本地磁盤)了,如何管理、分析這些日志也是一個問題,好在有loganalyzer這個日志分析工具,它會讓日志分析變得so easy!

    伺服器說明:192.168.200.106是rsyslog日志伺服器,其它伺服器均為rsyslog用戶端

二、部署rsyslog+loganalyzer日志伺服器

    我們的首要工作即是配置好rsyslog伺服器,接下來的任務即是部署loganalyzer這個日志分析工具,這就是一個LAMP,直接yum安裝,配置配置參數就搞定了。但此次,在公司部署的時候,卻碰到幾個問題,導緻日志伺服器不能正常擷取各伺服器的日志資料,是以,部署過程中還是需要細心的,下面就進入正題。

1、配置rsyslog日志伺服器

(1)安裝軟體包

    因為rsyslog要把日志存到mysql中,是以要有mysql伺服器,還要有rsyslog配置檔案加載連接配接mysql的子產品

1

<code>[root@rsyslog ~]</code><code># yum -y install rsyslog mysql-server rsyslog-mysql</code>

(2)配置資料庫

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

<code>[root@rsyslog ~]</code><code># rpm -ql rsyslog-mysql            #首先檢視rsyslog-mysql安裝生成了那些檔案</code>

<code>/lib64/rsyslog/ommysql</code><code>.so</code>

<code>/usr/share/doc/rsyslog-mysql-5</code><code>.8.10</code>

<code>/usr/share/doc/rsyslog-mysql-5</code><code>.8.10</code><code>/createDB</code><code>.sql   </code><code>#此sql檔案就是需要導入到資料庫中的資料檔案</code>

<code>#</code>

<code>[root@rsyslog ~]</code><code># service mysqld start             #啟動mysqld服務</code>

<code>[root@rsyslog ~]</code><code># mysql                            #連接配接mysql</code>

<code>Welcome to the MySQL monitor.  Commands end with ; or \g.</code>

<code>Your MySQL connection </code><code>id</code> <code>is 2</code>

<code>Server version: 5.1.73 Source distribution</code>

<code>Copyright (c) 2000, 2013, Oracle and</code><code>/or</code> <code>its affiliates. All rights reserved.</code>

<code>Oracle is a registered trademark of Oracle Corporation and</code><code>/or</code> <code>its</code>

<code>affiliates. Other names may be trademarks of their respective</code>

<code>owners.</code>

<code>Type </code><code>'help;'</code> <code>or </code><code>'\h'</code> <code>for</code> <code>help. Type </code><code>'\c'</code> <code>to </code><code>clear</code> <code>the current input statement.</code>

<code>mysql&gt; </code>

<code>mysql&gt; show databases;</code>

<code>+--------------------+</code>

<code>| Database           |</code>

<code>| information_schema |</code>

<code>| mysql              |</code>

<code>| </code><code>test</code>               <code>|</code>

<code>3 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)  </code><code>#此時,隻有3個庫</code>

<code>mysql&gt; </code><code>source</code> <code>/usr/share/doc/rsyslog-mysql-5</code><code>.8.10</code><code>/createDB</code><code>.sql;   </code><code>#導入rsyslog的資料檔案</code>

<code>| Syslog             |</code>

<code>4 rows </code><code>in</code> <code>set</code> <code>(0.01 sec)</code>

<code>mysql&gt; use Syslog;              </code><code>#Syslog即是記錄日志檔案的資料庫</code>

<code>Reading table information </code><code>for</code> <code>completion of table and column names</code>

<code>You can turn off this feature to get a quicker startup with -A</code>

<code>Database changed</code>

<code>mysql&gt; show tables;</code>

<code>+------------------------+</code>

<code>| Tables_in_Syslog       |</code>

<code>| SystemEvents           |</code>

<code>| SystemEventsProperties |</code>

<code>2 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

<code>#接下來,即是為rsyslog伺服器授權。此處一定是rsyslog伺服器的IP</code>

<code>#如果寫成各伺服器的IP,那就錯了</code>

<code>mysql&gt; grant all on Syslog.* to </code><code>'syslogroot'</code><code>@</code><code>'127.0.0.1'</code> <code>identified by </code><code>'syslogpass'</code><code>;</code>

<code>Query OK, 0 rows affected (0.00 sec)</code>

<code>mysql&gt; grant all on Syslog.* to </code><code>'syslogroot'</code><code>@</code><code>'192.168.200.106'</code> <code>identified by </code><code>'syslogpass'</code><code>;</code>

<code>Query OK, 0 rows affected (0.04 sec)</code>

<code>mysql&gt; flush privileges;</code>

<code>mysql&gt; \q</code>

<code>Bye</code>

(3)修改rsyslog日志伺服器配置檔案

<code>[root@rsyslog ~]</code><code># grep -v "^$" /etc/rsyslog.conf | grep -v "^#"</code>

<code>$ModLoad imuxsock</code>

<code>$ModLoad imklog</code>

<code>$ModLoad imudp            </code><code>#加載udp的子產品</code>

<code>$UDPServerRun 514         </code><code>#允許接收udp 514的端口傳來的日志</code>

<code>$ModLoad imtcp            </code><code>#加載tcp的子產品</code>

<code>$InputTCPServerRun 514    </code><code>#允許接收tcp 514的端口傳來的日志</code>

<code>$ModLoad ommysql          </code><code>#加載mysql的子產品</code>

<code>$ActionFileDefaultTemplateRSYSLOG_TraditionalFileFormat</code>

<code>$IncludeConfig </code><code>/etc/rsyslog</code><code>.d/*.conf</code>

<code>*.*       :ommysql:192.168.200.106,Syslog,syslogroot,syslogpass      </code><code>#添加此行,所有設施的所有日志都記錄到此資料庫伺服器的Syslog資料庫中,以syslogroot使用者,syslogpass密碼通路資料庫</code>

<code>local7.*                          </code><code>/var/log/boot</code><code>.log</code>

<code>$template SpiceTmpl,</code><code>"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"</code>

<code>:programname, startswith, </code><code>"spice-vdagent"</code>   <code>/var/log/spice-vdagent</code><code>.log;SpiceTmpl</code>

(4)修改完成後,重新開機rsyslog服務

<code>[root@rsyslog ~]</code><code># service rsyslog restart</code>

<code>Shutting down system logger:                               [  OK  ]</code>

<code>Starting system logger:                                    [  OK  ]</code>

2、配置rsyslog用戶端

(1)修改配置檔案

<code>[root@mariadb ~]</code><code># grep -v "^$" /etc/rsyslog.conf | grep -v "^#"</code>

<code>$ModLoad imuxsock </code><code># provides support for local system logging (e.g. via logger command)</code>

<code>$ModLoad imklog   </code><code># provides kernel logging support (previously done by rklogd)</code>

<code>$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat</code>

<code>*.*       @192.168.200.106</code>

<code>*.*       :ommysql:192.168.200.106,Syslog,syslogroot,syslogpass</code>

(2)修改完成後,重新開機rsyslog服務

驗證用戶端日志檔案的存放

(1)使用logger生成一條日志資訊

<code>[root@mariadb ~]</code><code># logger -p info "I'm mariadb"</code>

(2)在rsyslog伺服器上驗證

<code>[root@rsyslog ~]</code><code># mysql</code>

<code>mysql&gt; use Syslog;</code>

<code>mysql&gt; </code><code>select</code> <code>* from SystemEvents\G</code>

<code>*************************** 279. row ***************************</code>

<code>                </code><code>ID: 279</code>

<code>        </code><code>CustomerID: NULL</code>

<code>        </code><code>ReceivedAt: 2014-08-13 20:07:39</code>

<code>DeviceReportedTime: 2014-08-13 20:07:40</code>

<code>          </code><code>Facility: 1</code>

<code>          </code><code>Priority: 6</code>

<code>          </code><code>FromHost: mariadb</code>

<code>           </code><code>Message:  I'm mariadb        </code><code>#我在做的時候,就是因為第二部的1的(2)中mysql授權時,寫的是用戶端IP,導緻這裡擷取不到資料。</code>

<code>        </code><code>NTSeverity: NULL                </code><code>#是以,在資料庫授權的時候,要授權的是rsyslog日志伺服器的IP</code>

<code>        </code><code>Importance: NULL</code>

<code>       </code><code>EventSource: NULL</code>

<code>         </code><code>EventUser: NULL</code>

<code>     </code><code>EventCategory: NULL</code>

<code>           </code><code>EventID: NULL</code>

<code>   </code><code>EventBinaryData: NULL</code>

<code>      </code><code>MaxAvailable: NULL</code>

<code>         </code><code>CurrUsage: NULL</code>

<code>          </code><code>MinUsage: NULL</code>

<code>          </code><code>MaxUsage: NULL</code>

<code>        </code><code>InfoUnitID: 1</code>

<code>         </code><code>SysLogTag: root:</code>

<code>      </code><code>EventLogType: NULL</code>

<code>   </code><code>GenericFileName: NULL</code>

<code>          </code><code>SystemID: NULL</code>

<code>         </code><code>processid: </code>

<code>          </code><code>checksum: 0</code>

<code>279 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

到這裡,rsyslog日志伺服器就部署完成了,但此時日志處于rsyslog日志伺服器的mysql資料庫中,并不友善檢視與管理,是以我們再部署一個loganalyzer日志分析器,來減小日志管理的複雜度

三、部署loganalyzer日志分析器

1、安裝LAMP環境

<code>[root@rsyslog ~]</code><code># yum -y install httpd php php-mysql php-gd</code>

<code>[root@rsyslog ~]</code><code># mkdir /var/www/html/loganalyzer/</code>

<code>mkdir</code><code>: created directory `</code><code>/var/www/html/loganalyzer/</code><code>'</code>

2、解壓loganalyzer源碼包

<code>[root@rsyslog ~]</code><code># tar xf loganalyzer-3.6.5.tar.gz</code>

<code>[root@rsyslog ~]</code><code># cd loganalyzer-3.6.5</code>

<code>[root@rsyslog loganalyzer-3.6.5]</code><code># </code>

<code>[root@rsyslog loganalyzer-3.6.5]</code><code># ls</code>

<code>ChangeLog  contrib  COPYING  doc  INSTALL  src</code>

<code>[root@rsyslog loganalyzer-3.6.5]</code><code># mv src/* /var/www/html/loganalyzer/          #src下是php的網頁檔案</code>

<code>[root@rsyslog loganalyzer-3.6.5]</code><code># ls contrib/</code>

<code>configure.sh  secure.sh</code>

<code>[root@rsyslog loganalyzer-3.6.5]</code><code># mv contrib/* /var/www/html/loganalyzer/      #contrib目錄下的兩個腳本,可以打開看看</code>

<code>[root@rsyslog loganalyzer-3.6.5]</code><code># cd /var/www/html/loganalyzer/</code>

<code>[root@rsyslog loganalyzer]</code><code># sh configure.sh                                    #執行腳本</code>

3、配置httpd

    修改DocumentRoot網頁根目錄

<code>[root@rsyslog ~]</code><code># vim /etc/httpd/conf/httpd.conf </code>

<code>DocumentRoot </code><code>"/var/www/html/loganalyzer"</code>

<code>[root@rsyslog ~]</code><code># service httpd start</code>

4、配置httpd和mysql開機啟動

<code>[root@rsyslog ~]</code><code># chkconfig mysqld on</code>

<code>[root@rsyslog ~]</code><code># chkconfig httpd on</code>

5、建立loganalyzer資料庫,并授權

<code>Enter password:</code>

<code>mysql&gt; create database loganalyzer;</code>

<code>Query OK, 1 row affected (0.04 sec)</code>

<code>mysql&gt; grant all on loganalyzer.* to dianyi@</code><code>'192.168.200.106'</code> <code>identified by </code><code>'dianyi123'</code><code>;</code>

6、安裝loganalyzer

(1)安裝界面

<a href="http://s3.51cto.com/wyfs02/M00/45/D3/wKioL1PsIlfiOLZeAABquvXDTC4299.png" target="_blank"></a>

(2)step 1

<a href="http://s3.51cto.com/wyfs02/M00/45/D2/wKiom1PsIVTTUlnbAADM3WKzmDk997.png" target="_blank"></a>

(3)step 2

<a href="http://s3.51cto.com/wyfs02/M01/45/D3/wKioL1PsIonz2zexAADqKOiUPOM107.png" target="_blank"></a>

(4)setp 3

    在這一步,需要建立一個資料庫來授權監控伺服器通路

<code>mysql&gt;create database loganalyzer;</code>

<code>mysql&gt;grant all on loganalyzer.* to loguser@</code><code>'192.168.200.106'</code> <code>identified by </code><code>'dianyi_888'</code><code>;</code>

<code>mysql&gt;flush privileges;</code>

<a href="http://s3.51cto.com/wyfs02/M01/45/D2/wKiom1PsIYaixqQbAAEZ8AIpcvc759.png" target="_blank"></a>

(5)setp 4

<a href="http://s3.51cto.com/wyfs02/M02/45/D3/wKioL1PsIraDnTUFAADZM7ZNkGk359.png" target="_blank"></a>

(6)setp 5

<a href="http://s3.51cto.com/wyfs02/M02/45/D4/wKioL1PsIs7RkNMTAAKJgP4gbwE940.png" target="_blank"></a>

(7)step 6

<a href="http://s3.51cto.com/wyfs02/M00/45/D4/wKioL1PsIumTCKMbAAB_sTB70ns683.png" target="_blank"></a>

(8)setp 7

<a href="http://s3.51cto.com/wyfs02/M01/45/D4/wKioL1PsIv_ADEgwAADnh60ziIo232.png" target="_blank"></a>

(9)setp 8

<a href="http://s3.51cto.com/wyfs02/M02/45/D2/wKiom1PsIf3SUHv8AABN8J_yFCY473.png" target="_blank"></a>

(10)開始報錯

<a href="http://s3.51cto.com/wyfs02/M02/45/D4/wKioL1PsIynRWp_OAAEdNAQ1GfY306.png" target="_blank"></a>

排錯階段

1、重新安裝

<a href="http://s3.51cto.com/wyfs02/M02/45/D4/wKioL1PsI1XjP7MxAABIUlA92OQ550.png" target="_blank"></a>

2、修改表名為正确的表名

<a href="http://s3.51cto.com/wyfs02/M00/45/D4/wKioL1PsI2jhZr3gAADcNzodDiY820.png" target="_blank"></a>

3、安裝完成,enjoy it

<a href="http://s3.51cto.com/wyfs02/M01/45/D4/wKioL1PsI4Xzsae8AAJd-IwfiuI760.png" target="_blank"></a>

本文轉自 nmshuishui 51CTO部落格,原文連結:http://blog.51cto.com/nmshuishui/1539784,如需轉載請自行聯系原作者