在日常工作中,我们需要搭建专门的日志服务器来记录服务器上各类操作及系统信息。为什么不用服务器本地的日志呢。想象一下,如果你的服务器被入侵或者有其他人认为篡改了你的日志,系统本地的日志还可信吗?所以,我们需要搭建专门的日志服务器来记录日志信息。

我们此次的环境是服务端:CentOS7服务器IP地址是192.168.42.15.主机名:loganalyzer
日志客户端的IP:192.168.42.101 主机名:client

安装LAMP环境

[root@loganalyzer ~]# yum -y install mariadb-server php php-fpm php-mysql

注:安装php是会自动把httpd作为依赖安装上。

把关键的服务设置为开机自启动:

[root@loganalyzer ~]# systemctl enable httpd.service mariadb.service php-fpm.service

启动MariaDB数据库:

[root@loganalyzer ~]# systemctl start mariadb.service

初始化数据库:

[root@loganalyzer ~]# mysql_secure_installation

默认没有root密码,在初始化过程中,建议大家设置下root密码!

改下Apache httpd配置:

[root@loganalyzer ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf

主配置改成这样:

#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_event_module modules/mod_mpm_event.so

改变下Apache加载php的配置:

[root@loganalyzer ~]# vim /etc/httpd/conf.d/php.conf
<FilesMatch \.php$>
    SetHandler "proxy:unix:/var/run/php-fpm/php-fpm.sock|fcgi://localhost/"
</FilesMatch>

注释下面两行:

#php_value session.save_handler "files"
#php_value session.save_path    "/var/lib/php/session"

改下php的配置:

[root@loganalyzer ~]# vim /etc/php.ini
date.timezone = Asia/Shanghai
cgi.fix_pathinfo=0

继续修改下:

[root@loganalyzer ~]# vim /etc/php-fpm.d/www.conf

改成这样:

listen = /var/run/php-fpm/php-fpm.sock
;listen.allowed_clients = 127.0.0.1
listen.owner = apache
listen.group = apache
listen.mode = 0600

启动php-fpm和httpd服务

[root@loganalyzer ~]# systemctl start php-fpm.service
[root@loganalyzer ~]# systemctl start httpd.service

防火墙放行下:

[root@loganalyzer html]# firewall-cmd --permanent --add-service=http
[root@loganalyzer html]# firewall-cmd --reload

自此,LAMP环境搭建完毕。

配置下rsyslog相关的数据库

几乎所有的Linux发行版都默认安装了rsyslog,所以这个一般已经自带了,不用额外安装。我们安装下rsyslog-mysql让MariaDB支持rsyslog

[root@loganalyzer ~]# yum -y install rsyslog-mysql

配置下数据库:

[root@loganalyzer loganalyzer-4.1.5]# cd /usr/share/doc/rsyslog-7.4.7/

导入数据库:

[root@loganalyzer rsyslog-7.4.7]# mysql -uroot -p < mysql-createDB.sql

进入MariaDB控制台:

[root@loganalyzer rsyslog-7.4.7]# mysql -uroot -p

授权下:

MariaDB [(none)]> grant all privileges on Syslog.* to rsyslog@localhost identified by 'rsyslog';

这里把权限授予数据库的rsyslog用户,密码为rsyslog,实际成产环境中建议用复杂点的密码。

配置服务端支持rsyslog-mysql模块:

[root@loganalyzer ~]# vim /etc/rsyslog.conf

在#### MODULES ####下面增加下面两行:

$ModLoad ommysql
*.* :ommysql:localhost,Syslog,rsyslog,rsyslog

Syslog为数据库,rsyslog为用户名和密码,如果你的数据库不是这个用户名和密码,请按照你的用户名和密码填写。

上面的配置文件中,取消一些注释,来启用一些模块:

$ModLoad immark  # provides --MARK-- message capability
$ModLoad imudp
$UDPServerRun 514

重启rsyslog服务:

[root@loganalyzer ~]# systemctl restart rsyslog.service

开放rsyslog防火墙端口:

[root@loganalyzer ~]# firewall-cmd --permanent --add-port=514/udp
[root@loganalyzer ~]# firewall-cmd --reload

安装LogAnalyzer

下载下LogAnalyzer软件,目前最新的稳定版本是4.1.5:

[root@loganalyzer ~]# curl -L -O http://download.adiscon.com/loganalyzer/loganalyzer-4.1.5.tar.gz
[root@loganalyzer ~]# tar xf loganalyzer-4.1.5.tar.gz
[root@loganalyzer ~]# cd loganalyzer-4.1.5/

在Apache目录下建立一个loganalyzer专用的文件夹:

[root@loganalyzer loganalyzer-4.1.5]# mkdir /var/www/html/loganalyzer
[root@loganalyzer loganalyzer-4.1.5]# cp -avx src/* /var/www/html/loganalyzer/

把文件权限设置下:

[root@loganalyzer loganalyzer-4.1.5]# cd /var/www/html/
[root@loganalyzer html]# chown -R apache:apache loganalyzer/

建立空的配置文件:

[root@loganalyzer html]# cd loganalyzer/
[root@loganalyzer loganalyzer]# touch config.php
[root@loganalyzer loganalyzer]# chmod 644 config.php 
[root@loganalyzer loganalyzer]# chown apache:apache config.php

设置selinux标签

[root@loganalyzer loganalyzer]# chcon -t httpd_sys_rw_content_t config.php

接下来在浏览器中开始配置,打开http://192.168.42.15/loganalyzer/install.php

按next检测环境,我们刚才已经被主要配置文件设置为可写了,没问题,继续next

loganalyzer2一路next到配置用户环节:
loganalyzer3配置下syslog源:
loganalyzer4注意,表名称大小敏感,名称是SystemEvents!如果你的日志信息特别多,Enable Row Counting会拖慢你查询的速度,这个相信接触过数据库查询的用户都能理解。

接下来netxt直到完成。

完成后可以可以删除安装目录下的install.php文件:

[root@loganalyzer loganalyzer]# rm -f install.php

客户端配置

编辑配置文件:

[root@client ~]# vim /etc/rsyslog.conf

在文件最后一行加上:

*.* @192.168.42.15

重启rsyslog服务:

[root@client ~]# service rsyslog restart

要让客户端所有执行的命令都写入日志中,可以这样:

[root@client ~]# vim /etc/bashrc

在尾部加上如下内容:

export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'

使改变生效:

[root@client ~]# . /etc/bashrc

此时客户端配置完毕。

关于中文日志乱码:

可以用管理员用户登陆后,进入Admin Center,在Default character encoding选择utf-8编码即可。

CentOS7下使用rsyslog+LogAnalyzer+MariaDB部署日志服务器
Tagged on:                         

发表评论

电子邮件地址不会被公开。 必填项已用*标注