Logstash 转换纪元时间戳
Logstash to convert epoch timestamp
我正在尝试解析一些纪元时间戳以使其更具可读性。
我四处寻找如何将它们解析为正常时间,据我所知我应该做的是这样的:
mutate
{
remove_field => [ "..."]
}
grok
{
match => { 'message' => '%{NUMBER:time}%{SPACE}%{NUMBER:time2}...' }
}
date
{
match => [ "time","UNIX" ]
}
消息示例为:1410811884.84 1406931111.00 ....
前两个值应该是 UNIX 时间值。
我的 grok 有效,因为 Kibana 中显示的所有字段都具有预期值,而我删除的所有值字段都不存在,因此 mutate 也有效。日期部分似乎什么都不做。
根据我的理解,match => [ "time","UNIX" ]
应该做我想做的(将时间值更改为正确的日期格式,并将其作为字段显示在 kibana 上。)。所以显然我不明白它。
date{} 过滤器用提供的数据替换@timestamp 的值,因此您应该看到@timestamp 与[time] 字段具有相同的值。这通常很有用,因为在日志的传播、处理和存储中存在一些延迟,因此最好使用事件自己的时间。
由于您有多个日期字段,因此您需要使用日期过滤器的 'target' 参数来指定解析日期的目标,例如:
date {
match => [ "time","UNIX" ]
target => "myTime"
}
这会将名为 [time] 的字符串字段转换为名为 [myTime] 的日期字段。 Kibana 知道如何显示日期字段,您可以在 kibana 设置中对其进行自定义。
由于您可能不需要同一数据的字符串和日期版本,您可以在转换过程中删除字符串版本:
date {
match => [ "time","UNIX" ]
target => "myTime"
remove_field => [ "time" ]
}
考虑也尝试 UNIX_MS 毫秒。
date {
timezone => "UTC"
match => ["timestamp", "UNIX_MS"]
target => "@timestamp"
}
我正在尝试解析一些纪元时间戳以使其更具可读性。
我四处寻找如何将它们解析为正常时间,据我所知我应该做的是这样的:
mutate
{
remove_field => [ "..."]
}
grok
{
match => { 'message' => '%{NUMBER:time}%{SPACE}%{NUMBER:time2}...' }
}
date
{
match => [ "time","UNIX" ]
}
消息示例为:1410811884.84 1406931111.00 ....
前两个值应该是 UNIX 时间值。
我的 grok 有效,因为 Kibana 中显示的所有字段都具有预期值,而我删除的所有值字段都不存在,因此 mutate 也有效。日期部分似乎什么都不做。
根据我的理解,match => [ "time","UNIX" ]
应该做我想做的(将时间值更改为正确的日期格式,并将其作为字段显示在 kibana 上。)。所以显然我不明白它。
date{} 过滤器用提供的数据替换@timestamp 的值,因此您应该看到@timestamp 与[time] 字段具有相同的值。这通常很有用,因为在日志的传播、处理和存储中存在一些延迟,因此最好使用事件自己的时间。
由于您有多个日期字段,因此您需要使用日期过滤器的 'target' 参数来指定解析日期的目标,例如:
date {
match => [ "time","UNIX" ]
target => "myTime"
}
这会将名为 [time] 的字符串字段转换为名为 [myTime] 的日期字段。 Kibana 知道如何显示日期字段,您可以在 kibana 设置中对其进行自定义。
由于您可能不需要同一数据的字符串和日期版本,您可以在转换过程中删除字符串版本:
date {
match => [ "time","UNIX" ]
target => "myTime"
remove_field => [ "time" ]
}
考虑也尝试 UNIX_MS 毫秒。
date {
timezone => "UTC"
match => ["timestamp", "UNIX_MS"]
target => "@timestamp"
}