我有一个msi安装程序格式的登录(仅限时间,没有日期):
MSI (c) (F0:8C) [09:00:05:007]: Client-side and UI is none or basic: Running entire install on the server.
MSI (c) (F0:8C) [09:00:05:007]: Grabbed execution mutex.
MSI (c) (F0:8C) [09:00:05:007]: Cloaking enabled.
MSI (c) (F0:8C) [09:00:05:007]: Attempting to enable all disabled privileges before calling Install on Server
MSI (c) (F0:8C) [09:00:05:007]: Incrementing counter to disable shutdown. Counter after increment: 0我希望从日志中获取一个时间子字符串,并将其与当前日期合并。
这是我的过滤器配置:
filter {
if "curl" in [tags] {
date {
locale => "en"
match => ["message", "HH:mm:ss:SSS"]
timezone => "+0200"
target => "logtime"
}
mutate {
add_field => {"logdate" => "%{+YYYY-MM-dd}"}
add_field => {"tmp_field" => "%{logdate}_%{logtime}"}
}
date {
locale => "en"
match => ["tmp_field", "YYYY-MM-dd_HH:mm:ss:SSS"]
timezone => "+0200"
remove_field => ["logdate","logtime","tmp_field"]
}
}
}当将日志加载到logstash中时,筛选器不起作用,我将得到每个事件的_dateparsefailure标记。
我做错了什么?
发布于 2021-10-07 05:55:26
要使其工作,您需要使用grok或诸如此类的方法来隔离时间戳(在您的情况下不需要日期)。然后,您可以尝试使用date解析它并开始添加日期。就像这样:
filter {
grok {
break_on_match => false
match => ["message","MSI \(c\) \((?<id>[A-F0-9]{2}:[A-F0-9]{2})\) \[%{TIME:time}\]: %{GREEDYDATA:message}"]
tag_on_failure => [ "_grokparsefailure"]
add_field => { "time" => "%{+YYYY-MM-dd}"}
add_field => { "timestamp" => "%{time} %{hour}" }
}
date {
target => "@timestamp"
match => ["timestamp", "YYYY-MM-dd HH:mm:ss.SSS"]
timezone => "+0200"
}
}免责声明,这不是测试,这是一个想法,可能有一些小错误,但这是一个普遍的方式来解决这个问题。
https://stackoverflow.com/questions/69471279
复制相似问题