Logstash 7.0 中的重大变更

Logstash 7.0 中的重大变更

以下是 Logstash 7.0 的重大变更。

Logstash Core 中的变更

这些变更会影响使用受影响功能的任何 Logstash 实例。Logstash Core 的变更与插件无关。

默认启用 Java 执行引擎

新的 Java 执行引擎默认启用。它具有更快的性能、更低的内存使用量以及更低的配置启动和重新加载时间。

有关更多信息,请参阅有关 Java 执行引擎的初始版本 的博客文章。

我们付出了巨大的努力来使此变更无缝进行。尽管如此,这仍然是一个重大变更。如果您注意到可能相关的不同行为,请 打开 GitHub 问题 以告知我们。

Beats 符合 Elastic 通用模式 (ECS)

从 7.0 开始,Beats 字段符合 Elastic 通用模式 (ECS)

如果您在升级 Beats 之前升级 Logstash,则有效负载将继续使用预 ECS 模式。如果您在升级 Logstash 之前升级 Beats,那么您将在任何 Logstash 升级之前获得具有 ECS 模式的有效负载。

如果您在升级后看到映射冲突,则表明 Beats/ECS 变更正在影响到达现有索引的数据。

字段引用解析器更加严格

字段引用解析器用于解释管道和插件中对字段的引用,它被设计得更加严格,现在将拒绝模棱两可或非法的输入。从 6.4 开始,Logstash 在遇到模棱两可的输入时会发出警告,并允许通过提供命令行标志 --field-reference-parser STRICT 或将 config.field_reference.parser: STRICT 添加到 logstash.yml 来提前选择严格模式解析。

以下是一个示例。

之前

logstash-6.7.0 % echo "hello"| bin/logstash -e 'filter { mutate { replace => { "message" => "%{[[]]message]} you" } } }'
[2019-04-05T16:52:18,691][WARN ][org.logstash.FieldReference] Detected ambiguous Field Reference `[[]]message]`, which we expanded to the path `[message]`; in a future release of Logstash, ambiguous Field References will not be expanded.
{
       "message" => "hello you",
      "@version" => "1",
    "@timestamp" => 2019-04-05T15:52:18.546Z,
          "type" => "stdin",
          "host" => "overcraft.lan"
}

之后

logstash-7.0.0 % echo "hello"| bin/logstash -e 'filter { mutate { replace => { "message" => "%{[[]]message]} you" } } }'
[2019-04-05T16:48:09,135][FATAL][logstash.runner          ] An unexpected error occurred! {:error=>java.lang.IllegalStateException: org.logstash.FieldReference$IllegalSyntaxException: Invalid FieldReference: `[[]]message]`
[2019-04-05T16:48:09,167][ERROR][org.logstash.Logstash    ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit

Logstash 插件中的变更

在 7.0.0 中,我们利用了这个机会将许多捆绑的插件升级到最新的主要版本,并将它们的重大变更吸收到 Logstash 发行版中。

虽然这些升级包括新功能和重要修复,但下面只列出了重大变更。

对插件的大多数变更都是删除以前已弃用且现在已过时的选项。在升级之前,请确保您的管道配置不使用这些已删除的选项。

编解码器插件

以下是编解码器插件的重大变更。

CEF 编解码器

  • 删除了已过时的 sev 选项
  • 删除了已过时的 deprecated_v1_fields 选项

Netflow 编解码器

  • 更改了 application_id 的解码以实现 RFC6759;格式从一对冒号分隔的 ID(例如 0:40567)更改为可变数量的双点分隔的 ID(例如 0..12356..40567)。
过滤器插件

以下是过滤器插件的重大变更。

克隆过滤器

  • 使 clones 成为必需选项

Geoip 过滤器

  • 删除了已过时的 lru_cache_size 选项

HTTP 过滤器

  • 删除了已过时的 ssl_certificate_verify 选项
输入插件

以下是输入插件的重大变更。

Beats 输入

  • 删除了已过时的 congestion_threshold 选项
  • 删除了已过时的 target_field_for_codec 选项
  • add_hostname 的默认值更改为 false

在 Beats 7.0.0 中,Beats Logstash Beats 输入导出的字段符合 Elastic 通用模式 (ECS)。许多导出的字段已重命名,因此您可能需要修改管道配置以在升级 Beats 之前访问它们的新位置。

HTTP 输入

  • 删除了已过时的 ssl_certificate_verify 选项

HTTP 轮询输入

  • 删除了已过时的 interval 选项
  • 删除了已过时的 ssl_certificate_verify 选项

Tcp 输入

  • 删除了已过时的 data_timeout 选项
  • 删除了已过时的 ssl_cacert 选项
输出插件

以下是输出插件的重大变更。

Elasticsearch 输出

  • 如果您的 Elasticsearch 集群支持 Elasticsearch 索引生命周期管理 (ILM),则会自动检测并默认启用它。
  • 删除对父/子(仍然支持连接数据类型)的支持,因为我们不再支持多个文档类型
  • 删除了已过时的 flush_size 选项
  • 删除了已过时的 idle_flush_time 选项

HTTP 输出

  • 删除了已过时的 ssl_certificate_verify 选项

Kafka 输出

  • 删除了已过时的 block_on_buffer_full 选项
  • 删除了已过时的 ssl 选项
  • 删除了已过时的 timeout_ms 选项

Redis 输出

  • 删除了已过时的 queue 选项
  • 删除了已过时的 name 选项

Sqs 输出

  • 删除了已过时的 batch 选项
  • 删除了已过时的 batch_timeout 选项

Tcp 输出

  • 删除了已过时的 message_format 选项