b)日志存储在指定的rsyslog服务器中

122859230.png

rsyslog客户端的配置:

1
2
3
4
5
6
7
8
9
[root@jie3 ~] # vim /etc/rsyslog.conf
#############/etc/rsyslog.conf###########################################
#*.info;mail.none;authpriv.none;cron.none         /var/log/messages
*.*                            @172.16.22.1   #添加此行,注释掉其他两行
#authpriv.*                                      /var/log/secure
########################################################################
[root@jie3 ~] # service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

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
[root@jie1 ~] # 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)
$ModLoad imudp             #开启支持upd的模块
$UDPServerRun 514         #允许接收udp 514的端口传来的日志
ModLoad imtcp             #开启支持tcp的模块
$InputTCPServerRun 514     #允许接收tcp 514的端口传来的日志
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog .d/*.conf
*.info;mail.none;authpriv.none; cron .none                 /var/log/messages
authpriv.*                                               /var/log/secure
mail.*                                                  - /var/log/maillog
cron .*                                                   /var/log/cron
*.emerg                                                 *
uucp,news.crit                                           /var/log/spooler
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
#################################
[root@jie1 ~] # service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
[root@jie1 ~] #


185051193.png

185123170.png


c)日志存储在指定的数据库服务器中

122921370.png


思路:

1、安装mysql服务器,且要安装rsyslog连接mysql的驱动

2、解决生成rsyslog服务器的日志特定的格式,

3、在rsyslog配置文件中加载连接mysql的模块,把日志存储到mysql中

rsyslog+Mysql服务器端的配置:

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
[root@jie1 log] # yum -y install mysql-server rsyslog-mysql mysql
#安装mysql服务器和rsyslog连接mysql的驱动
[root@jie1 ~] # 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
[root@jie1 ~] # service mysqld start  
Starting mysqld:                        [  OK  ]
[root@jie1 ~] # mysqladmin -u root password redhat
#设置mysql的密码
[root@jie1 ~] # mysql -u root -p
Enter password:   #登录mysql服务器
mysql> show databases; #显示数据库服务器中没有日志的数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql> \q
Bye
[root@jie1 ~] # cd /usr/share/doc/rsyslog-mysql-5.8.10/
#日志文件sql脚本的路径
[root@jie1 rsyslog-mysql-5.8.10] # ls
createDB.sql
[root@jie1 rsyslog-mysql-5.8.10] # mysql -u root -p < createDB.sql
Enter password:     #导入日志文件的sql脚本,生成日志文件的数据库
[root@jie1 rsyslog-mysql-5.8.10] # mysql -u root -p
Enter password:
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)
mysql> grant all on Syslog.* to 'syslogroot' @ '172.16.22.1' identified by 'syslogpass' ;   #设置用户访问数据库服务器中Syslog数据库的用户名和密码
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;   #重读授权表,及时生效
Query OK, 0 rows affected (0.00 sec)
mysql> \q
Bye
[root@jie1 rsyslog-mysql-5.8.10] #cd /
[root@jie1 /] # grep -v "^$" /etc/rsyslog.conf | grep -v "^#"
#####vim  /etc/ryslog.conf#####################################
$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:172.16.22.1,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
######################################################################
[root@jie1 /] # service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:        

防火墙iptables配置,以便可以进行日志收集

iptables -A INPUT -p udp -m udp --dport 514 -j ACCEPT

iptables -A INPUT -p tdp -m tdp --dport 514 -j ACCEPT

iptables  -A  INPUT -p tcp –dport 3306 -j ACCEPT

rsyslog的linux客户端的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@jie3 ~] # sed -e '/^$/d' -e '/^#/d' /etc/rsyslog.conf
################ /etc/rsyslog.conf######################
$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
*.*       @172.16.22.1 #添加这行用于和服务器通信,这里172.16.16.21为日志服务器ip地址
*.*       :ommysql:172.16.22.1,Syslog,syslogroot,syslogpass #添加这行,把其他行都注释掉,这行表示把所有的设施的所有日志都记录到数据库服务器中的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
####################################################################
[root@jie3 ~] # service rsyslog restart
Shutting down system logger:                               [  OK  ]

 Starting system logger:                                    [  OK  ]

[root@jie3 ~]#service rsyslog restart

验证客户端的日志文件存放位置:

1)验证是否存放在客户端本地

130845491.png

2)验证是否存在服务器的/var/log/messages里面

130918721.png

3)验证是否存放在服务器的mysql数据库中

130938499.png

rsyslog的winodws客户端的配置:

evtsys下载地址:http://code.google.com/p/eventlog-to-syslog/ 选择对应系统版本的文件;

将解压好的evtsys文件复制到C:\windows\system32文件夹下(64位操作系统也是相同目录)

安装evtsys为服务, evtsys.exe -i -h 172.16.22.1(其中172.16.22.1为日志服务器地址)

手动启动服务, 或者使用命令:net start “eventlog to syslog”

如果多机器部署的话,可以将上述三个命令写到批处理中自动执行。

虽然日志存放在mysql数据库服务器中,是解决了日志集中管理,但是存放在mysql服务器中让管理人员头疼的是不便于查看这些大量的日志,于是乎搭建一个日志分析工具就非常的有必要性了。


四、基于web的loganalyzer日志分析工具的搭建

本环境是针对上面的日志存放在mysql服务器中不方便查看,配置loganalyzer日志分析工具来分析查看日志

rsyslog服务器的配置步骤:

1、安装httpd,php,php-gd,php-mysql

httpd用来提供web服务

php使apache支持php,因为loganalyzer是用php编写

php-mysql用于loganalyzer连接数据库

php-gd用于绘图

2
3
4
[root@jie1 ~] # yum -y install httpd php php-mysql php-gd
[root@jie1 ~] # mkdir -pv /var/www/html/loganalyzer  #存放loganalyzer的网页文件
mkdir : created directory ` /web '
mkdir : created directory ` /web/loganalyzer '

2、下载loganalyzer源码包

1
2
3
4
5
6
7
8
9
10
11
12
13
14

 [root@jie1 ~]# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.4.tar.gz

[root@jie1 ~]#ls

anaconda-ks.cfg   install .log   install .log.syslog  loganalyzer-3.6.4. tar .gz
[root@jie1 ~] # tar xf loganalyzer-3.6.4.tar.gz
[root@jie1 ~] # cd loganalyzer-3.6.4
[root@jie1 loganalyzer-3.6.4] # ls
ChangeLog  contrib  COPYING  doc  INSTALL  src
[root@jie1 loganalyzer-3.6.4] # mv src/* /var/www/html/loganalyzer/  #把src目录的所有文件移到存放loganalyzer的文件中
[root@jie1 loganalyzer-3.6.4] # cd contrib/
[root@jie1 contrib] # ls
configure.sh  secure.sh
[root@jie1 contrib] # mv ./*.sh  /var/www/html/loganalyzer/  #把脚本文件也移到loganalyzer文件中

3、执行脚本

1
2
[root@jie1 contrib] #cd /var/www/html/loganalyzer/
[root@jie1 loganalyzer] # bash configure.sh

4、修改httpd的配置文件,新建一个虚拟主机

1
2
3
4

vim /etc/httpd/conf/httpd.conf

##################
ServerName 172.16.22.1:80
DirectoryIndex index.php index.html index.html.var


[root@jie1 loganalyzer] # service httpd restart  重启httpd服务
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]


5、安装loganalyzer,在浏览器输入http://172.16.22.1/loganalyzer

220052421.png

220109825.png

220131890.png

220231409.png220245561.png220302359.png220321966.png220357988.png


常见问题

1、  中文乱码

# vi /var/www/html/syslog/include/functions_common.php

1>return htmlentities($myStr, ENT_NOQUOTES, $content['HeaderDefaultEncoding']); //”UTF-8″);

2>return htmlentities($myStr,ENT_QUOTES,”UTF-8″);

#loganalyzer乱码的原因是使用了,htmlentities对输出进行编码,如果有中文会出现问题,应该指定字符集,将1>替换为2>便可。return htmlentities($myStr,ENT_QUOTES,”UTF-8″);

2、因为/var/log文件夹下数据均为只读,添加可读权限# chmod a+r /var/log/messages,否则会报如下错误。

002