任何人都可以提供一个示例rsyslogconfiguration指令(Rainer脚本),删除由';'分隔的命名字段?
背景是这样的:我正在写一个rsyslogfilter,以减lessDB2AUDIT日志消息发送到我们的SIEM系统之前。 一个日志可能包含这个:
Jul 19 09:48:02 <hostname> db2audit: timestamp=2017-07-19-09.48.01.290470; category=EXECUTE; audit event=STATEMENT; event correlator=5; event status=100; database=SST3; userid=<userid>; authid=<authid>; session authid=<session authid>; application id=<IP>.50212.170719074801; application name=w3wp.exe; client workstation name=<clientname>; package schema=DB2INST1; package name=SYSSH200; package section=4; local transaction id=0x1a041b2c02000000; global transaction id=0x0000000000000000000000000000000000000000; uow id=1; activity id=2; statement invocation id=0; statement nesting level=0; activity type=READ_DML; statement text=SELECT <removed> FROM <removed>; statement isolation level=CS; Compilation Environment Description isolation: CS query optimization: 7 min dec div 3: NO degree: ANY SQL rules: DB2 refresh age: +00000000000000.000000 resolution timestamp: 2017-07-19-09.48.01.000000 federated asynchrony: 0 temporal business time: 0000-00-00-00.00.00.000000000000 temporal system time: 0000-00-00-00.00.00.000000000000 maintained table type: SYSTEM; rows modified=0; rows returned=0; value index = 1 type = VARCHAR data = 1312741342; extended indicator = 0; value index = 2 type = VARCHAR data = 2512484916; extended indicator = 0; value index = 3 type = VARCHAR data = 2503118850; extended indicator = 0; value index = 4 type = VARCHAR data = 1604020006; extended indicator = 0; local start time=2017-07-19-09.48.01.269495; instance name=db2inst1; hostname=oslo.dksund.dk;
我已经删除了由<>标记的日志的某些部分,例如大部分的SQL语句文本。
我想实现的是尽可能地减less这条线。 例如,我想删除“编译环境描述”字段,即:
Compilation Environment Description isolation: CS query optimization: 7 min dec div 3: NO degree: ANY SQL rules: DB2 refresh age: +00000000000000.000000 resolution timestamp: 2017-07-19-09.48.01.000000 federated asynchrony: 0 temporal business time: 0000-00-00-00.00.00.000000000000 temporal system time: 0000-00-00-00.00.00.000000000000 maintained table type: SYSTEM
这个字段是 – 所有字段都是 – 用分号很好地分隔,但是字段中的数字位置不能被信任(即在任何给定的日志中它可能不是10或15)。
由于所涉及的DB2数据库的负载过重,过滤需要高效,所以我真的很喜欢rsyslog来处理剪刀本身; 也就是说,我可以很容易地用外部filter(例如awk)来剪掉字段,但是我宁愿不启动额外的进程或生成更多的磁盘I / O,因为对数据库的每个查询都已经生成了1内存和2个磁盘读/写日志相关的事件。
我已经探讨了rsyslog文档了很长一段时间,但正则expression式不是我的强项,我还没有find一个“切割”或替代函数,因此这篇文章。
亲切的问候,Torsten