Linux配置Rsyslog日志服务器,并配置Loganalyzer可视化Web查看

130 次查看 0 条评论

CentOS6和CentOS7默认使用Rsyslog记录系统日志,他的优点在于多线程,可以通过TCP、UDP发送日志远程主机管理集中管理查看,可以用MySQL存储并配合WEB程序可视化阅读检索等等。

文中为方便使用了相干的弱口令,生产环境请谨慎!!!由于文章修正,部分截图可能略微与配置不完全一致。

1、实验环境说明

62081-fq7g2pjviyd.png

其中mysql可以与lamp合并到一台机器。

2、安装配置Rsyslog服务器

  • 安装:
[root@rsyslog ~]# rpm -qa | grep rsyslog
[root@rsyslog ~]# yum install -y rsyslog
[root@rsyslog ~]# rsyslogd -v
[root@rsyslog ~]# systemctl start rsyslog
[root@rsyslog ~]# systemctl enable rsyslog
  • 配置:修改配置文件 /etc/rsyslog.conf 开启 tcp/udp 监控
[root@rsyslog ~]# vi /etc/rsyslog.conf
## 取消配置文件中如下行,开启监听服务
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
## 检查配置
[root@rsyslog ~]# rsyslogd -N1
## 重启服务
[root@rsyslog ~]# systemctl restart rsyslog
## 检查是否监听
[root@rsyslog ~]# netstat -tlnup | grep 514

监听状态截图:

64819-bq7zr0yd998.png

3、配置客户机发送日志到日志服务器

在配置文件 /etc/syslog.conf 末尾增加一行 *.* @@192.168.1.13:514 内容:

[root@client ~]# echo "*.* @@192.168.1.13:514" >> /etc/syslog.conf
[root@client ~]# systemctl restart rsyslog

PS: IP自己换,也可以用域名,其中@@表示使用TCP协议,要使用UDP则只使用一个@符号即可。

在上述行中确保相应地替换远程rsyslog服务器FQDN的IP地址为你自己的rsyslog服务器地址。 上述行指示Rsyslog守护程序通过514/TCP端口将所有日志消息(不管设施或严重程度)发送到主机192.168.1.13日志服务器。

4、在日志服务器上统一查看日志

先在日志服务器上监控日志内容变化:

[root@rsyslog ~]# tail -f /var/log/messages

在客户机上模拟一条日志信息:

[root@client ~]# logger "This is a rsyslog test"

观察日志服务器日志:

17984-9q09j8csda.png

可见在日志服务器上已经能接收客户机发送来的日志了。

5、配置记录用户操作记录

[root@client ~]# vi /etc/bashrc
## 在文件最末尾增加如下这行内容,注意不要使用echo等重定向写入,因为那样会先解析变量
export PROMPT_COMMAND='{ msg=$(history 1 | { read x cmd; echo $cmd; });logger $(who am i) [$(whoami)"@" `pwd`] "$msg"; }'
## 直接记录到文件的写法(本此教程不要配置)
#export PROMPT_COMMAND='{ date "+%F %T $(who am i | awk "{print \$1\" \"\$2\" \"\$5}") $(history 1 | { read x cmd; echo "$cmd"; })"; } >> /var/log/history/$(whoami).log'
## 立即生效下配置
[root@client ~]# source /etc/bashrc

我们在应用服务器上随便输入几个命令,看看日志汇总服务器上是否都已正常收到:

[root@client ~]# ll -lh ~/
[root@client ~]# yum info nginx

可以看到日志服务器上成功的记录到了操作命令:

77784-ufmrteg5gp.png

6、配置Web可视化

上面已经可以在日志服务器上看到客户机日志了,现在来配置将日志服务器收到的日志记录到MySQL数据库,然后配合WEB程序查看。

Writing syslog messages to MySQL, PostgreSQL or any other supported Database

6.1、安装MySQL支持模块

安装模块:

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

使用Docker容器创建一个MySQL服务(如果你还没有MySQL数据库服务):

docker run -d \
--name mysql \
--net=lan --ip=192.168.1.14 \
-v /data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_USER=rsyslogUser -e MYSQL_PASSWORD=123456 \
mysql:5.7 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

PS: 如何使用容器不在此篇介绍范围内。

配置日志发送到MySQL数据库:

[root@rsyslog ~]# /etc/rsyslog.conf
## 打开并配置如下(没有则增加)
## 格式:*.* :ommysql:数据库地址:库名:用户:密码
$ModLoad ommysql
*.* :ommysql:192.168.1.14,Syslog,rsyslogUser,123456
## 测试配置是否正确
[root@rsyslog ~]# rsyslogd -N1

6.2、创建数据库和表结构

查看安装文件路径信息:

[root@rsyslog ~]# rpm -qa | grep rsyslog
[root@rsyslog ~]# rpm -ql rsyslog-mysql-8.24.0-41.el7_7.2.x86_64

88171-m1rp1n3t1t.png

安装MySQL客户端(可选),方便初始化数据库,由于CentOS7.x已经不内置MySQL源包了,故先手动安装源:

[root@rsyslog ~]# rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
[root@rsyslog ~]# yum search mysql-community
[root@rsyslog ~]# yum install -y mysql-community-client.x86_64

导入初始化Rsyslog的数据库:

# 从上面查询到的创建数据库表的脚本初始化数据库结构
[root@rsyslog ~]# mysql -h 192.168.1.14 -u root -p < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
## 数据库授权
[root@rsyslog ~]# mysql -h 192.168.1.14 -u root -p
mysql> grant all on Syslog.* to rsyslogUser@'%' identified by '123456';
mysql> flush privileges;

