logstash 日志存放到Opensearch,_dateparse失败标记

ecbunoof  于 2022-12-31  发布在  Logstash
关注(0)|答案(1)|浏览(190)

我在使用logstash打开搜索时遇到了一些问题。

filter{
    grok {
            patterns_dir => ["/etc/logstash/conf.d/patterns"]
            match => [ "message","%{DATE_FORM:logdate}%{LOGTYPE:logtype}:%{SPACE}%{GREEDYDATA:msgbody}" ]
    }
    date {
            match => ["logdate", "yyyy.MM.dd-HH.mm.ss:SSS"]
            timezone => "UTC"
            target=>"timestamp"
    }

    mutate {
            remove_field => ["message"]
            add_field => {
                    "file" => "%{[@metadata][s3][key]}"
            }
    }
}

这是我用于logstash的conf文件。在opensearch控制台中

@timestamp : Dec 15, 2022 @ 18:10:56.975
logdate [2022.12.10-11.57.36:345]
tags _dateparsefailure

时间戳、日志日期不同,并且出现_dateparsefailure错误。
在原始日志中,它以

[2022.12.10-11.57.36:345]

这种格式。
现在

logdate : raw log's timestamp
@timestamp : the time that log send to opensearch

我想匹配logdate和@timestamp。我如何修改filter.date.match部分,使logdate和@timestamp过滤器的结果相同?

4ktjp1zp

4ktjp1zp1#

如果您有多个filter.date.match,您可以执行以下操作:

filter{
    date {
            match => ["logdate", "yyyy.MM.dd-HH.mm.ss:SSS"]
            timezone => "UTC"
            target=>"logdate"
    }
    date {
            match => ["@timestamp", "yyyy.MM.dd-HH.mm.ss:SSS"]
            timezone => "UTC"
            target=>"@timestamp"
    }
}

如果时间字段具有多种格式,则可以执行以下操作:

date {
  match => [ "logdate", "yyyy.MM.dd-HH.mm.ss:SSS", "third_format", "ISO8601" ]
  target=> "@timestamp"
}

参考:https://www.elastic.co/guide/en/logstash/current/plugins-filters-date.html#plugins-filters-date-match

相关问题