从 Beats 迁移到 Elastic Agent

编辑

从 Beats 迁移到 Elastic Agent

编辑

了解如何使用 Elastic Agent 替换现有的 Filebeat 和 Metricbeat 部署,Elastic Agent 是我们用于日志、指标、安全和威胁防御的单一代理。

为什么要迁移到 Elastic Agent?

编辑

Elastic Agent 和 Beats 在日志收集和主机监控方面提供类似的功能,但 Elastic Agent 比 Beats 有一些明显的优势。

  • 更易于部署和管理。您只需部署一个 Elastic Agent,而不是部署多个 Beats。Elastic Agent 下载、配置和管理收集和解析数据所需的任何底层程序。
  • 更易于配置。您不再需要为在主机上运行的每个 Beat 定义和管理单独的配置文件。相反,您定义一个单独的代理策略,指定要使用的集成设置,并且 Elastic Agent 会生成底层程序(如 Beats)所需的配置。
  • 集中管理。与 Beats 不同,Beats 需要您建立自己的自动化策略来进行升级和配置管理,而 Elastic Agent 可以通过 Kibana 中名为 Fleet 的中心位置进行管理。在 Fleet 中,您可以查看正在运行的 Elastic Agent 的状态,更新代理策略并将其推送到您的主机,甚至触发二进制升级。
  • 端点保护。使用 Elastic Agent 的最大优势可能在于它使您能够保护您的端点免受安全威胁。

限制和要求

编辑

在迁移到 Elastic Agent 之前,目前有一些限制和要求需要注意

  • 不支持配置 Beats 内部队列。每个 Beat 都有一个内部队列,用于存储事件,然后再对其进行批处理并发布到输出。为了提高数据吞吐量,Beats 用户可以设置 配置选项 来调整内部队列的性能。但是,配置队列所需的无休止的微调很繁琐,而且并非总是富有成效。Elastic Agent 不期望用户配置内部队列,而是使用合理的默认值。这意味着您无法将内部队列配置迁移到 Elastic Agent。

有关 Elastic Agent 限制的更多信息,请参阅 Beats 和 Elastic Agent 功能

为迁移做准备

编辑

开始之前

  1. 查看您现有的 Beats 配置,并列出所需的集成。例如,如果您现有的实现从 Nginx 收集日志和指标,请将 Nginx 添加到您的列表中。
  2. 记下您要迁移的任何处理器或自定义配置。在 Elastic Agent 中,某些自定义项可能不再需要或无法实现。
  3. 确定现在是否是迁移到 Elastic Agent 的合适时机。查看 Beats 和 Elastic Agent 功能 下的信息。确保您需要的集成受支持且已正式发布,并且您需要的输出和功能也受支持。

如果一切正常,请继续执行下一步。否则,您可能希望继续使用 Beats,并可能与 Beats 一起部署 Elastic Agent,以使用诸如端点保护之类的功能。

设置 Fleet Server(仅限自管理部署)

编辑

要使用 Fleet 进行集中管理,必须运行一个 Fleet Server 并且您的主机可以访问它。

如果您使用的是 Elastic Cloud,则可以跳过此步骤,因为 Elastic Cloud 运行 Fleet Server 的托管版本。

否则,请按照 在本地部署 Fleet Server 并在云上部署 Elasticsearch本地部署和自管理 中描述的自管理部署步骤进行操作,具体取决于您的部署模型,然后在完成后返回此页面。

将 Elastic Agent 部署到您的主机以收集日志和指标

编辑

要开始迁移,请将 Elastic Agent 部署到运行 Beats 发送器的主机上。建议您在开发环境中设置和测试迁移,然后再在整个基础架构中进行部署。

您可以继续与 Elastic Agent 一起运行 Beats,直到您对它发送到 Elasticsearch 的数据感到满意为止。

阅读 安装 Elastic Agent,了解如何部署 Elastic Agent。为了节省时间,请在 Elastic Agent 部署、运行状况良好并成功发送数据后返回此页面。

以下是帮助您了解部署过程的高级概述。

最好一次添加一个集成并在将其添加到您的代理策略之前进行测试。如果您的操作系统支持,系统集成是开始使用的好方法。

查看代理详细信息并检查数据流

编辑

