如何将数据从 AWS S3 导入到 Elastic Cloud - 第 2 部分:Elastic Agent
作者:来自 ElasticHemendra 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 函数持续时间、错误和任何函数限制: [MetricsAWS] 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] SQSOverview 此仪表板显示 SQS 队列利用率,显示已发送、已接收的消息以及发送消息的任何延迟。这对于监控 SQS 队列是否存在任何问题非常重要,因为它是架构中的一个重要组件。SQS 的任何问题都可能导致数据提取延迟: [Metrics AWS] EC2Overview 如果你使用 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