我正在使用带有 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
答案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")