【问题标题】:Logstash Filter Grok for custom log用于自定义日志的 Logstash Filter Grok
【发布时间】:2017-03-21 10:49:54
【问题描述】:

我第一次使用Logstash,我正在尝试使用 grok 过滤器映射我的日志,将它们放在 ElasticSearch 上并使用 Kibana 进行可视化。

这是我目前的情况:

过滤器

filter {
  grok {
    match => { "message" => "%{TIMESTAMP:timestamp} | %{WORD:trackingId} | %{WORD:request} | %{WORD:session} | %{IP:client} | 
      %{WORD:userId} | %{GREEDYDATA:message}" }
  }
}

日志

2017-03-21 11:11:54.731 | myApp_35 | myApp_35 | 69E59F4DACC314C0B11B1A8CEA87F9BB | 127.0.0.1 |  | GET on URL [/api/customer] executed with success in [18555 us].

显然这不起作用。我做错了什么?

【问题讨论】:

    标签: elasticsearch logstash kibana


    【解决方案1】:

    试试这个

    %{TIMESTAMP_ISO8601:timestamp}%{SPACE}\|%{SPACE}%{WORD:trackingId}%{SPACE}\|%{SPACE}%{WORD:request}%{SPACE}\|%{SPACE}%{WORD:session}%{SPACE}\|%{SPACE}%{IP:client}%{SPACE}\|%{SPACE}%{DATA:userId}%{SPACE}\|%{SPACE}%{GREEDYDATA:message}
    

    根据 OPs 的评论,这里是另一个用 \s* 替换 SPACE 的正则表达式

    %{TIMESTAMP_ISO8601:timestamp}\s*\|\s*%{WORD:trackingId}\s*\|\s*%{WORD:request}\s*\|\s*%{WORD:session}\s*\|\s*%{IP:client}\s*\|\s*%{DATA:userId}\s*\|\s*%{GREEDYDATA:message}
    

    我会推荐这个网站来测试你的 grok 正则表达式:https://grokdebug.herokuapp.com/

    【讨论】:

    • 显然 %{SPACE} 没有工作。我用一个简单的空格字符替换它,一切正常!你能修改答案吗?那我就接受了:)
    • 实际上 SPACE 是在 grok 模式中定义的。看这里:github.com/elastic/logstash/blob/v1.4.2/patterns/…
    • @Nano 请检查更新是否正常。我将 %{SPACE} 替换为 \s* ,它将寻找空间(0 次或更多次)。如果对您有帮助,请采纳答案。
    猜你喜欢
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    相关资源
    最近更新 更多