如何将数据从 AWS S3 导入到 Elastic Cloud - 第 2 部分:Elastic Agent

作者:来自 Elastic Hemendra Singh Lodhi

了解将数据从 AWS S3 提取到 Elastic Cloud 的不同选项。

这是多部分博客系列的第二部分,探讨了将数据从 AWS S3 提取到 Elastic Cloud 的不同选项。

在本博客中,我们将了解如何使用 Elastic Agent 从 AWS S3 提取数据。

注 1 :请查看第 1 部分中的不同选项比较:Elastic Serverless Forwarder
注 2:Elastic Cloud 部署是遵循下述步骤的先决条件。

Elastic Cloud

查看博客系列第 1 部分:Elastic Serverless Forwarder,了解如何开始使用 Elastic Cloud。如果你已经有活跃的部署,请跳过此部分。

Elastic Agent

从 AWS S3 提取数据的另一种选择是使用 Elastic Agent。Elastic Agent 是一种提取日志、指标等数据的单一、统一方法。Elastic Agent 安装在 EC2 等实例上,使用集成可以连接到 AWS 服务(如 S3),并将数据转发到 Elasticsearch。

Elastic Agent 工作原理概述:

  • 创建类似于清单文件的策略,包含代理说明。
  • 在策略中添加集成,这些集成本质上是包含配置、映射、仪表板等资产的模块。
  • 代理安装时会遵循所需的策略。
  • 代理将根据集成执行提取操作。

功能

  • 同时发送日志和指标
  • 支持通过 AWS PrivateLink 进行数据传输
  • 支持所有集成,并且可以使用 Fleet 管理代理(Elastic Cloud 默认提供)
  • 需要安装和维护代理,并且没有自动扩展。使用 Fleet 可以简化代理维护。
  • 开箱即用,性能良好,可以配置性能参数以使用性能预设。可以根据数据类型和提取要求使用预设。有关 Fleet 服务器可扩展性的更多信息,请点击此处
  • 成本是用于 agent 安装和 SQS 通知的 EC2 实例

数据流

基于 Elastic 代理的数据提取的高级数据流:

  • VPC 流日志配置为写入 S3 存储桶
  • 一旦日志写入 S3 存储桶,S3 事件通知就会发送到 SQS
  • Elastic 代理轮询 SQS 队列以获取新消息。根据消息中的元数据,它从 S3 存储桶读取日志数据并将其发送到 Elasticsearch
  • 建议使用 SQS 以提高性能,以便代理可以只读取 S3 存储桶中新更新的对象,而不是每次轮询整个存储桶

设置

对于步骤 (1)-(2),请按照第 1 部分:Elastic Serverless Forwarder 中的详细信息进行操作:

1)创建 S3 Bucket 来存储 VPC 流日志

2)启用 VPC 流日志并发送到上面创建的 S3 Bucket

3)使用默认设置创建 SQS 队列

注意:在与 S3 Bucket 相同的区域中创建 SQS 队列

提供队列名称 sqs-vpc-flow-logs-elastic-agent 并保留其他设置作为默认设置:

更新 SQS 访问策略(Advanced)以允许 s3 存储桶向 SQS 队列发送通知。将 account-id 替换为你的 AWS 帐户 ID。保留其他选项的默认设置。

在这里,我们指定 S3 从 S3 存储桶向 SQS 队列 (ARN) 发送消息:

复制代码
  {
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [
      {
        "Sid": "example-statement-ID",
        "Effect": "Allow",
        "Principal": {
          "Service": "s3.amazonaws.com"
        },
        "Action": "SQS:SendMessage",
        "Resource": "arn:aws:sqs:ap-southeast-2:<account-id>:sqs-vpc-flow-logs-elastic-agent",
        "Condition": {
          "StringEquals": {
            "aws:SourceAccount": "<account-id>"
          },
          "ArnLike": {
            "aws:SourceArn": "arn:aws:s3:::s3-vpc-flow-logs-elastic"
          }
        }
      }
    ]
  }

请记下队列设置下的详细信息中的 SQS URL:

4)在 S3 存储桶中启用 VPC 流日志事件通知

