因项目需要,需要将应用的数据库操作日志(比如数据库用户登录以及登陆后做的增删改查)转到rsyslog服务器上
1、应用使用的数据库为mysql,部署在linux上。
1-1、rsyslog客户端配置(192.168.190.143)
确认mysql有没有开启通用日志,如果没开启,需修改/etc/my.cnf开启通用日志
general_log=ON ##开启通用日志
general_log_file=/usr/local/mysql/data/mail.log ##日志输出文件路径为/usr/local/mysql/data/mail.log
log_output=table,file ##日志输出为表和文件,表和文件都记录通用日志
配置完成后,重启mysql服务生效,因数据库操作日志非系统日志,转发到syslog服务器上需要改配置文件/etc/rsyslog.conf,以下是说明。
$ModLoad imfile # needs to be done just once 引入模板
# logstash - test - remote send file.
$InputFileName /opt/logstash-5.3.1/logs/logstash-plain.log #指定监控日志文件
$InputFilePollInterval 10 #指定每10秒轮询一次文件
$InputFileTag logstash-test #指定文件的tag
$InputFileStateFile /var/lib/rsyslog/logstash-test.log #指定状态文件存放位置,如不指定会报错。
$InputFileSeverity info #设置监听日志级别
$InputFileFacility local0 #指定设备
$InputRunFileMonitor #启动此监控,没有此项,上述配置不生效。
*.* @@目标ip:端口 #远程发送源tcp协议远程发送
我自己环境配置,添加下面代码,重启rsyslog生效
$ModLoad imfile
$InputFileName /usr/local/mysql/data/mail.log
$InputFilePollInterval 10
$InputFileTag mysqllog
$InputFileStateFile /usr/local/mysql/data/logstash-test.log
$InputFileSeverity info
$InputFileFacility local0
$InputRunFileMonitor
*.info @@192.168.190.66
1-2、rsyslog服务端配置(192.168.190.66)
开启服务端UDP和TCP的服务端口
##开启rsyslog的UDP服务端口514
$ModLoad imudp
$UDPServerRun 514
##开启rsyslog的TCP服务端口514
$ModLoad imtcp
$InputTCPServerRun 514
#指定使用设备名称和日志级别对系统日志进行过滤,日志文件名是年月日时.log
$template RemoteSyslogfacility-textSys,"/data/log/%syslogfacility-text%/%syslogseverity-text%/%$year%_%$month%_%$day%_%$hour%.log"
:syslogfacility-text, !isequal, "local0" ?RemoteSyslogfacility-textSys
#指定使用设备名称、日志tag信息和日志级别对系统日志进行过滤,日志文件名是年月日时.log
$template RemoteSyslogfacility-textApp,"/data/log/%syslogfacility-text%/%syslogtag%/%syslogseverity-text%/%$year%_%$month%_%$day%_%$hour%.log"
:syslogfacility-text, isequal, "local0" ?RemoteSyslogfacility-textApp
先telnet服务端514端口能不能通,我客户端的配置如下
1-3、验证rsyslog转发
查看客户端的/usr/local/mysql/data/mail.log有没有转发到服务端上
1-4、设置日志过期时间
首先查看日志的过期时间,0-表示永久不过期
mysql>show variables like 'expire_logs_days';
设置日志的过期时间有效期为30天
mysql>set global expire_logs_days=30;
查看日志输出文件类型,通用日志的表记录在 mysql 数据库 general_log 表中,慢日志表是 slow_log
mysql>show variables like '%log_output%';
查看 mysql 数据库下 general_log 表的字段
mysql>desc mysql.general_log;
2、应用部署在win server上,需要将应用的日志转发到rsyslog服务器上。
2-1、先在win server上安装nxlog
官网下载https://nxlog.co/products/nxlog-community-edition/download
我安装的是3.0.2284版本
我应用日志存放路径。
nxlog安装完成后,默认安装目录在C:\Program Files\nxlog下,修改C:\Program Files\nxlog\conf\nxlog.conf
<Input nds_in>
Module im_file
File "C:\Users\Administrator\AppData\Roaming\Koal\Log\NdsCore\*.log"
# File "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Log\ERRORLOG"
# Exec convert_fields("auto","utf-8");
SavePos True
Readfromlast False
# InputType Binary
</Input>
#
# Converting events to Snare format and sending them out over TCP syslog
<Output nds_out>
Module om_udp
Host 192.168.190.66
Port 514
# Exec to_syslog_snare();
# OutputType Binary
</Output>
#
# Connect input 'in' to output 'out'
<Route nds_log>
Path nds_in => nds_out
</Route>
重启nxlog服务生效
net stop nxlog
net start nxlog
查看nxlog日志文件C:\Program Files\nxlog\data\nxlog.log,是否重启正常,我这边是正常,没有报错
查看rsyslog有没有收到日志
nxlog安装完成后,有个文档可以看下如何配置nxlog,路径为C:\Program Files\nxlog\doc\nxlog-reference-manual.html