目录
1.4.1.在升级到7.0 之前升级到Logstash 6.7
1.升级Logstash
在升级Logstash之前:
在升级Logstash时:
- 如果使用X-Pack监视,则必须在升级Logstash时重新使用数据目录。否则,Logstash节点将分配一个新的持久性UUID,并成为监视数据中的新节点。
如果要升级堆栈中的其他产品,请阅读“ Elastic Stack Installation and Upgrade Guide.”。
有关升级Logstash的信息,请参阅以下主题:
- 何时升级
全新安装可以并且应该从Elastic Stack中的相同版本开始。
Elasticsearch 7.0不需要Logstash 7.0。Elasticsearch 7.0集群将通过默认的HTTP通信层愉快地从早期版本的Logstash接收数据。这为确定何时相对于Elasticsearch升级升级Logstash提供了一些灵活性。您可能会或可能不方便将它们一起升级,并且只要首先升级Elasticsearch,就不需要同时完成它们。
您应该及时升级以获得Logstash 7.0带来的性能改进,但这样做的方式对您的环境最有意义。
- 何时不升级
如果您需要的任何Logstash插件与Logstash 7.0不兼容,那么您应该等到它准备好再升级之前。
虽然我们努力确保兼容性,但Logstash 7.0并不完全向后兼容。如Elastic Stack升级指南中所述,在Elasticsearch 7.0之前不应升级Logstash 7.0。这是实用的,因为一些Logstash 7.0插件可能会尝试使用早期版本中不存在的Elasticsearch 7.0功能。例如,如果您尝试在Elasticsearch 7.0之前将7.x模板发送到群集,则所有索引可能都会失败。如果您使用自己的自定义模板与Logstash,则可以忽略此问题。
1.1.使用包管理器升级
此过程使用包管理器升级Logstash。
- 关闭Logstash管道,包括将事件发送到Logstash的任何输入。
- 使用“ 从软件包存储库安装”部分中的说明,更新存储库链接以指向7.x存储库。
- 根据您的操作系统运行
apt-get upgrade logstash
或yum update logstash
命令。 - 使用该
logstash --config.test_and_exit -f <configuration-file>
命令测试配置文件。某些Logstash插件的配置选项在7.x版本中已更改。 - 更新配置文件后重新启动Logstash管道。
1.2.使用直接下载进行升级
此过程直接从Elastic下载相关的Logstash二进制文件。
- 关闭Logstash管道,包括将事件发送到Logstash的任何输入。
- 下载与您的主机环境匹配的Logstash安装文件。
- 将安装文件解压缩到Logstash目录中。
- 使用该
logstash --config.test_and_exit -f <configuration-file>
命令测试配置文件。某些Logstash插件的配置选项在7.x版本中已更改。 - 更新配置文件后重新启动Logstash管道。
1.3.在旧版本之间的升级
作为一般规则,您可以通过简单地安装新版本并重新启动Logstash来在次要版本之间进行升级(例如,7.x到7.y,其中x <y)。Logstash通常保持配置设置和导出字段的向后兼容性。有关潜在的例外情况,请查看 发行说明。
不支持在非连续主要版本(例如5.x到7.x)之间进行升级。
1.4.将Logstash升级到7.0
在升级Logstash之前:
如果要在Elastic Stack中安装Logstash和其他组件,请参阅 Elastic Stack安装和升级文档。
不支持在非连续主要版本(例如5.x到7.x)之间进行升级。我们建议您升级到6.x,然后升级到7.x.
1.4.1.在升级到7.0 之前升级到Logstash 6.7
如果尚未升级到版本6.7,请在升级到7.0之前升级到版本6.7。如果您在Elastic Stack中使用其他产品,请将Logstash升级为 Elastic Stack升级过程的一部分。
升级到Logstash 6.7将为您提供新的7.0功能,包括Java执行引擎和严格的字段引用解析器,同时您仍在运行6.x. 此步骤有助于降低风险,并且如果您遇到困难,可以更轻松地进行回滚。
需要升级到6.7,因为Elasticsearch索引模板已修改为与Elasticsearch 7.0兼容(_type
设置已更改doc
为_doc
)。
1.5.启用持久队列升级
如果您启用了持久性队列(PQ),请阅读适用于您的升级方案的部分。
- 如果要从V6.2.x或更早版本升级,我们建议您 在升级之前排空持久性队列。
- 如果要从6.3.0或更高版本升级,请参阅 从启用了持久性队列的版本6.3(及更高版本)升级以获取信息。
1.5.1.排空持久队列(版本6.2.x及更早版本)
仅当您从启用了持久队列(PQ)的Logstash V6.2.x或更早版本升级时,以下内容才适用。
我们努力在给定的主要版本中保持向后兼容性。Logstash 6.2.x及更早版本中的序列化问题要求我们在版本6.3.0中破坏该兼容性以确保操作的正确性。有关更多技术细节,请查看我们的跟踪github问题,#9494。
我们强烈建议您在从V6.2.x及更早版本升级之前排空或删除持久队列。
排空队列:
- 在logstash.yml文件中,设置
queue.drain:true
。 - 重新启动Logstash以使此设置生效。
- 关闭Logstash(使用CTRL + C或SIGTERM),并等待队列清空。
队列为空时:
- 完成升级。
- 重新启动Logstash。
我们已解决版本6.3及更高版本的数据不兼容问题。将来的升级不需要这些步骤。
1.5.2.排空持久队列(版本6.2.x及更早版本)
支持在启用持久队列的情况下升级Logstash。持久队列目录是自包含的,可以由运行相同管道的新Logstash实例读取。您可以安全地关闭原始Logstash实例,启动新实例,并在logstash.yml
设置文件中设置path.queue
指向原始队列目录。您还可以使用已安装的驱动器来简化此工作流程。
请记住,只有一个Logstash实例可以写入path.queue
。您不能同时将原始实例和新实例写入队列。