升级

编辑

本节提供了升级 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 中的其他产品,请将 Beats 作为Elastic Stack 升级过程的一部分进行升级。

升级到 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.17.0-2019.04.02*

    使用通配符删除索引时请小心。确保模式仅匹配您要删除的索引。此处显示的示例删除了 2019.04.02 上索引到 metricbeat-8.17.0 索引中的所有数据。

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

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