如何从 LogStash 事件中删除日期
How to remove date from LogStash event
我的日志文件中有以下消息...
2015-05-08 12:00:00,648064070: INFO : [pool-4-thread-1] com.jobs.AutomatedJob: Found 0 suggested order events
这是我在 Logstash/Kibana 中看到的(选择了日期和消息)...
May 8th 2015, 12:16:19.691 2015-05-08 12:00:00,648064070: INFO : [pool-4-thread-1] com.pcmsgroup.v21.star2.application.maintenance.jobs.AutomatedSuggestedOrderingScheduledJob: Found 0 suggested order events
Kibana中左边的日期为插入日期。 (2015 年 5 月 8 日,12:16:19.691)
下一个日期来自日志语句(2015-05-08 12:00:00,648064070)
接下来是日志记录的 INFO 级别。
然后终于有消息了。
我想将它们拆分成组件,以便日志级别在 kibana 中是它自己的 FIELD,并删除消息部分中的日期或使其成为实际日期(而不是插入日期)。
有人可以帮帮我吗?我想我需要一个 grok 过滤器?
这是我目前所拥有的...
input
{
file {
debug => true
path => "C:/office-log*"
sincedb_path => "c:/tools/logstash-1.4.2/.sincedb"
sincedb_write_interval => 1
start_position => "beginning"
tags => ["product_qa"]
type => "log4j"
}
}
filter {
grok {
match => [ "message", "%{TIMESTAMP_ISO8601}: %{LOGLEVEL}" ]
}
}
output {
elasticsearch {
protocol => "http"
host => "0.0.0.x"
}
}
这个 grok 过滤器似乎没有改变 Kibana 中显示的事件。
我仍然只看到host/path/type,等等
我一直在使用 http://grokdebug.herokuapp.com/ 来计算我的 grok 语法
您需要命名从 grok 返回的结果,然后使用日期过滤器设置 @timestamp
以便使用记录的时间而不是插入时间。
根据你目前的情况,你会这样做:
filter {
grok {
match => [ "message", "%{TIMESTAMP_ISO8601:logdate}: %{LOGLEVEL:loglevel} (?<logmessage>.*)" ]
}
date {
match => [ "logdate", "ISO8601" ]
}
#logdate is now parsed into timestamp, remove original log message too
mutate {
remove_field => ['message', 'logdate' ]
}
}
我的日志文件中有以下消息...
2015-05-08 12:00:00,648064070: INFO : [pool-4-thread-1] com.jobs.AutomatedJob: Found 0 suggested order events
这是我在 Logstash/Kibana 中看到的(选择了日期和消息)...
May 8th 2015, 12:16:19.691 2015-05-08 12:00:00,648064070: INFO : [pool-4-thread-1] com.pcmsgroup.v21.star2.application.maintenance.jobs.AutomatedSuggestedOrderingScheduledJob: Found 0 suggested order events
Kibana中左边的日期为插入日期。 (2015 年 5 月 8 日,12:16:19.691)
下一个日期来自日志语句(2015-05-08 12:00:00,648064070)
接下来是日志记录的 INFO 级别。
然后终于有消息了。
我想将它们拆分成组件,以便日志级别在 kibana 中是它自己的 FIELD,并删除消息部分中的日期或使其成为实际日期(而不是插入日期)。
有人可以帮帮我吗?我想我需要一个 grok 过滤器?
这是我目前所拥有的...
input
{
file {
debug => true
path => "C:/office-log*"
sincedb_path => "c:/tools/logstash-1.4.2/.sincedb"
sincedb_write_interval => 1
start_position => "beginning"
tags => ["product_qa"]
type => "log4j"
}
}
filter {
grok {
match => [ "message", "%{TIMESTAMP_ISO8601}: %{LOGLEVEL}" ]
}
}
output {
elasticsearch {
protocol => "http"
host => "0.0.0.x"
}
}
这个 grok 过滤器似乎没有改变 Kibana 中显示的事件。 我仍然只看到host/path/type,等等
我一直在使用 http://grokdebug.herokuapp.com/ 来计算我的 grok 语法
您需要命名从 grok 返回的结果,然后使用日期过滤器设置 @timestamp
以便使用记录的时间而不是插入时间。
根据你目前的情况,你会这样做:
filter {
grok {
match => [ "message", "%{TIMESTAMP_ISO8601:logdate}: %{LOGLEVEL:loglevel} (?<logmessage>.*)" ]
}
date {
match => [ "logdate", "ISO8601" ]
}
#logdate is now parsed into timestamp, remove original log message too
mutate {
remove_field => ['message', 'logdate' ]
}
}