使用 Elastic Agent 监控 Amazon Web Services (AWS)
编辑使用 Elastic Agent 监控 Amazon Web Services (AWS)编辑
在本教程中,您将学习如何部署 Elastic Agent 并使用 Elastic 可观测性监控您的 AWS 基础架构。
您将学到什么编辑
您将学习如何
- 从 AWS 收集 VPC 流量日志和 S3 访问日志。
- 从 CloudWatch 收集账单和 EC2 指标。
- 安装和配置 Elastic Agent 以将日志和指标流式传输到 Elasticsearch。
- 在 Kibana 中可视化您的数据。
有关更多用例,请查看 AWS 集成。
首先,您将专注于监控日志,然后在确认日志已流式传输到 Elasticsearch 后添加指标。
准备工作编辑
使用我们在 Elastic Cloud 上托管的 Elasticsearch Service 创建部署。该部署包括用于存储和搜索数据的 Elasticsearch 集群,以及用于可视化和管理数据的 Kibana。
在本教程中,我们假设
- 您的 VPC 流量日志已导出到 S3 存储桶。要了解如何操作,请参阅有关 将流量日志发布到 S3 存储桶 的 AWS 文档。
- 您的 AWS 账户中有 EC2 实例。默认情况下,Amazon EC2 会将指标数据发送到 CloudWatch。如果您的账户中没有 EC2 实例,请参阅 AWS 文档 以了解如何启动、连接和使用 Linux 实例。
步骤 1:为 VPC 流量日志创建队列和通知编辑
在此步骤中,您将创建一个 Amazon Simple Queue Service (SQS) 队列,并将包含 VPC 流量日志的 S3 存储桶配置为在 S3 存储桶中出现新日志时向 SQS 队列发送消息。
您应该已经拥有一个包含导出 VPC 流量日志的 S3 存储桶。如果没有,请立即创建一个。要了解如何操作,请参阅 将流量日志发布到 S3 存储桶。
创建 SQS 队列编辑
要创建 SQS 队列,请执行以下操作
-
转到 SQS 控制台 并创建一个 SQS 队列。创建一个使用默认设置的标准 SQS 队列。
确保在与 S3 存储桶相同的区域中创建 SQS 队列。
-
编辑您创建的队列,并使用 JSON 对象定义高级访问策略。访问策略允许将 S3 ObjectCreated 事件发送到队列。
{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SQS:SendMessage", "Resource": "<sqs-arn>", "Condition": { "StringEquals": { "aws:SourceAccount": "<source-account>" }, "ArnLike": { "aws:SourceArn": "<s3-bucket-arn>" } } } ] }
将
<sqs-arn>
替换为 SQS 队列的 ARN。将
<source-account>
替换为您的 AWS 账户 ID。将
<s3-bucket-arn>
替换为包含 VPC 流量日志的 S3 存储桶的 ARN。保存您的更改并记下队列 URL。稍后在 Kibana 中配置 AWS 集成时将需要它。
在 S3 存储桶上启用事件通知编辑
现在您的队列已创建,请转到包含 VPC 流量日志的 S3 存储桶的属性,并启用事件通知
- 单击 创建事件通知。
- 对于事件类型,请选择 所有对象创建事件 以便为每个对象创建事件发送通知。
- 对于目标,请选择您刚刚创建的 SQS 队列。
步骤 2:安装 AWS 集成编辑
在此步骤中,您将在 Kibana 中安装 AWS 集成。AWS 集成包含用于从 AWS 收集各种日志和指标的输入。您将首先配置集成以收集 VPC 流量日志。在您完成此操作后,您将学习如何添加 S3 访问日志。
要添加集成,请执行以下操作
- 转到 Kibana 主页并单击 添加集成。
- 在查询栏中,搜索 AWS 并选择 AWS 集成以查看有关它的更多详细信息。
- 单击 添加 AWS。
-
配置集成名称并选择添加描述。
如果您没有看到用于配置集成的选项,则您可能处于为新部署设计的流程中。请按照步骤操作,然后在准备好配置集成时返回本教程。
-
指定连接到 AWS 和读取日志文件所需的 AWS 凭据。在本教程中,我们使用 AWS 访问密钥 ID 和密钥,但还有其他几种方法可以提供 AWS 凭据。要了解更多信息,请参阅 AWS 集成 文档。您指定的账户必须至少具有以下权限
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "sqs:ReceiveMessage", "sqs:ChangeMessageVisibility", "sqs:DeleteMessage" ], "Effect": "Allow", "Resource": "*" } ] }
- 关闭除 从 S3 收集 VPC 流量日志 之外的所有数据收集选择器。
- 更改默认值,并在 队列 URL 字段中,指定您之前创建的 SQS 队列的 URL。
- 单击 保存并继续。此步骤需要一两分钟才能完成。完成后,您将拥有一个包含您刚刚指定的 AWS 配置的代理策略。
应该会出现一个弹出窗口,提示您 将 Elastic Agent 添加到您的主机。
步骤 3:在您的机器上安装并运行 Elastic Agent编辑
您可以在可以访问 AWS 账户并将事件转发到 Elasticsearch 的任何主机上安装 Elastic Agent。
-
在弹出窗口中,单击 将 Elastic Agent 添加到您的主机 以打开 添加代理 弹出窗口。
如果您不小心关闭了弹出窗口,请转到 Fleet → 代理,然后单击 添加代理 以访问安装说明。
添加代理 弹出窗口有两个选项:注册到 Fleet 和 独立运行。默认设置是将代理注册到 Fleet,因为这可以通过在 Kibana 中提供集中管理工具来减少管理主机的人员的工作量。
-
您需要的注册令牌应该已经选择了。
注册令牌特定于您刚刚创建的 Elastic Agent 策略。当您运行命令以将代理注册到 Fleet 时,您将传入注册令牌。
- 要下载、安装和注册 Elastic Agent,请选择您的主机操作系统并复制说明中显示的安装命令。
- 在要安装 Elastic Agent 的主机上运行该命令。
Elastic Agent 需要几分钟时间才能注册到 Fleet、下载策略中指定的配置并开始收集数据。您可以等待确认传入数据,也可以关闭窗口。
到目前为止您已经实现了什么?
VPC 流量日志被发送到 S3 存储桶,该存储桶向 SQS 队列发送通知。当 Elastic Agent 检测到队列中有新消息时,它会使用消息中的信息从 S3 存储桶中检索流量日志。Elastic Agent 处理每条消息,将其解析为字段,然后将数据发送到 Elasticsearch。
步骤 4:收集 S3 访问日志编辑
接下来,您将收集包含 VPC 流量日志的存储桶生成的 S3 访问日志。您可以使用任何 S3 存储桶来生成 S3 访问日志,但为了避免在 AWS 中创建额外的存储桶,您将使用已存在的存储桶。
您为访问日志创建一个新的 S3 存储桶和队列,然后配置旧的 S3 存储桶以生成访问日志。
完成后,您的监控架构将如下所示
为 S3 访问日志创建存储桶和队列编辑
要为 S3 访问日志创建新的存储桶和队列,请执行以下操作
-
在 AWS S3 控制台 中,单击 创建存储桶。为存储桶指定一个 名称 并指定要部署它的 区域。
确保在与包含 VPC 流量日志的存储桶相同的区域中创建 S3 存储桶和 SQS 队列(下一步)。
- 按照您之前学习的步骤创建一个 SQS 队列并编辑访问策略(使用新的 S3 存储桶和队列的 ARN)。记下队列 URL,因为稍后在配置 S3 访问日志收集时将需要它。
- 配置新的 S3 存储桶以在创建对象时向新队列发送通知(按照您之前学习的步骤操作)。
- 返回到旧的 S3 存储桶(包含 VPC 流量日志的存储桶),并在 属性 下,编辑 服务器访问日志记录 属性。启用服务器访问日志记录,并选择您创建的新存储桶作为目标存储桶。
现在您可以编辑代理策略并配置 S3 访问日志收集。
配置集成以收集 S3 访问日志编辑
您部署的 Elastic Agent 已在运行并收集 VPC 流量日志。现在,您需要编辑代理策略并配置集成以收集 S3 访问日志。
- 在 Kibana 的主菜单中,转到 舰队 → 代理,然后单击您的代理正在使用的策略。
- 编辑 AWS 集成策略并打开 从 S3 收集 S3 访问日志 选择器。
- 在 队列 URL 字段中,输入您为 S3 访问日志通知创建的 SQS 队列的 URL,然后保存并部署您的更改。
Elastic Agent 需要几分钟时间才能更新其配置并开始收集数据。
步骤 5:可视化 AWS 日志编辑
现在日志正在流式传输到 Elasticsearch 中,您可以在 Kibana 中对其进行可视化。要查看原始日志,请打开 Kibana 中的主菜单,然后单击 日志。请注意,您可以根据特定数据流进行过滤。例如,设置 data_stream.dataset : "aws.s3access"
以显示 S3 访问日志。
AWS 集成还附带预构建的仪表板,您可以使用它们来可视化数据。在 Kibana 中,打开主菜单并单击 仪表板。搜索 VPC 流量
并选择名为 [日志 AWS] VPC 流量日志概览 的仪表板
接下来,打开名为 [日志 AWS] S3 服务器访问日志概览 的仪表板
步骤 6:收集 AWS 指标编辑
在此步骤中,您将配置 AWS 集成以使用 AWS 服务的 GetMetricData API 定期从 AWS CloudWatch 获取监控指标。具体来说,您将学习如何流式传输和处理账单和 EC2 指标。
如果您将 AWS 集成配置为收集指标,则可能会产生 CloudWatch API 请求的额外 AWS 费用。要了解更多信息,请参阅Amazon CloudWatch 定价页面。
-
确保用于从 CloudWatch 收集指标的 AWS 账户至少具有以下权限
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DescribeInstances", "ec2:DescribeRegions", "cloudwatch:GetMetricData", "cloudwatch:ListMetrics", "sts:GetCallerIdentity", "iam:ListAccountAliases", "tag:getResources", "ce:GetCostAndUsage" ], "Effect": "Allow", "Resource": "*" } ] }
- 在 Kibana 的主菜单中,转到 舰队 → 代理,然后单击您的代理正在使用的策略。
- 编辑 AWS 集成策略并打开 收集账单指标 选择器。您可以接受默认值。
- 同时打开 收集 EC2 指标 选择器。可以选择更改默认值,然后保存并部署您的更改。
Elastic Agent 需要几分钟时间才能更新其配置并开始收集数据。
步骤 7:可视化 AWS 指标编辑
现在指标正在流式传输到 Elasticsearch 中,您可以在 Kibana 中对其进行可视化。在 Kibana 中,打开主菜单并单击 发现。选择 metrics-*
数据视图,然后过滤 data_stream.dataset: "aws.ec2_metrics"
AWS 集成还附带预构建的仪表板,您可以使用它们来可视化数据。在 Kibana 中,打开主菜单并单击 仪表板。
搜索 EC2 并选择名为 [指标 AWS] EC2 概览 的仪表板
要跟踪您的 AWS 账单,请打开 [指标 AWS] 账单概览 仪表板
恭喜!您已完成本教程。要尝试本系列中的其他教程,请访问教程页面。