【发布时间】:2018-11-14 14:37:23
【问题描述】:
我正在尝试在 Logstash 中定义一个新的时间戳,以便在我的 Kibana 报告中使用日志的时间戳而不是 Filebeat 时间戳。
我有以下工作,但不允许我在 Kibana 中使用日志时间戳作为时间轴:
grok {
match => { "message" => "(?<timestamp>%{TIMESTAMP_ISO8601}) %{LOGLEVEL:loglevel} (?<class>[A-Za-z0-9$_.]+) %{NOTSPACE:method}\(%{JAVAFILE:class}:%{NONNEGINT:line}\) %{GREEDYDATA:message}$"
}
所以我这样修改它,但它不起作用:
grok {
match => { "message" => "(?<timestamp>%{TIMESTAMP_ISO8601:tstamp}) %{LOGLEVEL:loglevel} (?<class>[A-Za-z0-9$_.]+) %{NOTSPACE:method}\(%{JAVAFILE:class}:%{NONNEGINT:line}\) %{GREEDYDATA:message}$"
}
date {
match => ["tstamp", "TIMESTAMP_ISO8601"]
}
我尝试添加我认为是 Grok 模式中值的命名(“:tstamp”部分),我找到了here,并将其定义为日期。但是当我使用它时,我再也看不到 Kibana 中的任何数据了。
我删除了 Kibana 中的所有内容以重新开始,并删除了 Filebeat 中的“注册表”文件以使其再次流式传输日志文件。
我错过了什么?
编辑:我能够通过更改过滤器来恢复数据流:
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:tstamp} %{LOGLEVEL:loglevel} (?<class>[A-Za-z0-9$_.]+) %{NOTSPACE:method}\(%{JAVAFILE:class}:%{NONNEGINT:line}\) %{GREEDYDATA:message}$" }
}
date {
match => ["tstamp", "ISO8601"]
}
但我仍然只将@timestamp 视为时间过滤器。 tstamp 仍被视为字符串。没看懂……
【问题讨论】:
标签: logging timestamp logstash elastic-stack logstash-grok