用于logstash的grok过滤器
Posted
技术标签:
【中文标题】用于logstash的grok过滤器【英文标题】:grok filter for logstash 【发布时间】:2014-10-15 19:34:38 【问题描述】:我的日志文件有以下形式的行:
10/13 14:05:18.192 [modulename]: [pid]: (debug level string): message string XYZ:<xyz value>
在哪里
modulename
是一个字符串
pid
是一个整数
debug level string
是一个类似“debug”或“info”或“error”的字符串
message string
是一个字符串
xyz value
是一个整数
示例:
10/13 14:05:18.192 [MyModule]: [12345]: (debug): This is my message. XYZ: 987
我四处搜索并尝试了一些东西,但得到了_grokparsefailure
。有人可以帮我看看我可以在 logstash 中使用什么过滤器来解析这些日志吗?
【问题讨论】:
你试过什么?您是否尝试过使用grokdebug.herokuapp.com 逐步添加到您的模式中? 如果我将上面的示例日志提供给 grokdebugger 中的 Discover,它会建议:%SYSLOGPROGURIPATHPARAM %HAPROXYTIME %SYSLOG5424SD: %NAGiosTIME: (debug): 这是我的讯息。 XYZ: 987 ,但是当我在 grokdebugger 中使用调试器链接并使用此模式并提供示例输入时,它不喜欢它。此外,似乎 grokdebugger 将 10/13 视为路径名?和 pid 作为 NAGIOSTIME - 似乎不对。(?<date>\d\d/\d\d) %TIME:time \[%WORD:module\]: \[%WORD:pid\]:
匹配你日志的开头...看看你能不能完成它
谢谢 - 成功了。我无法将 987(我上面的示例)解析为整数。我试过: (?首先GREEDYDATA
表示直到日志事件结束。因此,dbg_lvl
之后的所有文本都将分配给GREEDYDATA
在这里,试试下面的代码。您的代码过滤器的问题是它无法解析 msg
之后的任何内容。希望这会有所帮助。
(?<date>\d\d/\d\d) %TIME:time \[%WORD:module\]: \[%WORD:pid\]: \(%WORD:log_level\): %CISCO_REASON. %WORD: %BASE10NUM:xyz_number
【讨论】:
它在大多数情况下都有效。但我注意到,每当消息字符串包含 [] 或 ! or ... or aaa.bbb.ccc,解析失败。我在哪里可以找到 CISCO_REASON 的定义和我可以使用的其他内置解析器?基本上我希望能够使用 log_lvl: 和 XYZ: 之间的任何字符串解析日志。以上是关于用于logstash的grok过滤器的主要内容,如果未能解决你的问题,请参考以下文章