以下是 Logstash 7.0 的重大更改。
这些更改可能会影响使用受影响功能的任何 Logstash 实例。Logstash 核心的更改与插件无关。
新的 Java 执行引擎已默认启用。它具有更快的性能、更低的内存使用率以及更低的配置启动和重新加载时间。
有关更多信息,请参阅有关Java 执行引擎的初始版本的博文。
我们竭尽全力使此更改无缝进行。尽管如此,这是一个很大的改变。如果您注意到可能相关的不同行为,请打开一个 GitHub 问题告知我们。
从 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
在 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
选项