我正在将rsyslog模板转换为syslog-ng,我在syslog-ng文档中找不到如何在模板中嵌入正则表达式。传入的邮件正文如下所示:
123 1.2.3.4 4.3.2.1:80 someone@somewhere.com US
原始的rsyslog模板是:
$ template graylog_json," {\" version \":\" 1.1 \",\" host \":\& #34;%HOSTNAME ::: json%\",\" short_message \":\"邮件验证日志\",\" _LogDateTime \& #34;:\"%timereported ::: date-rfc3339,json%\",\" _Cluster \":\" c25 \", \" _ResponseCode \":\"%msg:R,ERE,1,BLANK:^ [^] *? ([0-9] {3}) - end:json%\",\" _SourceIP \":\"%msg:R,ERE,2,BLANK: ^([0-9] {3})([0-9] {1,3}。[0-9] {1,3}。[0-9] {1,3}。[0-9] {1,3}) - 结束:json%\",\" _DestinationIP \":\"%msg:R,ERE,1,BLANK:([0- 9] {1,3} [0-9] {1,3} [0-9] {1,3} [0-9] {1,3}):[0-9] {2, 4} - 结束:json%\",\" _DestinationPort \":\"%msg:R,ERE,1,BLANK:[0-9] {1, 3} [0-9] {1,3} [0-9] {1,3} [0-9] {1,3}:。([0-9] {2,4}) - 结束:json%\",\" _UserAccount \":\"%msg:R,ERE,1,BLANK :: [0-9] {2,4}( [^] {1,}) - 结束:json%\",\" _Country \":\"%msg:R,ERE,2,BLANK :: [ 0-9] {2,4}([^] {1,})([AZ?] {2})? - end:json%\"} \ n"
模板中的正则表达式位解析出原始消息中的相关字段。我不能将消息转储到graylog,因为我们使用自定义字段。我相信我想在syslog-ng中使用模板,但我找不到示例,甚至是文档,展示了如何在模板中嵌入正则表达式。
答案 0 :(得分:0)
查看邮件正文,您有以下选择:
使用csv-parser可能更容易,性能更好。 此外,syslog-ng版本3.13包含一个graylog目的地(尚未包含在文档中,但您可以在此博客文章中找到一个示例Graylog as destination in syslog-ng)