G.M*_*ast 6 elasticsearch logstash
希望有人能帮助我!
我有一个关于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"]
}
Run Code Online (Sandbox Code Playgroud)
我需要这样做,所以我可以向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}" ]
}
Run Code Online (Sandbox Code Playgroud)
我现在的问题是,即使替换了@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"
]
Run Code Online (Sandbox Code Playgroud)
您可以轻松转换它,因为您有年份信息...在我的情况下,我将不得不解析它的"路径"(文件名)属性...但仍然,似乎没有convert_to_iso8901 => @时间戳指令.
希望这对你的问题有帮助!:)
上面的答案只是一个解决方法!尝试添加locale => "en"到您的代码中.
如果没有添加,日期工作日和月份名称将使用默认的平台语言环境语言(西班牙语,法语或其他)进行解析,这就是为什么它不起作用(因为您的日志是英语).
date{
type => "log-date"
match => [ "date", "dd/MMM/YYYY:HH:mm:ss Z"]
locale => "en"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17420 次 |
| 最近记录: |