用于自定义日志的 Logstash Filter Grok
Logstash Filter Grok for custom log
我是第一次使用 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].
显然这不起作用。我做错了什么?
试试这个
%{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}
根据 OP 的评论,这里是另一个正则表达式 SPACE 替换为 \s*
%{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/
我是第一次使用 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].
显然这不起作用。我做错了什么?
试试这个
%{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}
根据 OP 的评论,这里是另一个正则表达式 SPACE 替换为 \s*
%{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/