1 环境要求
将所有的服务器的日志都集中保存在一台rsyslog日志服务器中,mysql作为数据库,loganalyzer将服务器的日志数据进行分析展现,evtsys是windows服务器提交日志的客户端软件。
实验环境如下:
节点 | OS | IP | 网络 |
---|---|---|---|
rsyslog Server | Centos6.4 | 192.168.200.106 | 单网卡 |
Linux Client | Centos6.4 | 192.168.200.106 | 单网卡 |
Windows Client | Windows2008x64 | 192.168.200.31 | 单网卡 |
2 rsyslog+loganalyzer日志服务器的部署
2.1 配置rsyslog日志服务器
因为rsyslog
要把日志存到mysql
中,所以要有mysql
服务器,还要有rsyslog
配置文件加载。
2.1.1 连接mysql的模块
1 | [iyunv@rsyslog ~]# yum -y install rsyslog mysql-server rsyslog-mysql |
2.1.2 配置数据库
1 | [iyunv@rsyslog ~]# rpm -ql rsyslog-mysql #首先查看rsyslog-mysql安装生成了那些文件 |
2.1.3 修改rsyslog日志服务器配置文件
1 | [iyunv@rsyslog ~]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#" |
2.1.4 修改完成后,重启rsyslog服务
1 | [iyunv@rsyslog ~]# service rsyslog restart |
2.2 配置rsyslog客户端
2.2.1 修改配置文件
1 | [iyunv@mariadb ~]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#" |
2.2.2 修改完成后,重启rsyslog服务
1 | [iyunv@rsyslog ~]# service rsyslog restart |
2.3 验证客户端日志文件的存放
2.3.1 使用logger生成一条日志信息
1 | [iyunv@mariadb ~]# logger -p info "I'm mariadb" |
2.3.2 在rsyslog服务器上验证
1 | [iyunv@rsyslog ~]# mysql |
到这里,rsyslog
日志服务器就部署完成了,但此时日志处于rsyslog
日志服务器的mysql
数据库中,并不方便查看与管理,所以我们再部署一个loganalyzer
日志分析器,来减小日志管理的复杂度。
2.4 部署loganalyzer日志分析器
2.4.1 安装LAMP环境
1 | [iyunv# yum -y install httpd php php-mysql php-gd ~] |
2.4.2 解压loganalyzer源码包
1 | [iyunv@rsyslog ~]# tar xf loganalyzer-3.6.5.tar.gz |
2.4.3 配置httpd
修改DocumentRoot网页根目录
1 | [iyunv@rsyslog ~]# vim /etc/httpd/conf/httpd.conf |
2.4.4 配置httpd和mysql开机启动
1 | [iyunv@rsyslog ~]# chkconfig mysqld on |
2.4.5 创建loganalyzer数据库,并授权
1 | [iyunv@rsyslog ~]# mysql |
2.4.6 安装loganalyzer
2.4.6.1 安装界面
安装完成,enjoy it
2.5 Windows客户端的安装配置
2.5.1 安装Syslog日志客户端
1 | 下载Evtsys软件,分32位和64位安装方法一样。解压后将evtsys.dll、evtsys.exe复制到c:\windows\system32\下。 |
2.2.2 开启系统相关审计
打开windows组策略编辑器
(开始->运行 输入 gpedit.msc
) 在windows 设置-> 安全设置 -> 本地策略->审核策略中,打开你需要记录的windows日志
。evtsys
会实时的判断是否有新的windows日志产生,然后把新产生的日志转换成syslogd
可识别的格式,通过UDP
端口发送给syslogd
服务器。
3 Mysql数据库的优化的一些想法
随着mysql数据库中的记录越来越多,查询的速度会越来越慢。我们可以定期到数据表中删除较早以前的记录来减少数据量从而起到优化的作用。可以定期执行如下SQL语句:
1 | delete from SystemEvents(数据表名) where ReceivedAt(日期字段名)<curdate() - interval 3 month; |
//表示删除” SystemEvents
”数据表” ReceivedAt
”日期字段大于3个月的记录
也可以考虑使用其他数据库,比如具有循环功能的sqllite
数据库,不过这样的话就要进行二次开发了。