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 –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 ]
|
验证客户端的日志文件存放位置:
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,否则会报如下错误。