Rsyslog+MySQL+LogAnalyzer部署日志服务器

实验要求

  1. 搭建可视化日志搜集分析平台,用于集中搜集日志,并通过可视化日志分析工具呈现;

  2. Apps Server是要搜集日志的Nodes,可以有多台,这里我只用1台Node;

  3. Rsyslog Server是统一接收各Nodes提交过来的日志,监听在TCP/UDP 514节点;

  4. MySQL Server是用于存储提交的日志信息,做独立服务器,也可做Cluster;

  5. LogAnalyzer是一款基于LAMP的可视化日志分析工具,后端查询数据库,将结果整理输出;

拓扑如下:

wKioL1Y4QdqQYF0qAAjhMN3X8AA023.bmp


实现机理

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;

wKioL1Y4RlHyYcgjAAG9VCEVLxk027.jpg


实验步骤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日志

wKiom1Y4SMGjadrSAAKAlOnykGQ635.jpg

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。

  1. rsyslog.conf默认的配置选项日志搜集仍然会生效!只不过保存在本地,如果不想保存在本地了,只需要注释掉那行,只保留 @10.134.140.64 即可;

  2. 搜集日志信息是以 facility.priority 来规定的,如authpriv.*表示认证授权类的所有级别都搜集

具体的分类和级别可以使用man手册。


实验步骤3.简单测试

现在一套简单的日志搜集模型搭建完毕,所有的nodes上登录认证授权日志信息会被记录提交给Rsyslog Server,并写入数据库中,那么我们尝试错误登录10.134.140.63这台机器,然后查看数据库呢!

3.1 模拟2次错误登录

wKiom1Y4TFOSX8c2AAU88DgnSpI893.bmp

3.2 查询MySQL数据库

这里为了显示直观,我使用了Navicat For MySQL连接工具查看

wKioL1Y4TTqSknZVAAR05D9yFyg923.jpg


成功,接下来我们只需要整合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版本如下

wKiom1Y4Xe2Ss64cAAD4eaPO6-8880.jpg

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 具体目录可依据实体情况更改。

wKioL1Y4YoKim_YwAALC91un_0g101.jpg


Next,确定配置文件 

wKioL1Y4YumisuRLAAFelVszeY8216.jpg


Next,配置日志显示信息等

wKioL1Y4Y33zBTm0ABS3MPBoWTs044.bmp


Next,指明后端MySQL数据库连接信息

『这里我理解出错了,这里如果Enable User Database会将LoyAnalyzper自身产生的数据保存到后端数据库中,会在后端数据库中插入相关表,而不是指定搜集到的日志源,日志源配置真正实在Setp 7』

wKiom1Y4ZCKgO8pdAAIPFLcgwq0353.bmp


Next,在后端MySQL数据库中创建表

wKiom1Y4ZXWAvf_jABGayDPfRWg861.bmp


Next,创建用于管理LogAnalyzper的账号密码

wKioL1Y4Zb-A7-GRABAyaK9BrIc385.bmp


Next,在后端MySQL数据库中创建第一条测试日志消息

『真正指定搜集日志源的地方,这里指定我们的MySQL Server』

wKioL1Y4Zl_wRUWhABb9YDFh2y8937.bmp


Next,完成!

wKioL1Y4ZkSwaLFwAA6hCOIJIYs265.bmp


4.4 通过网页日志记录吧!

wKiom1Y4Z7yxYE7GAATRkrPiN5Q708.jpg


几点小结:

  1. 这个架构中数据库角色其实可以直接装在Rsyslog Server上,但是出于测试的目的,这是是剥离的

  2. Rsyslog Server既可以监听在TCP514也可以UDP514,不过通常推荐在UDP514,你懂的;

  3. 请注意:如果Nodes上指明了提交给Rsyslog Server搜集,那么建议将/etc/rsyslog.conf中其他无关行注释掉,即仅提交给远程服务器,当然可以适当指定一些高级别日志信息再存放一份于本地;

  4. MySQL远程链接要授权,MySQL远程链接要授权,MySQL远程链接要授权,重要的话说三遍。

  5. 小规模的系统日志搜集这种架构还可以,但是对于WEB服务器日志收集显然不适合,这种架构不适合大并发日志模型,中小型可以参考ELK日志架构!

你可能感兴趣的:(mysql,rsyslog,loganalyzer)