【发布时间】:2023-03-14 15:10:02
【问题描述】:
我有 Nginx 作为负载均衡器,它生成的日志没有时间戳中的年份和秒信息。其中一个日志是
08-10 09:28 root ERROR Error connecting to CRS REST API : [Errno 111] Connection refused
Error connecting to CRS REST API : [Errno 111] Connection refused
这个模式是:
(?m)%{MONTHNUM:monthNum}\-%{MONTHDAY:monthDay}\s*%{HOUR:hour}:%{MINUTE:minute}\s*%{WORD}\s*%{LOGLEVEL_CUSTOM:severity}\s*%{GREEDYDATA:messagePayload}
虽然我知道 Logstash 可以用当前年份来完成年份信息,但这对我来说很好,因为日志不是旧的并且每天都收集,但秒部分很重要。我不知道该怎么做? 另外一件事,我正在使用date 过滤器将其转换为要存储在 Elasticsearch 中的时间戳,如下所示:
mutate {
add_field => { "timestamp" => "%{monthDay}%{monthNum} %{hour}:{minute}" }
}
date {
match => ["timestamp","ddMM HH:mm", "YYYY-MM-dd HH:mm:ss,SSS", "YYYY-MM-dd HH:mm:ss", "YYYY/MM/dd HH:mm:ss", "dd/MMM/yyyy:HH:mm:ss Z", "ddMMYYYY HH:mm:ss", "ISO8601", "YYYY-MM-dd HH:mm:ss,SSSSSS", "YYYY-MM-dd HH:mm:ss.SSS", "YYYY-MM-dd HH:mm:ss.SSSSSS"]
locale => "en"
timezone => "UTC"
target => "@timestamp"
}
它没有正确解析它,并且 Elasticsearch 中的时间戳不同,不是日期和时间。 有线索吗?
【问题讨论】:
标签: elasticsearch logstash logstash-grok logstash-configuration