使用 $template 将 PROCID 与 SYSLOGTAG 分开

使用 $template 将 PROCID 与 SYSLOGTAG 分开

我正在使用带有 LogAnalyzer Web 前端的 Raspberry Pi 设置一个集中式 rsyslog 服务器来查看日志。除了将字段解析到 MySQL 数据库之外,一切都已设置并正常工作。如您在附图中看到的,ProcessID 列未被填充,而是卡在 Syslogtag 列内容的末尾。

我希望分开系统日志标签进入程序名称进程字段。据我了解,我使用放置在 rsyslog.d/*.conf 文件中的模板来执行此操作。

我发现关于这个主题最有用的教程是这里

我也读过并尝试过使用该文档,但没有成功这里这里

下面是我在 rsyslog.d/.conf 中的配置文件

### Configuration file for rsyslog-mysql
### Changes are preserved

module (load="ommysql")
*.* action(type="ommysql" server="localhost" db="Syslog" uid="rsyslog" pwd="password")

# database template that separates the process ID from the syslog tag
$template dbFormat,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag, processid) values ('%msg%', %syslogfacility%, '%HOSTNAME%',%syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag:R,ERE,1,FIELD:(.+)(\[[0-9]{1,5}\]).*--end%', '%syslogtag:R,ERE,1,BLANK:\[([0-9]{1,5})\]--end%')",sql

Adiscon LogAnalyzer 版本 4.1.5 rsyslog Web 前端的屏幕截图

答案1

我找到了答案。在找到一些相关例子,我注意到我的问题有两个方面。首先,我在将模板添加到操作参数之前没有指定模板。其次,我在操作参数期间没有指定模板名称。

我的配置现在如下所示:

### Configuration file for rsyslog-mysql
### Changes are preserved

# database template that separates the process ID from the syslog tag
$template dbFormat,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag, processid) values ('%msg%', %syslogfacility%, '%HOSTNAME%',%syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag:R,ERE,1,FIELD:(.+)(\[[0-9]{1,5}\]).*--end%', '%syslogtag:R,ERE,1,BLANK:\[([0-9]{1,5})\]--end%')",sql

module (load="ommysql")
*.* action(type="ommysql" server="localhost" db="Syslog" uid="rsyslog" pwd="password" template="dbFormat")

相关内容