升级编辑

本节提供升级 Beats 收集器的常规建议。

如果您正在升级堆栈中的其他产品,请同时阅读《Elastic Stack 安装和升级指南》。

在次要版本之间升级编辑

作为一般规则,您可以通过简单地安装新版本并重新启动 Beat 进程来在次要版本之间进行升级(例如,从 8.x 升级到 8.y,其中 x < y)。Beats 通常会保持配置设置和导出字段的向后兼容性。请查看发行说明以了解潜在的例外情况。

不支持在非连续的主要版本之间进行升级(例如,从 6.x 升级到 8.x)。

从 7.x 升级到 8.x编辑

在升级 Beats 之前,请查看重大更改发行说明

如果您正在升级堆栈中的其他产品,请同时阅读《Elastic Stack 安装和升级指南》。

我们建议您在升级 Beats 之前将 Elasticsearch 和 Kibana 完全升级到 8.0 版。Beats 版本必须低于或等于 Elasticsearch 版本。Beats 无法将数据发送到旧版本的 Elasticsearch。

如果您在 Kibana 中使用 Uptime 应用程序,请确保在“设置”页面上的Uptime 索引中添加 heartbeat-8*synthetics-*。第一个索引由较新版本的 Beat 使用,而后者由 Fleet 使用。

如果您使用的是 Beats 7.0 到 7.16,请继续进行 8.0 升级之前将 Elastic Stack 和 Beats 升级到 7.17 版。

不支持在非连续的主要版本之间进行升级(例如,从 6.x 升级到 8.x)。

请在继续操作之前通读所有升级步骤。在首次运行该软件之前,必须执行这些步骤。

在升级到 8.0 之前升级到 Beats 7.17编辑

升级过程假定您已安装 Beats 7.17。如果您使用的是以前 7.x 版本的 Beats,请先升级到 7.17 版。如果您正在使用 Elastic Stack 中的其他产品,请作为Elastic Stack 升级过程的一部分升级 Beats。

升级到 7.17 后,转到 Kibana 中的索引管理,并验证 7.17 索引模板是否已加载到 Elasticsearch 中。

Screen capture showing that metricbeat-1.17.0 index template is loaded

如果未加载 7.17 索引模板,请立即加载。

如果您在 7.17 版之前创建了自定义仪表板,则必须先将其升级到 7.17 版,然后才能继续。否则,仪表板将停止工作,因为 Kibana 不再提供用于 7.x 中仪表板的 API。

将 Beats 二进制文件升级到 8.0编辑

升级之前

  1. 使用适用于您系统的相应命令停止现有的 Beats 进程。
  2. 通过将 dataconfig 目录复制到另一个位置来备份它们。

    这些目录的位置取决于安装方法。要查看当前路径,请从终端启动 Beat,dataconfig 路径将在启动时打印出来。

要使用 Debian 或 RPM 软件包进行升级

  • 使用 rpmdpkg 安装新软件包。所有文件都安装在操作系统相应的位置,并且不会覆盖 Beats 配置文件。

要使用 zip 或压缩的 tarball 进行升级

  1. 将 zip 或 tarball 解压缩到目录。如果您没有使用外部 configdata 目录,这一点至关重要。
  2. 在 Beats 配置文件中设置以下选项

    • 设置 path.config 以指向您的外部 config 目录。如果您没有使用外部 config 目录,请将您的旧配置复制到新安装中。
    • 设置 path.data 以指向您的外部数据目录。如果您没有使用外部 data 目录,请将您的旧数据目录复制到新安装中。
    • 设置 path.logs 以指向您要存储日志的位置。如果您未指定此设置,则日志将存储在您将存档解压缩到的目录中。

重新启动 Beats 进程之前,完成以下各节中介绍的升级任务。

迁移配置文件编辑

Beats 8.0 附带了一些向后不兼容的配置更改。在升级之前,请查看8.0 文档。另请查看Beats 8.0.0 版中的完整重大更改列表。

在可能的情况下,我们保留了旧的配置选项,但将其标记为已弃用。但是,弃用并不总是可行的,因此,如果您使用重大更改下描述的任何设置,请确保您了解我们提供的替代方案。

加载 8.0 Elasticsearch 索引模板编辑

从 8.0 版开始,默认的 Elasticsearch 索引模板配置数据流而不是传统的 Elasticsearch 索引。数据流经过优化,用于存储仅追加的时间序列数据。它们非常适合日志、事件、指标和其他连续生成的数据。但是,与传统的 Elasticsearch 索引不同,数据流仅支持创建操作;它们不支持更新和删除操作。

要使用数据流,请在将任何数据提取到 Elasticsearch 中之前加载默认的索引模板。

beatname setup --index-management

如果您没有收集时间序列数据,则可以继续使用 Beats 将数据发送到别名和索引。为此,请创建一个自定义索引模板并手动加载它。要详细了解如何创建索引模板,请参阅索引模板

加载 8.0 仪表板编辑

我们建议您在升级 Kibana 和 Beats 后加载 8.0 Kibana 仪表板。这样,您就可以利用 8.0 中添加的改进。要加载仪表板,请运行

beatname setup --dashboards

迁移自定义仪表板和可视化编辑

所有 Elastic Beats 都使用符合 ECS 的字段名称发送事件。如果您有任何使用旧字段的自定义 Kibana 仪表板或可视化,请立即调整它们以使用 ECS 字段名称。

要详细了解 ECS,请参阅ECS 概述

如果您在 7.x 中启用了兼容性层(即,如果您设置了 migration.6_to_7.enabled: true),请确保您的自定义仪表板不再依赖于该设置创建的旧别名。不再支持旧别名。它们可能继续工作,但将在将来的版本中删除,恕不另行通知。

启动升级后的 Beats编辑

完成迁移后,启动升级后的 Beat。使用适用于您系统的命令。

检查控制台和日志中是否有错误。

在 Kibana 中,转到“发现”,并验证事件是否正在流式传输到 Elasticsearch 中。

排除 Beats 升级问题编辑

本节介绍升级到 Beats 8.x 时可能会遇到的一些常见问题。

您可以通过在升级 Beats 之前阅读从 7.x 升级到 8.x来避免其中一些问题。

Beats 无法将更新或删除请求发送到数据流编辑

数据流设计用于很少(如果有的话)更新现有数据的用例。您无法将现有文档的更新或删除请求直接发送到数据流。

如果需要,您可以通过将请求直接提交到文档的后备索引来更新或删除文档。要了解如何操作,请参阅有关使用数据流的文档。

缺少时间戳字段编辑

Beats 需要一个时间戳字段才能将数据发送到数据流。如果 Beats 添加的时间戳字段被处理器无意中删除,Beats 将无法索引事件。要解决此问题,请修改您的处理器配置以避免删除时间戳字段。

索引中缺少字段或字段过多编辑

您可能在加载所需索引模板之前运行了 Beat。要清理并重新开始

  1. 删除运行 Beat 时创建的索引。例如

    DELETE metricbeat-8.14.3-2019.04.02*

    使用通配符删除索引时要小心。确保模式仅匹配要删除的索引。此处显示的示例删除了 2019 年 4 月 2 日索引到 metricbeat-8.14.3 索引中的所有数据。

  2. 删除之前加载的索引模板。例如

    DELETE /_index_template/metricbeat-8.14.3
  3. 加载正确的索引模板。请参阅加载 8.0 Elasticsearch 索引模板
  4. 重启 Beats。