b)日志存储在指定的rsyslog服务器中
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 ~]
#
|
c)日志存储在指定的数据库服务器中
思路:
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 �Cdport 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 ]
|
验证客户端的日志文件存放位置:
1)验证是否存放在客户端本地
2)验证是否存在服务器的/var/log/messages里面
3)验证是否存放在服务器的mysql数据库中
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
|
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
|
##################
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
常见问题
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,否则会报如下错误。