因项目需要,需要将应用的数据库操作日志(比如数据库用户登录以及登陆后做的增删改查)转到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                                             ##日志输出为表和文件,表和文件都记录通用日志

syslog发送java应用日志 发送syslog日志到服务器_mysql


配置完成后,重启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

syslog发送java应用日志 发送syslog日志到服务器_服务器_02

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端口能不能通,我客户端的配置如下

syslog发送java应用日志 发送syslog日志到服务器_mysql_03


1-3、验证rsyslog转发

查看客户端的/usr/local/mysql/data/mail.log有没有转发到服务端上

syslog发送java应用日志 发送syslog日志到服务器_mysql_04

syslog发送java应用日志 发送syslog日志到服务器_syslog发送java应用日志_05

1-4、设置日志过期时间
首先查看日志的过期时间,0-表示永久不过期

mysql>show variables like 'expire_logs_days';

syslog发送java应用日志 发送syslog日志到服务器_服务器_06


设置日志的过期时间有效期为30天

mysql>set global expire_logs_days=30;

syslog发送java应用日志 发送syslog日志到服务器_linux_07

查看日志输出文件类型,通用日志的表记录在 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版本 下载链接

syslog发送java应用日志 发送syslog日志到服务器_syslog发送java应用日志_08

我应用日志存放路径。

syslog发送java应用日志 发送syslog日志到服务器_syslog发送java应用日志_09

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>

syslog发送java应用日志 发送syslog日志到服务器_mysql_10


重启nxlog服务生效

net stop nxlog
net start nxlog

syslog发送java应用日志 发送syslog日志到服务器_syslog发送java应用日志_11

查看nxlog日志文件C:\Program Files\nxlog\data\nxlog.log,是否重启正常,我这边是正常,没有报错

syslog发送java应用日志 发送syslog日志到服务器_网络_12


查看rsyslog有没有收到日志

syslog发送java应用日志 发送syslog日志到服务器_网络_13

nxlog安装完成后,有个文档可以看下如何配置nxlog,路径为C:\Program Files\nxlog\doc\nxlog-reference-manual.html