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

rsyslog客户端的配置:
[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服务器的配置:
[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服务器端的配置:
[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客户端的配置:
[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)验证是否存放在客户端本地

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用于绘图
[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源码包
[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、执行脚本
[root@jie1 contrib] #cd /var/www/html/loganalyzer/
[root@jie1 loganalyzer] # bash configure.sh
|
4、修改httpd的配置文件,新建一个虚拟主机
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








常见问题
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,否则会报如下错误。
转载于:https://blog.51cto.com/hao360/1344742