Linux日志管理实例: 利用 MySQL 存储日志信息
1.目的
利用rsyslog日志服务,将收集的日志记录于MySQL中
2.环境
两台主机
一台:rsyslog日志服务器,IP:10.0.0.100
一台:mariadb数据库服务器,IP:10.0.0.102
3.步骤
3.1在rsyslog服务器上安装连接mysql模块相关的程序包
[root@centos8 ~]#yum install rsyslog-mysql
[root@centos8 ~]#rpm -ql rsyslog-mysql
/usr/lib/.build-id
/usr/lib/.build-id/d7
/usr/lib/.build-id/d7/77fc839aa07e92f0a8858cf3f122996436c7df
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog/mysql-createDB.sql
#查看sql脚本文件内容
[root@centos8 ~]#cat /usr/share/doc/rsyslog/mysql-createDB.sql
#将sql脚本复制到数据库服库上
[root@centos8 ~]#scp /usr/share/doc/rsyslog/mysql-createDB.sql 10.0.0.102:/data
3.2准备MySQL Server
[root@centos8 ~]#yum install mysql-server
[root@localhost ~]# systemctl enable --now mysqld
#在mariadb数据库服务器上创建相关数据库和表,并授权rsyslog能连接至当前服务器
[root@centos8 ~]#mysql>source /data/mysql-createDB.sql
[root@centos8 ~]#mysql -u
mysql> create user rsyslog@'10.0.0.%' identified by '123456';
mysql> grant all on Syslog.* TO rsyslog@'10.0.0.%';
3.3 配置日志服务器将日志发送至指定数据库
#配置rsyslog将日志保存到mysql中
[root@centos8 ~]#vim /etc/rsyslog.conf
#
####MODULES####
#在 MODULES 语言下面,如果是 CentOS 8 加下面行
module(load="ommysql") #在 MODULES 语言下面,如果是 CentOS 7,6 加下面行
$ModLoad ommysql
#在RULES语句块加下面行的格式
#facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
*.info :ommysql:10.0.0.102,Syslog,rsyslog,123456
[root@centos8 ~]#systemctl restart rsyslog.service
3.4测试
#在日志服务器上生成日志
[root@centos8 ~]#logger "this is a test log"
#在数据库上查询到上面的测试日志
mysql>SELECT COUNT(*) FROM SystemEvents;