转到 S3 存储桶 s3-vpc-flow-logs-elastic -> Properties 并创建事件通知

提供名称以及你想要触发 SQS 的事件类型。在将任何对象添加到存储桶时,我们已 object create:

选择目标为 SQS queue 并选择 sqs-vpc-flow-logs-elastic-agent:

保存后,配置将如下所示:

确认 VPC 流日志已发布在 S3 存储桶中:

确认 S3 事件通知已发送到 SQS 队列:

5) 在 EC2 实例上安装 Elastic Agent

启动 EC2 实例

要获取安装命令,请转到:

Kibana -> Fleet -> Add Agent

创建新的代理策略 aws-vpc-flow-logs-s3-policy 并单击 "Create Policy"。

创建策略后,复制安装 Elastic Agent 的说明。其他设置保留默认设置:

登录 EC2 实例并运行命令:

复制代码
  [root@ip-xxx-xx-xx-xxx ~]# curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.14.3-linux-x86_64.tar.gz
  tar xzvf elastic-agent-8.14.3-linux-x86_64.tar.gz
  cd elastic-agent-8.14.3-linux-x86_64
  sudo ./elastic-agent install --url=https://xxxxxxxxxxx.fleet.ap-southeast-2.aws.found.io:443 --enrollment-token= xxxxxxxxxxx
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                  Dload  Upload   Total   Spent    Left  Speed
  100  327M  100  327M    0     0  5068k      0  0:01:06  0:01:06 --:--:-- 5065k
  elastic-agent-8.14.3-linux-x86_64/manifest.yaml
  elastic-agent-8.14.3-linux-x86_64/data/elastic-agent-2df2c1/elastic-agent
  ..........................
  Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:Y
  [=   ] Service Started  [0s] Elastic Agent successfully installed, starting enrollment.
  [==  ] Waiting For Enroll...  [1s] {"log.level":"info","@timestamp":"2024-09-03T03:43:40.209Z","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":517},"message":"Starting enrollment to URL: https://xxxxxxxxxxx.fleet.ap-southeast-2.aws.found.io:443/","ecs.version":"1.6.0"}
  [  ==] Waiting For Enroll...  [2s] {"log.level":"info","@timestamp":"2024-09-03T03:43:41.396Z","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":480},"message":"Restarting agent daemon, attempt 0","ecs.version":"1.6.0"}
  [ ===] Waiting For Enroll...  [2s] {"log.level":"info","@timestamp":"2024-09-03T03:43:41.448Z","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":298},"message":"Successfully triggered restart on running Elastic Agent.","ecs.version":"1.6.0"}
  Successfully enrolled the Elastic Agent.
  [ ===] Done  [2s]                               
  Elastic Agent has been successfully installed.

成功完成后,状态将在机队页面上更新:

使用 aws 集成更新策略 aws-vpc-flow-logs-s3-policy。这会将 aws 集成配置推送到订阅此策略的代理。有关 fleet 和 agent 如何协同工作的更多信息,请参见此处。

Kibana -> Fleet -> Agent policies.。选择策略 aws-vpc-flow-logs-s3-policy 并单击 Add integration。这将带你进入集成页面搜索 AWS 集成。如果你想监控多个 AWS 服务,最好选择 AWS 集成:

提供 AWS 访问密钥 ID 和秘密访问密钥进行身份验证,并允许 Elastic Agent 从 AWS 服务读取。还有其他可用的身份验证选项。详情请见此处。命名空间选项用于根据环境或任何其他标识符隔离数据:

关闭 other services 并使用 Collect VPC flow logs from S3。更新先前复制的 S3 存储桶和 SQS 队列 URL。保留 advance settings 作为默认设置:

向下滚动并单击 Existing hosts选项,因为我们已经安装了代理并选择策略 aws-vpc-flow-logs-s3-policy。保存并继续。这会将配置的集成推送到 Elastic Agent:

转到 Kibana -> Fleet -> Agent policies,策略 aws-vpc-flow-logs-s3-policy 已使用 AWS 集成进行更新。

几分钟后,你可以验证流日志是否已从 S3 提取到 Elastic。转到 Kibana -> Discover:

6)在 Kibana 仪表板中监控 VPC 流日志