将 Elastic Agent 部署到主机后,查看有关该代理的详细信息并检查它创建的数据流。要了解有关使用数据流的好处的更多信息,请参阅 数据流

  1. Fleet 中的 代理 选项卡上,确认 Elastic Agent 状态为 正常

    Screen showing that agent status is Healthy
  2. 单击主机名称以检查 Elastic Agent 详细信息。此页面显示当前安装的集成、代理注册的策略以及有关主机的信息

    Screen showing that agent status is Healthy
  3. 返回主 Fleet 页面,然后单击 数据流 选项卡。您应该能够看到来自主机的各种日志和指标的数据流。这是开箱即用的,无需任何额外的配置或仪表板创建

    Screen showing data streams created by the Elastic Agent
  4. 转到 分析 > 发现 并检查数据流。请注意,由 Elastic Agent 索引的文档与以下模式匹配

    • logs-*
    • metrics-*

    如果在主机上安装了 Beats,则 Elasticsearch 中的数据将重复,其中一组数据来自 Beats,另一组数据来自 Elastic Agent,对于相同的数据源。

    例如,筛选 filebeat-* 以查看 Filebeat 摄取的数据。

    Screen showing event from Filebeat

    接下来,筛选 logs-*。请注意,该文档包含来自 Elastic Agent 摄取的日志的 data_stream.* 字段。

    Screen showing event from Elastic Agent

    这种重复是多余的,会消耗您 Elasticsearch 部署上的额外存储空间。将所有配置设置迁移到 Elastic Agent 后,您将删除 Beats 以防止冗余消息。

将集成添加到代理策略

编辑

既然您已将 Elastic Agent 部署到您的主机并且它已成功向 Elasticsearch 发送数据,请添加另一个集成。有关您需要哪些集成的指导,请查看您在 为迁移做准备 时创建的列表。

例如,如果您之前创建的代理策略包含系统集成,但您也想监视 Nginx

  1. 在 Kibana 的主菜单中,单击 添加集成 并添加 Nginx 集成。

    Screen showing the Nginx integration
  2. 配置集成,然后将其应用于您之前使用的代理策略。确保展开折叠的部分以查看所有设置(例如日志路径)。

    Screen showing Nginx configuration

    当您保存并部署更改时,代理策略会更新以包含 Nginx 的新集成策略。所有注册到代理策略中的 Elastic Agent 都会获得更新后的策略,并且在您的主机上运行的 Elastic Agent 将开始收集 Nginx 数据。

    集成策略名称在所有代理策略中必须是全局唯一的。

  3. 返回 Fleet > 代理 并验证代理状态是否仍然正常。单击主机名称以向下钻取到代理详细信息。从那里,您可以看到应用的代理策略和集成策略。

    如果代理状态不是“健康”,请单击日志查看代理日志并排除问题。

  4. 返回主Fleet页面,然后单击数据流以检查数据流并导航到随集成安装的预构建仪表板。

请再次注意,数据是重复的,因为您仍然有 Beats 在运行并发送数据。

迁移处理器配置

编辑

处理器允许您在数据发送到输出之前对其进行过滤和增强。每个处理器接收一个事件,对该事件应用定义的操作,然后返回该事件。如果定义了处理器列表,则它们将按照定义的顺序执行。Elastic 提供了一组 丰富的处理器,所有 Beats 和 Elastic Agent 都支持这些处理器。

在从 Beats 迁移之前,您在每个 Beat 的配置文件中定义了处理器。但是,在迁移到 Elastic Agent 后,Beats 配置文件是多余的。所有配置都是由 Fleet 策略驱动的(或者对于高级用例,在独立的代理策略中指定)。您之前在 Beats 配置中定义的任何处理器都需要添加到集成策略中;它们不能在 Beats 配置中定义。

Elastic Agent 当前不支持全局定义的处理器。您必须在需要它们的每个集成策略中定义处理器。

要将处理器添加到集成策略

  1. 在 Fleet 中,打开代理策略选项卡,然后单击策略名称以查看其集成策略。
  2. 单击集成策略的名称以对其进行编辑。
  3. 单击已启用流旁边的向下箭头,然后在高级选项下,添加处理器定义。处理器将应用于它定义的那个数据集。

    Screen showing how to add a processor to an integration policy

    例如,以下处理器将地理位置特定的元数据添加到主机事件

    - add_host_metadata:
        cache.ttl: 5m
        geo:
          name: nyc-dc1-rack1
          location: 40.7128, -74.0060
          continent_name: North America
          country_iso_code: US
          region_name: New York
          region_iso_code: NY
          city_name: New York

在 Kibana 中,再次查看数据以确认它包含您期望的字段。

保留原始事件

编辑

在某些情况下,Beats 模块会保留原始的原始事件,这会消耗更多的存储空间,但可能是合规性或取证用例的要求。

在 Elastic Agent 中,此行为是可选的,并且默认情况下禁用。

如果必须保留原始事件,请编辑集成策略,并为每个启用的数据流,单击保留原始事件切换开关。

Screen showing how to add a processor to an integration policy

对每个要保留原始事件的数据流执行此操作。

迁移自定义仪表板

编辑

