gpt4 book ai didi

elasticsearch - Logstash 将日期转换为有效的 joda 时间 (@timestamp)

转载 作者:行者123 更新时间:2023-11-29 02:47:58 28 4
gpt4 key购买 nike

希望有人能帮帮我!

我有一个关于 logstash 的问题。我成功地确定了以下日期:26/Jun/2013:14:00:26 +0200

接下来,我希望将此日期用作事件的@timestamp。如您所知,logstash 会自动添加时间戳。

可以通过日期过滤器替换 logstash 添加的时间戳。我添加了以下日期过滤器:match => [ "date", "dd/MMM/YYYY:HH:mm:ss Z"]

但是,出于某种原因,这不起作用。当我测试它时,我看到 logstash 只是添加了他自己的时间戳。

代码:

grok {
type => "log-date"
pattern => "%{HTTPDATE:date}"
}

date{
type => "log-date"
match => [ "date", "dd/MMM/YYYY:HH:mm:ss Z"]
}

我需要这样做,这样我才能将事件添加到 elasticsearch。

提前致谢!

最佳答案

我使用了以下方法:

# strip the timestamp and force event timestamp to be the same.
# the original string is saved in field %{log_timestamp}.
# the original logstash input timestamp is saved in field %{event_timestamp}.
grok {
patterns_dir => "./patterns"
match => [ "message", "%{IRODS_TIMESTAMP:log_timestamp}" ]
add_tag => "got_syslog_timestamp"
add_field => [ "event_timestamp", "%{@timestamp}" ]
}

date {
match => [ "log_timestamp", "MMM dd HH:mm:ss" ]
}

mutate {
replace => [ "@timestamp", "%{log_timestamp}" ]
}

我现在的问题是,即使替换了@timestamp,我也想先将其转换为兼容 ISO8601 的格式,以便其他程序在解释它时不会出现问题,例如“event_timestamp”中的时间戳:

     "@timestamp" => "Mar  5 14:38:40",
"@version" => "1",
"type" => "irods.relog",
"host" => "ids-dev",
"path" => "/root/logstash/reLog.2013.03.01",
"pid" => "5229",
"level" => "NOTICE",
"log_timestamp" => "Mar 5 14:38:40",
"event_timestamp" => "2013-09-17 12:20:28 UTC",
"tags" => [
[0] "got_syslog_timestamp"
]

你可以很容易地转换它,因为你有年份信息......在我的例子中,我必须从“路径”(文件名)属性中解析它......但是,似乎仍然没有 convert_to_iso8901 => @timestamp 指令。

希望这对您的问题有所帮助! :)

关于elasticsearch - Logstash 将日期转换为有效的 joda 时间 (@timestamp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17319760/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com