在日常工作中,我们需要搭建专门的日志服务器来记录服务器上各类操作及系统信息。为什么不用服务器本地的日志呢。想象一下,如果你的服务器被入侵或者有其他人认为篡改了你的日志,系统本地的日志还可信吗?所以,我们需要搭建专门的日志服务器来记录日志信息。
我们此次的环境是服务端: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
一路next到配置用户环节:
配置下syslog源:
注意,表名称大小敏感,名称是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编码即可。