实验要求
搭建可视化日志搜集分析平台,用于集中搜集日志,并通过可视化日志分析工具呈现;
Apps Server是要搜集日志的Nodes,可以有多台,这里我只用1台Node;
Rsyslog Server是统一接收各Nodes提交过来的日志,监听在TCP/UDP 514节点;
MySQL Server是用于存储提交的日志信息,做独立服务器,也可做Cluster;
LogAnalyzer是一款基于LAMP的可视化日志分析工具,后端查询数据库,将结果整理输出;
拓扑如下:
实现机理
Linux上的Rsyslogd能将产生的日志提交到远程日志服务器上,Rsyslog Server不仅可以将日志写入本地文件,还可以通过rsyslog-mysql模块将日志写入数据库中。LogAnalyzer能够对日志信息进行分析并可视化呈现出现,显然通过查询MySQL数据库中存储的日志信息即可完成!
实验步骤1.部署MySQL Server
1.1 安装MySQL
这里不再赘述安装过程,参考 MariaDB通用二进制部署手册
1.2 创建Rsyslog依赖的数据库
由于该架构中Rsyslog和MySQL是分离的,MySQL要想接受Rsyslog Server传来的有特定格式的日志信息,那么必须得有特定的数据库,而且该数据库中的表有特定字段去接收特定日志信息。当然这不需要我们来定义。Rsyslog-mysql模块就已经自带了一个createDB.sql语句,能够自动创建特定数据库。
yum -y install rsyslog-mysql mysql -h localhost -u root -pzxczxc < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
这个SQL执行脚本的具体位置可能不同,使用rpm -ql /rsyslog-mysql可以查询到位置!
1.3 为Syslog数据库授权
默认情况MySQL不允许来自远程的连接,这里我们创建一个专门的用户来对Syslog数据库有全部管理权限,并且可以从远程连接
mysql>GRANT ALL PRIVILEGES ON Syslog.* TO 'abc'@'10.134.140.65' IDENTIFIED BY 'zxczxc'; mysql>FLUSH PRIVILEGES;
实验步骤2.部署Rsyslog Server
1.1 安装rsyslogd,安装rsyslog-mysql模块
默认主流发行版都已安装主程序,无需再安装,若没有#yum -y install rsyslogd
yum -y install rsyslog-mysql
1.2 编辑主配置文件
vim /etc/rsyslog.conf #### MODULES #### $ModLoad onmysql --->加载连接mysql数据库模块 authpriv.* :onmysql:10.134.140.65,Syslog,abc,zxczxc $ModLoad imudp $UDPServerRun 514 --->监听在udp514搜集nodes日志
1.3 重启服务即可
service rsyslog restart
实验步骤3.部署Nodes
所谓Nodes,即需要搜集信息的Servers,只需要编辑主配置文件即可
vim /etc/rsyslog.conf 在最后行,添加你要搜集并提交给日志服务器的日志分类.级别 authpriv.* @10.134.140.64
保存并重启服务!
请注意:这里的含义是将authpriv.*的日志信息提交给日志服务器10.134.140.64,目的端口默认就是步骤2中配置的udp514。
rsyslog.conf默认的配置选项日志搜集仍然会生效!只不过保存在本地,如果不想保存在本地了,只需要注释掉那行,只保留 @10.134.140.64 即可;
搜集日志信息是以 facility.priority 来规定的,如authpriv.*表示认证授权类的所有级别都搜集
具体的分类和级别可以使用man手册。
实验步骤3.简单测试
现在一套简单的日志搜集模型搭建完毕,所有的nodes上登录认证授权日志信息会被记录提交给Rsyslog Server,并写入数据库中,那么我们尝试错误登录10.134.140.63这台机器,然后查看数据库呢!
3.1 模拟2次错误登录
3.2 查询MySQL数据库
这里为了显示直观,我使用了Navicat For MySQL连接工具查看
成功,接下来我们只需要整合LogAnalyzer即可!
实验步骤4.整合LogAnalyzer并测试
LogAnalyzer自身是PHP语言写的,需要PHP引擎,显然要和Apache结合,而日志源在后端MySQL Server上,所以需要php-mysql驱动,所以直接搭建一套LAMP环境即可。可以参考博文 编译安装LAMP
这里我直接使用yum来安装!
4.1 安装LAMP环境
yum -y install httpd php php-mysql php-gd
我这里yum源为Aliyun的Centos-6,安装的LAMP版本如下
4.2 下载LogAnalyzper并解压到网站根目录
LogAnalyzper的官网是http://loganalyzer.adiscon.com/
此处我选择了最新版4.1.3来做试验
wget tar -zxvf loganalyzer-4.1.3.tar.gz cp -r loganalyzer-4.1.3/src /var/www/html/log cp loganalyzer-4.1.3/contrib/* /var/www/html/log cd /var/www/html/log chmod +x configure.sh secure.sh ./configure.sh ./secure.sh chmod 666 config.php
4.3 启动httpd并进行初始化安装配置
service httpd start
接着打开浏览器,访问http://10.134.140.66/log/install.php 具体目录可依据实体情况更改。
Next,确定配置文件
Next,配置日志显示信息等
Next,指明后端MySQL数据库连接信息
『这里我理解出错了,这里如果Enable User Database会将LoyAnalyzper自身产生的数据保存到后端数据库中,会在后端数据库中插入相关表,而不是指定搜集到的日志源,日志源配置真正实在Setp 7』
Next,在后端MySQL数据库中创建表
Next,创建用于管理LogAnalyzper的账号密码
Next,在后端MySQL数据库中创建第一条测试日志消息
『真正指定搜集日志源的地方,这里指定我们的MySQL Server』
Next,完成!
4.4 通过网页日志记录吧!
几点小结:
这个架构中数据库角色其实可以直接装在Rsyslog Server上,但是出于测试的目的,这是是剥离的
Rsyslog Server既可以监听在TCP514也可以UDP514,不过通常推荐在UDP514,你懂的;
请注意:如果Nodes上指明了提交给Rsyslog Server搜集,那么建议将/etc/rsyslog.conf中其他无关行注释掉,即仅提交给远程服务器,当然可以适当指定一些高级别日志信息再存放一份于本地;
MySQL远程链接要授权,MySQL远程链接要授权,MySQL远程链接要授权,重要的话说三遍。
小规模的系统日志搜集这种架构还可以,但是对于WEB服务器日志收集显然不适合,这种架构不适合大并发日志模型,中小型可以参考ELK日志架构!