Swaggy_Z0306
2019-08-27 14:10
采纳率: 100%
浏览 1.5k
已采纳

logstash日志解析求一个grok正则表达式

10.77.102.130 id=tos time="2019-08-21 18:22:15" fw=TopsecOS pri=7
日志例子如上,要求输出成下面的样子,正则表达式应该怎么写。是不是要写自定义正则?求大佬帮助!!!
图片说明
像图2 一个字段一个值的隔行输出
比如"host" => "localhost"
id=tos就输出成"id"="tos"单独为一行
fw=TopsecOS就输出成"fw"="TopsecOS"单独为一行
图片说明

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 傲慢程序员 2019-08-27 16:06
    已采纳
    (?<sourceIP>.*)\sid=(?<id>.*)\stime="(?<time>.*)"\sfw=(?<fw>.*)\spri=(?<pri>.*)
    

    匹配得比较粗暴,凑合自己调吧

    图片说明

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • zhouchao6 2019-08-27 15:57

    "message" => "^%{IP:sourceIP} id=%{WORD:id} time=\"%{(%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND}):time}\" fw=%{WORD:fw} pri=%{NUMBER:pri}$"
    时间匹配可能有问题,不太会(或者用QS《带引号的字符串代替》)
    你可以参考下grok自带规则
    https://blog.51cto.com/showing/1927194?source=dra
    https://blog.csdn.net/cui929434/article/details/94390617

    评论
    解决 无用 1
    打赏 举报

相关推荐 更多相似问题