总结:我有我的日志与日期格式如下:
2013/05/09-05:19:16.772
现在我想使用logstash并将这些日志发送给弹性搜索。但问题是,我希望时间戳值应该是日志的时间戳值,而不是当前时间。
因此,我写了以下内容。
Invalid format: "2013/05/09-05:19:16.876" is malformed at "/05/09-05:19:16.876", :backtrace=>["org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:866)"
我的配置文件是:
input {
stdin {
type => "stdin-type"
}
}
filter {
grok {
type => "stdin-type"
patterns_dir=>["./patterns"]
pattern => "%{PARSE_ERROR}"
add_tag=>"%{type1},%{type2},%{slave},ERR_SYSTEM"
}
date {
type => "stdin-type"
match=>["ts","yyyy/mm/dd-HH:mm:ss.SSS"]
locale=>"en"
}
mutate {
type=>"stdin-type"
replace => ["@message", "%{message}" ]
replace => ["@timestamp", "%{ts}" ]
}
}
output {
stdout { debug => true debug_format => "json"}
elasticsearch { }
}
我真的被困在这里了。需要一些专家的帮助。
谢谢。
指定小写的m
,而不是M
。m
代表分钟,M
代表月。
试题:
yyyy/MM/dd-HH:mm:ss.SSS
在从命令行启用详细模式(-vv)之前,从错误中不容易看出的是,'date'过滤器正在使用JodaTime库。在我的例子中,我使用了前一步中的正则表达式来解析日期和时间。这显然行不通,因为这不是JodaTime所期望的。对于允许的日期时间格式,您应该查看DateTimeFormat文档。
Try
YYYY/MM/dd-HH:mm:ss.SSS
相反,