【问题标题】:Can't use filebeat [beat][timezone] with logstash date filter plugin?不能将 filebeat [beat][timezone] 与 logstash 日期过滤器插件一起使用?
【发布时间】:2023-03-12 20:45:01
【问题描述】:

我正在使用未在时间戳中编码时区的 filebeat 将日志文件发送到 logstash。几个月来,我一直在使用 filebeat 处理器“add_locale”缩写格式添加 [beat][timezone] 的 logstash 日期过滤器插件。我在世界各地的几个时区都有服务器,当今天美国东海岸的时间从 EST 更改为 EDT 时,logstash 开始出现新时区值的时区解析错误,因为 filebeat 发送了 EDT,这不是有效的规范 ID 时区对于logstash (http://joda-time.sourceforge.net/timezones.html)。我对 CEST 和 CET 有同样的问题。

filebeat 和 logstash 是否可能使用不同的时区文件格式?

文件节拍

processors:
- add_locale:
    format: abbreviation

日志存储

date {
    locale => "en"
    match => ["corp.log.entryTimestamp", "yyyy-MM-dd HH:mm:ss,SSS"]
    timezone => "%{[beat][timezone]}"
    tag_on_failure => ["timestamp_parse_failed"]
    target =>  "@timestamp"
}

看起来 filebeat 只返回 go 返回的任何内容。

有没有人找到解决方法?

谢谢!

彼得

【问题讨论】:

    标签: timezone logstash filebeat


    【解决方案1】:

    尝试解析时区缩写通常不是一个好主意。除了你指出的情况之外,还有太多的歧义。

    考虑“CST”。那是中部标准时间(美国)、中部标准时间(澳大利亚)、中国标准时间、古巴标准时间,还是别的什么?

    只有极少数缩写也是有效的 IANA 时区标识符。除了 UTC,通常不鼓励使用它们。它们仅出于向后兼容的原因而存在,围绕一些边缘情况。

    对于日志文件中的时间戳,缩写几乎没有用,您可能不需要像America/New_York 这样的完整时区标识符。记录当时有效的与 UTC 的偏移量就足够了,例如-05:00(美国东部标准时间期间)或-04:00(美国东部时间期间)

    确实,根据filebeat docs,默认格式是offset。我会坚持下去。

    【讨论】:

    • 注意,我自己不使用这些特定技术,所以我只能从时区最佳实践的角度来回答。 一些缩写在两个世界中是通用的,但它们是非标准的,这完全有可能。
    • 我听到你在说什么,但是,如果时区不包含在时间戳中(我无法控制),logstash 会自动更正为 UTC,日期过滤器不接受偏移量而且我在logstash中看不到任何日期计算功能。我对其他方法持开放态度,但看起来我现在需要创建自己的映射或对所有这些映射进行硬编码,这将在夏令时结束时中断。
    • The docs 显示您可以在match 格式中使用的ZZ 令牌。这行得通吗?
    • 谢谢我确实尝试过,但我的问题是我无法控制在应用程序日志中输出时间戳的应用程序,原始条目没有 ZZ,我找不到使用 filebeat 或 logstash 进行调整的方法。
    • 对不起,我不知道还有什么建议。也许其他人可以提供更多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    相关资源
    最近更新 更多