脚本mysql-createDB.sql会创建2张表,分别是: SystemEventsSystemEventsProperties 表。这里我遇到一个问题,在路径下并没有找到该建库脚本。后来查到了两个表结构

网络上找到了一个表结构,那就手动创建实验下:

[root@rsyslog ~]# mysql -h 192.168.1.14 -u root -p
mysql> create database Syslog character set utf8 collate utf8_general_ci;
mysql> use Syslog;
mysql> CREATE TABLE `SystemEvents` (
    `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `ReceivedAt` datetime DEFAULT NULL,
    `Facility` smallint(6) DEFAULT NULL,
    `Priority` smallint(6) DEFAULT NULL,
    `FromHost` varchar(60) DEFAULT NULL,
    `Message` text,
    PRIMARY KEY (`ID`)
);

这个表结构是自定义的结构,所以还得修改配置文件使用自定义模板,配置部分内容修改为如下:

...
$template sqlTemplate,\
"insert into SystemEvents(ReceivedAt, Facility, Priority, FromHost, Message)\
values ('%timegenerated:::date-mysql%', %syslogfacility%, %syslogpriority%,\
'%hostname%', '%msg%')",SQL

$ModLoad ommysql
*.* :ommysql:192.168.1.14,Syslog,rsyslogUser,123456;sqlTemplate

最后重启Rsyslog服务:

[root@rsyslog ~]# systemctl restart rsyslog

6.3、在数据库验证是否正常入库

[root@rsyslog ~]# mysql -h 192.168.1.14 -u rsyslogUser -p123456 Syslog
mysql> select * from Syslog.SystemEvents order by ID desc limit 1\G;

查询结果:

00777-tumcihdf03.png

可以看到已经有日志信息入库。

常用查询:

mysql> select ReceivedAt,FromHost,Message from Syslog.SystemEvents where FromHost='client' order by ID desc limit 10;

20769-fl5o76rg9vq.png

一个以正序输出日志的SQL语句(方便审计查看):

select * from (select ReceivedAt,FromHost,Message from Syslog.SystemEvents where FromHost='client' order by ID desc limit 10) as tempTable order by ReceivedAt asc;

操作一目了然:

04672-vyef4teeobb.png

6.4、安装 Loganalyzer 程序

  1. LogAnalyzer是一款syslog日志和其他网络事件数据的Web前端。它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。数据可以从数据库或一般的syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构。基于当前的日志数据,它可以处理syslog日志消息,Windows事件日志记录,支持故障排除,使用户能够快速查找日志数据中看出问题的解决方案。
  2. LogAnalyzer 获取客户端日志会有两种保存模式,一种是直接读取客户端/var/log/目录下的日志并保存到服务端该目录下,一种是读取后保存到日志服务器数据库中,推荐使用后者。
  3. LogAnalyzer 采用php开发,所以日志服务器需要php的运行环境,本文采用LAMP。

前往Loganalyzer下载源码包,下载解压只留src目录即可,将其拷贝/移动到httpd主目录/var/www/html/下。

官方文档:LogAnalyzer Documentation

安装Lamp环境,不详述,还得安装适当得扩展支持:

[root@lamp ~]# yum install -y httpd php php-mysql php-gd
[root@lamp ~]# systemctl start httpd
[root@lamp ~]# systemctl enable httpd

由于我使用了独立的数据库服务器,所以在这里的Lamp中没有再安装MySQL服务了。如果需要:

[root@lamp ~]# rpm -ivh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
[root@lamp ~]# yum install -y mysql-community-server
[root@lamp ~]# systemctl start mysql
[root@lamp ~]# mysql -uroot -p
## 如果报错,尝试移除mariadb-libs库
[root@lamp ~]# yum remove -y mariadb-libs

下载安装loganalyzer组件:

[root@lamp ~]# wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.8.tar.gz
[root@lamp ~]# tar -zxvf loganalyzer-4.1.8.tar.gz
[root@lamp ~]# mkdir -p /var/www/html/loganalyzer
[root@lamp ~]# cp -a loganalyzer-4.1.8/src/* /var/www/html/loganalyzer/
[root@lamp ~]# touch /var/www/html/loganalyzer/config.php
[root@lamp ~]# chmod 666 /var/www/html/loganalyzer/config.php

本地备份:loganalyzer-4.1.8.tar.gz

通过浏览器访问 http://lamp-ip:/loganalyzer 根据向导完成配置。

71853-zwrevtvqjim.png

省略部分...

Step 7 :

30350-rj9mv95fqas.png

Step 8 :

01800-fdtmp417ifs.png

初始化完毕后为了安全起见最好收回config.php文件权限:

[root@lamp ~]# chmod 644 /var/www/html/loganalyzer/config.php

注意:由于上面使用了自定义格式的日志模板,所以目前在LogAnalyzer中数据是有问题的,有空再看怎么改了。


7、参阅文献资料

  1. 过滤Time has changed日志
  2. 利用Rsyslog集中收集系统日志和用户操作记录以及相关处理方法
  3. Linux项目之rsyslog存储到MySQL及可视化web界面
  4. Rsyslog v8 Document
  5. 日志管理rsyslog工具
  6. Linux日志管理Rsyslog之模块
CentOS 日志 , 日志分析 , 审计

暂无评论