【问题标题】:logstash / grok pattern filelogstash / grok 模式文件
【发布时间】:2015-09-29 02:24:38
【问题描述】:

我正在解析 IIS 日志,当所有模式都在配置文件中时,我一切正常。

我想取出所有模式并将它们放在一个模式文件中,但似乎无法让它工作。

我有什么: 日志示例:

2015-09-08 16:02:23 获取 /l8Wc2pt1FMvzsCEJ/test/restapiname

2015-09-08 16:02:24 获取 /l8Wc2pt1FMvzsCEJ/test/ifSoap/soapapiname grok 哪个有效:

match => { "message" => [
        "%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:method} \/%{WORD:orgid}\/(?i)test\/%{GREEDYDATA:restapiname}",
        "%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:method} \/%{WORD:orgid}\/(?i)test\/(?i)ifsoap\/%{GREEDYDATA:soapapiname}"

这行得通。但是我这个 url 的组合太多了,想把完整的东西放在一个文件中,所以我只需要维护一个文件。

这似乎不起作用

模式文件:

IISLOGS %{TIMESTAMP_ISO8601:log_timestamp} %{WORD:method} \/%{WORD:orgid}\/(?i)test\/%{GREEDYDATA:restapiname}
IISLOGS %{TIMESTAMP_ISO8601:log_timestamp} %{WORD:method} \/%{WORD:orgid}\/(?i)test\/(?i)ifsoap\/%{GREEDYDATA:soapapiname}"

GROK 文件:

grok {    
    patterns_dir => "C:/LogProject/LogStash/patterns"
    match => [ "message", "IISLOGS" ]
  } 

有什么建议吗?

【问题讨论】:

    标签: regex logstash grok logstash-grok


    【解决方案1】:

    我个人建议保留 logstash 配置中的模式。在我看来,额外的模式文件很烦人并且更难维护。但是,如果您出于某种原因想要使用模式文件,这里有一种可能的方法:

    问题是您的 grok 模式文件中有两个不同的 IISLOGS 定义。您可以将不同的路径格式拆分为多种模式,并在 IISLOGS 定义中使用 (?:%{IISPATH1}|%{IISPATH2}) 执行逻辑

    模式文件:

    IISPATH1 \/%{WORD:orgid}\/(?i)test\/(?i)ifsoap\/%{GREEDYDATA:soapapiname}
    IISPATH2 \/%{WORD:orgid}\/(?i)test\/%{GREEDYDATA:restapiname}
    IISLOGS %{TIMESTAMP_ISO8601:log_timestamp} %{WORD:method} (?:%{IISPATH1}|%{IISPATH2})
    

    这适用于您给定示例的 grok 调试器。第一个结果是restapiname: restapiname,第二个结果是soapapiname: soapapiname

    【讨论】:

    • 谢谢赫伯。那行得通。模式文件只是为了方便簿记。当我尝试编辑任何东西时,一个真正的大配置文件变得非常复杂。
    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多