Elastic 集成包提供了许多资产,例如预构建的仪表板,以便您更轻松地可视化数据。但是,在某些情况下,您可能需要迁移自定义仪表板。

由于 Elastic Agent 使用不同的数据流,因此 Elastic Agent 导出的字段与 Beats 导出的字段略有不同。为 Beats 创建的任何自定义仪表板都需要修改或重新创建以使用新字段。

您有两种迁移自定义仪表板的选择

创建指向数据流的索引别名

编辑

如果集成安装的仪表板不足,您可能希望继续使用自定义仪表板。为此,请使用索引别名将数据流馈送到现有的自定义仪表板中。

例如,指向 filebeat-metricbeat- 的自定义仪表板可以使用等效的数据流 logs-metrics- 进行别名。

要使用别名

  1. filebeat 别名添加到 logs- 数据流。例如

    POST _aliases
    {
      "actions": [
        {
          "add": {
            "index": "logs-*",
            "alias": "filebeat-"
          }
        }
    
     ]
    }
  2. metribeat 别名添加到 metrics- 数据流。

    POST _aliases
    {
      "actions": [
        {
          "add": {
            "index": "metrics-*",
            "alias": "metricbeat-"
          }
        }
     ]
    }

必须将这些别名添加到索引模板和现有索引中。

请注意,在您从主机中删除 Beats 之前,自定义仪表板将显示重复的数据。

有关更多信息,请参阅别名文档

迁移索引生命周期策略

编辑

Elasticsearch 中的索引生命周期管理(index lifecycle management)策略使您能够根据性能、弹性以及保留要求来管理索引。要了解有关索引生命周期管理的更多信息,请参阅索引生命周期管理文档

索引生命周期管理在 Beats(7.0 及更高版本)和 Elastic Agent(所有版本)中默认配置。要查看在 Elasticsearch 中定义的索引生命周期策略,请转到管理 > 索引生命周期策略

Screen showing how to add a processor to an integration policy

如果您将索引生命周期管理与 Beats 一起使用,您将在列表中看到类似 filebeatmetricbeat 的索引生命周期策略。迁移到 Elastic Agent 后,您将看到名为 logsmetrics 的策略,它们封装了所有 logs-*metrics-* 索引模板的索引生命周期管理策略。

当您从 Beats 迁移到 Elastic Agent 时,您有两种迁移索引策略设置的选择

  • 修改新创建的索引生命周期策略(推荐)。 如前所述,当安装 Elastic Agent 时,索引生命周期管理默认启用。将创建索引生命周期策略并将其添加到集成创建的数据流的索引模板中。

    如果您有现有的 Beats 索引生命周期策略,强烈建议您修改 Elastic Agent 的生命周期策略以匹配您之前的策略。为此,请执行以下操作

    1. 在 Kibana 中,转到堆栈管理 > 索引生命周期策略,然后搜索 Beats 策略,例如filebeat。在链接索引下,请注意您可以查看链接到策略的索引。单击策略名称以查看设置。
    2. 单击logs策略,并在必要时编辑设置以匹配旧策略。
    3. 索引生命周期策略下,搜索另一个 Beats 策略,例如metricbeat
    4. 单击metrics策略,并编辑设置以匹配旧策略。

    (可选)当索引不再使用 Beats 索引生命周期策略时,将其删除。

  • 保留 Beats 策略并将其应用于为数据流创建的索引模板。 要保留现有策略,请根据需要对其进行修改,并将其应用于为数据流创建的所有索引模板

    1. 索引生命周期策略下,找到 Beats 策略,例如filebeat
    2. 操作列中,单击将策略添加到索引模板图标。
    3. 索引模板下,选择数据流索引模板,然后添加策略。
    4. 根据需要重复此过程,以将策略应用于其他数据流索引模板。

从主机中删除 Beats

编辑

任何已安装的 Beats 发送器都将继续工作,直到您将其删除。这使您可以分阶段推出迁移。在您删除 Beats 之前,您将继续看到重复的数据。

当您对 Elastic Agent 的部署感到满意时,请从主机中删除 Beats。在安装 Elastic Agent 之前收集的所有数据仍将在 Elasticsearch 中可用,直到您删除数据或根据为索引生命周期管理指定的保留策略删除数据。

要从主机中删除 Beats

  1. 使用适合您系统的正确命令停止该服务。
  2. (可选)备份您的 Beats 配置文件,以防将来需要引用它们。
  3. 删除 Beats 安装目录。如有必要,请在停止服务后停止任何正在运行的孤立进程。
  4. 如果您添加了防火墙规则以允许 Beats 在您的网络上进行通信,请将其删除。
  5. 删除所有 Beats 后,请吊销任何 API 密钥或删除为向 Elasticsearch 发送数据而创建的任何 Beats 用户的权限。