集成附带仪表板等资产,这些资产是为常见用例预先构建的。转到 Kibana -> Dashboard 并搜索 VPC Flow logs:

更多仪表板!

正如承诺的那样,这里有一些仪表板,它们可以帮助使用 Elastic 代理提取方法监控我们设置中使用的 AWS 服务。这将有助于跟踪使用情况并有助于优化。

我们将使用 Elastic Agent 数据提取选项中使用的相同设置来配置设置和填充仪表板。

转到 Kibana -> Fleet -> aws-vpc-flow-logs-s3-policy 。选择 AWS integration 并切换到所需的服务并填写详细信息。

一些有趣的仪表板:

注意:所有仪表板都可以在 Kibana->Analytics->Dashboards 下找到

[Metrics AWS] Lambda Overview

如果你已使用 Elastic Serverless Forwarder 实现提取,则可以使用此仪表板跟踪 AWS Lambda 指标。它主要显示 Lambda 函数持续时间、错误和任何函数限制:

[Metrics AWS] S3 Overview

此仪表板概述了 S3 的使用情况,并有助于监控存储桶大小、对象数量等。通过跟踪陈旧的存储桶和对象,这可以帮助优化 S3 的使用情况:

[Logs AWS] S3 Server Access Log Overview

此仪表板显示 S3 服务器访问日志,并提供对存储桶发出的请求的详细记录。这在安全和访问审计中很有用,还有助于了解用户如何访问你的 S3 存储桶和对象:

[Metrics AWS] Usage Overview

此仪表板显示 AWS 服务的一般使用情况,并突出显示针对 AWS 服务的 API 使用情况。这有助于了解服务使用情况和潜在优化:

[Metrics AWS] Billing Overview

该仪表板显示服务的计费使用情况,并帮助监控服务花费了多少钱:

[Metrics AWS] SQS Overview

此仪表板显示 SQS 队列利用率,显示已发送、已接收的消息以及发送消息的任何延迟。这对于监控 SQS 队列是否存在任何问题非常重要,因为它是架构中的一个重要组件。SQS 的任何问题都可能导致数据提取延迟:

[Metrics AWS] EC2 Overview

如果你使用 Elastic 代理提取方法,则可以监视托管 Elastic 代理的 EC2 实例的 CPU、内存、磁盘等的利用率,这在流量负载较高时有助于确定实例的大小。这也可以用于你的其他 EC2 实例:

[Elastic Agent] S3 Input Metrics

此仪表板显示了 Elastic 代理的详细利用率,展示了 Elastic 代理如何处理 S3 输入以及监控与 SQS 和 S3 的交互。仪表板显示了 Elastic 代理在读取 SQS 消息和 S3 对象并将其转发到 Elasticsearch 时的聚合指标。结合 Metrics AWS EC2 Overview 仪表板,这可以帮助了解 EC2 和 Elastic 代理的利用率,并可能有助于扩展这些组件:

结论

Elasticsearch 提供了多种选项,可将数据从 AWS S3 同步到 Elasticsearch 部署中。在本演练中,我们演示了实现 Elastic Agent 提取选项并利用 Elastic 业界领先的搜索功能相对容易。

在本系列的第 3 部分中,我们将深入探讨使用 Elastic S3 Native Connector 作为提取 AWS S3 数据的另一种选择。

不要忘记查看本系列的第 1 部分:Elastic Serverless Forwarder。

你可以使用来自任何来源的数据构建搜索。查看此网络研讨会以了解 Elasticsearch 支持的不同连接器和来源。

准备好自己尝试一下了吗?开始免费试用。

原文:How to ingest data from AWS S3 into Elastic Cloud - Part 2 : Elastic Agent - Search Labs

相关推荐
sell-cloud1 小时前
Prompt Engineering要凉了?Fable 5.5能“猜“意图,但银行正在封杀AI Agent——企业AI的真正护城河是什么
人工智能·prompt
Navicat中国2 小时前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI3 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区3 小时前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
知了学历孙老师4 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
XCDoris5 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy5 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V5 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI5 小时前
AI英语教培智能体的开发
人工智能
物联网软硬件开发-轨物科技5 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人