一、简要说明
日志记录了对服务器系统的一切操作,因此,对服务器日志的管理,是我们每个运维人员每天的必要工作,也是评估服务器安全状况的有效手段之一,可是如何管理众多服务器的日志?如果要是一台一台看的话,怕是不止盯的眼花缭乱,累也的累坏了。
所以,我们要搭建一台日志服务器,要把所有服务器的日志通通存到这台远程日志服务器上来,这样,不仅可以集中管理、评估各服务器的安全状况,还可以减少各服务器的磁盘占用率。
即使所有服务器的日志都保存在一台服务器上的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> </code>
<code>mysql> 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> </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> 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> 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> 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> 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> flush privileges;</code>
<code>mysql> \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> use Syslog;</code>
<code>mysql> </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> create database loganalyzer;</code>
<code>Query OK, 1 row affected (0.04 sec)</code>
<code>mysql> 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>create database loganalyzer;</code>
<code>mysql>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>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,如需转载请自行联系原作者