一、简要说明
日志记录了对服务器系统的一切操作,因此,对服务器日志的管理,是我们每个运维人员每天的必要工作,也是评估服务器安全状况的有效手段之一,可是如何管理众多服务器的日志?如果要是一台一台看的话,怕是不止盯的眼花缭乱,累也的累坏了。
所以,我们要搭建一台日志服务器,要把所有服务器的日志通通存到这台远程日志服务器上来,这样,不仅可以集中管理、评估各服务器的安全状况,还可以减少各服务器的磁盘占用率。
即使所有服务器的日志都保存在一台服务器上的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
|
[root@rsyslog ~] # yum -y install rsyslog mysql-server rsyslog-mysql
|
(2)配置数据库
1
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
|
[root@rsyslog ~] # rpm -ql rsyslog-mysql #首先查看rsyslog-mysql安装生成了那些文件
/lib64/rsyslog/ommysql .so
/usr/share/doc/rsyslog-mysql-5 .8.10
/usr/share/doc/rsyslog-mysql-5 .8.10 /createDB .sql #此sql文件就是需要导入到数据库中的数据文件
# [root@rsyslog ~] # service mysqld start #启动mysqld服务
[root@rsyslog ~] # mysql #连接mysql
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2
Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and /or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and /or its
affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> mysql> mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test |
+--------------------+ 3 rows in set (0.00 sec) #此时,只有3个库
# mysql> source /usr/share/doc/rsyslog-mysql-5 .8.10 /createDB .sql; #导入rsyslog的数据文件
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | Syslog | | mysql | | test |
+--------------------+ 4 rows in set (0.01 sec)
mysql> use Syslog; #Syslog即是记录日志文件的数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +------------------------+ | Tables_in_Syslog | +------------------------+ | SystemEvents | | SystemEventsProperties | +------------------------+ 2 rows in set (0.00 sec)
# #接下来,即是为rsyslog服务器授权。此处一定是rsyslog服务器的IP #如果写成各服务器的IP,那就错了 mysql> grant all on Syslog.* to 'syslogroot' @ '127.0.0.1' identified by 'syslogpass' ;
Query OK, 0 rows affected (0.00 sec) mysql> grant all on Syslog.* to 'syslogroot' @ '192.168.200.106' identified by 'syslogpass' ;
Query OK, 0 rows affected (0.04 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> \q Bye |
(3)修改rsyslog日志服务器配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@rsyslog ~] # grep -v "^$" /etc/rsyslog.conf | grep -v "^#"
$ModLoad imuxsock $ModLoad imklog $ModLoad imudp #加载udp的模块
$UDPServerRun 514 #允许接收udp 514的端口传来的日志
$ModLoad imtcp #加载tcp的模块
$InputTCPServerRun 514 #允许接收tcp 514的端口传来的日志
$ModLoad ommysql #加载mysql的模块
$ActionFileDefaultTemplateRSYSLOG_TraditionalFileFormat $IncludeConfig /etc/rsyslog .d/*.conf
*.* :ommysql:192.168.200.106,Syslog,syslogroot,syslogpass #添加此行,所有设施的所有日志都记录到此数据库服务器的Syslog数据库中,以syslogroot用户,syslogpass密码访问数据库
local7.* /var/log/boot .log
$template SpiceTmpl, "%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
:programname, startswith, "spice-vdagent" /var/log/spice-vdagent .log;SpiceTmpl
|
(4)修改完成后,重启rsyslog服务
1
2
3
|
[root@rsyslog ~] # service rsyslog restart
Shutting down system logger: [ OK ] Starting system logger: [ OK ] |
2、配置rsyslog客户端
(1)修改配置文件
1
2
3
4
5
6
7
8
9
|
[root@mariadb ~] # grep -v "^$" /etc/rsyslog.conf | grep -v "^#"
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $IncludeConfig /etc/rsyslog .d/*.conf
*.* @192.168.200.106 *.* :ommysql:192.168.200.106,Syslog,syslogroot,syslogpass $template SpiceTmpl, "%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
:programname, startswith, "spice-vdagent" /var/log/spice-vdagent .log;SpiceTmpl
|
(2)修改完成后,重启rsyslog服务
1
2
3
|
[root@rsyslog ~] # service rsyslog restart
Shutting down system logger: [ OK ] Starting system logger: [ OK ] |
验证客户端日志文件的存放
(1)使用logger生成一条日志信息
1
|
[root@mariadb ~] # logger -p info "I'm mariadb"
|
(2)在rsyslog服务器上验证
1
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
|
[root@rsyslog ~] # mysql
mysql> use Syslog; mysql> select * from SystemEvents\G
*************************** 279. row *************************** ID: 279
CustomerID: NULL
ReceivedAt: 2014-08-13 20:07:39
DeviceReportedTime: 2014-08-13 20:07:40 Facility: 1
Priority: 6
FromHost: mariadb
Message: I'm mariadb #我在做的时候,就是因为第二部的1的(2)中mysql授权时,写的是客户端IP,导致这里获取不到数据。
NTSeverity: NULL #因此,在数据库授权的时候,要授权的是rsyslog日志服务器的IP
Importance: NULL
EventSource: NULL
EventUser: NULL
EventCategory: NULL
EventID: NULL
EventBinaryData: NULL
MaxAvailable: NULL
CurrUsage: NULL
MinUsage: NULL
MaxUsage: NULL
InfoUnitID: 1
SysLogTag: root:
EventLogType: NULL
GenericFileName: NULL
SystemID: NULL
processid:
checksum: 0
279 rows in set (0.00 sec)
|
到这里,rsyslog日志服务器就部署完成了,但此时日志处于rsyslog日志服务器的mysql数据库中,并不方便查看与管理,所以我们再部署一个loganalyzer日志分析器,来减小日志管理的复杂度
三、部署loganalyzer日志分析器
1、安装LAMP环境
1
2
3
|
[root@rsyslog ~] # yum -y install httpd php php-mysql php-gd
[root@rsyslog ~] # mkdir /var/www/html/loganalyzer/
mkdir : created directory ` /var/www/html/loganalyzer/ '
|
2、解压loganalyzer源码包
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@rsyslog ~] # tar xf loganalyzer-3.6.5.tar.gz
[root@rsyslog ~] # cd loganalyzer-3.6.5
[root@rsyslog loganalyzer-3.6.5] #
[root@rsyslog loganalyzer-3.6.5] # ls
ChangeLog contrib COPYING doc INSTALL src [root@rsyslog loganalyzer-3.6.5] # mv src/* /var/www/html/loganalyzer/ #src下是php的网页文件
[root@rsyslog loganalyzer-3.6.5] # ls contrib/
configure.sh secure.sh [root@rsyslog loganalyzer-3.6.5] # mv contrib/* /var/www/html/loganalyzer/ #contrib目录下的两个脚本,可以打开看看
# [root@rsyslog loganalyzer-3.6.5] # cd /var/www/html/loganalyzer/
[root@rsyslog loganalyzer] # sh configure.sh #执行脚本
|
3、配置httpd
修改DocumentRoot网页根目录
1
2
3
4
|
[root@rsyslog ~] # vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html/loganalyzer"
# [root@rsyslog ~] # service httpd start
|
4、配置httpd和mysql开机启动
1
2
|
[root@rsyslog ~] # chkconfig mysqld on
[root@rsyslog ~] # chkconfig httpd on
|
5、创建loganalyzer数据库,并授权
1
2
3
4
5
6
7
8
|
[root@rsyslog ~] # mysql
Enter password: mysql> create database loganalyzer; Query OK, 1 row affected (0.04 sec) mysql> grant all on loganalyzer.* to dianyi@ '192.168.200.106' identified by 'dianyi123' ;
Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) |
6、安装loganalyzer
(1)安装界面
(2)step 1
(3)step 2
(4)setp 3
在这一步,需要建立一个数据库来授权监控服务器访问
1
2
3
|
mysql>create database loganalyzer; mysql>grant all on loganalyzer.* to loguser@ '192.168.200.106' identified by 'dianyi_888' ;
mysql>flush privileges; |
(5)setp 4
(6)setp 5
(7)step 6
(8)setp 7
(9)setp 8
(10)开始报错
排错阶段
1、重新安装
2、修改表名为正确的表名
3、安装完成,enjoy it