从 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 不同,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 策略驱动(或在高级用例中,在独立的 Agent 策略中指定)。您之前在 Beats 配置文件中定义的任何处理器都需要添加到集成策略中;它们不能在 Beats 配置文件中定义。

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

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

  1. 在 Fleet 中,打开Agent 策略选项卡,然后单击策略名称以查看其集成策略。
  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 中的索引生命周期管理 (ILM) 策略使您可以根据性能、弹性和保留要求来管理索引。要了解有关索引生命周期管理的更多信息,请参阅索引生命周期管理文档

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

Screen showing how to add a processor to an integration policy

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

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

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

    如果您有 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 后,撤销为发送数据到 Elasticsearch 而创建的任何 API 密钥或删除任何 Beats 用户的权限。