logstash 从解析的消息生成@timestamp
logstash generate @timestamp from parsed message
我有包含一系列此类消息的文件:
component+branch.job 2014-09-04_21:24:46 2014-09-04_21:24:49
它是字符串,一些空格,第一个日期和时间,一些空格和第二个日期和时间。目前我正在使用这样的过滤器:
filter {
grok {
match => [ "message", "%{WORD:componentName}\+%{WORD:branchName}\.%{WORD:jobType}\s+20%{DATE:dateStart}_%{TIME:timeStart}\s+20%{DATE:dateStop}_%{TIME:timeStop}" ]
}
}
我想将 dateStart 和 timeStart 转换为该消息的@timestamp。
我发现有 date 过滤器,但我不知道如何在两个单独的字段上使用它。
我也试过这样的过滤器:
date {
match => [ "message", "YYYY-MM-dd_HH:mm:ss" ]
}
但没有达到预期效果。
根据 Magnus Bäck 的重复建议,我为我的问题创建了解决方案。解决方案是将已解析的数据突变为一个字段:
mutate {
add_field => {"tmp_start_timestamp" => "20%{dateStart}_%{timeStart}"}
}
然后按照我在问题中的建议进行解析。
所以最终的解决方案是这样的:
filter {
grok {
match => [ "message", "%{WORD:componentName}\+%{WORD:branchName}\.%{DATA:jobType}\s+20%{DATE:dateStart}_%{TIME:timeStart}\s+20%{DATE:dateStop}_%{TIME:timeStop}" ]
}
mutate {
add_field => {"tmp_start_timestamp" => "20%{dateStart}_%{timeStart}"}
}
date {
match => [ "tmp_start_timestamp", "YYYY-MM-dd_HH:mm:ss" ]
}
}
我有包含一系列此类消息的文件:
component+branch.job 2014-09-04_21:24:46 2014-09-04_21:24:49
它是字符串,一些空格,第一个日期和时间,一些空格和第二个日期和时间。目前我正在使用这样的过滤器:
filter {
grok {
match => [ "message", "%{WORD:componentName}\+%{WORD:branchName}\.%{WORD:jobType}\s+20%{DATE:dateStart}_%{TIME:timeStart}\s+20%{DATE:dateStop}_%{TIME:timeStop}" ]
}
}
我想将 dateStart 和 timeStart 转换为该消息的@timestamp。
我发现有 date 过滤器,但我不知道如何在两个单独的字段上使用它。
我也试过这样的过滤器:
date {
match => [ "message", "YYYY-MM-dd_HH:mm:ss" ]
}
但没有达到预期效果。
根据 Magnus Bäck 的重复建议,我为我的问题创建了解决方案。解决方案是将已解析的数据突变为一个字段:
mutate {
add_field => {"tmp_start_timestamp" => "20%{dateStart}_%{timeStart}"}
}
然后按照我在问题中的建议进行解析。
所以最终的解决方案是这样的:
filter {
grok {
match => [ "message", "%{WORD:componentName}\+%{WORD:branchName}\.%{DATA:jobType}\s+20%{DATE:dateStart}_%{TIME:timeStart}\s+20%{DATE:dateStop}_%{TIME:timeStop}" ]
}
mutate {
add_field => {"tmp_start_timestamp" => "20%{dateStart}_%{timeStart}"}
}
date {
match => [ "tmp_start_timestamp", "YYYY-MM-dd_HH:mm:ss" ]
}
}