从 Beats 迁移到 Elastic Agent

编辑

从 Beats 迁移到 Elastic Agent编辑

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

为什么要迁移到 Elastic Agent?编辑

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

  • 更易于部署和管理。 您无需部署多个 Beats,只需部署一个 Elastic Agent。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. 转到 分析 > Discover 并检查数据流。请注意,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 中的索引生命周期管理(索引生命周期管理)策略使您能够根据性能、弹性和保留要求管理索引。要了解有关索引生命周期管理的更多信息,请参阅索引生命周期管理文档

索引生命周期管理默认在 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 用户的权限。