如何将数据从 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

相关推荐
珠海新立电子科技有限公司25 分钟前
FPC柔性线路板与智能生活的融合
人工智能·生活·制造
IT古董39 分钟前
【机器学习】机器学习中用到的高等数学知识-8. 图论 (Graph Theory)
人工智能·机器学习·图论
Natural_yz43 分钟前
大数据学习17之Spark-Core
大数据·学习·spark
曼城周杰伦1 小时前
自然语言处理:第六十三章 阿里Qwen2 & 2.5系列
人工智能·阿里云·语言模型·自然语言处理·chatgpt·nlp·gpt-3
学Linux的语莫1 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
余炜yw2 小时前
【LSTM实战】跨越千年,赋诗成文:用LSTM重现唐诗的韵律与情感
人工智能·rnn·深度学习
Karoku0662 小时前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
莫叫石榴姐2 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
如若1232 小时前
利用 `OpenCV` 和 `Matplotlib` 库进行图像读取、颜色空间转换、掩膜创建、颜色替换
人工智能·opencv·matplotlib
YRr YRr2 小时前
深度学习:神经网络中的损失函数的使用
人工智能·深度学习·神经网络