使用 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 服务创建一个部署。该部署包括一个用于存储和搜索数据的 Elasticsearch 集群,以及用于可视化和管理数据的 Kibana。
在本教程中,我们假设
- 您的 VPC 流日志已导出到 S3 存储桶。要了解如何操作,请参阅 AWS 文档中关于将流日志发布到 S3 存储桶的内容。
- 您的 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 账户号码。将
<s3-bucket-arn>
替换为包含您的 VPC 流日志的 S3 存储桶的 ARN。保存更改并记下队列 URL。稍后在 Kibana 中配置 AWS 集成时,您将需要它。
在 S3 存储桶上启用事件通知
编辑现在您的队列已创建,请转到包含 VPC 流日志的 S3 存储桶的属性,并启用事件通知
- 单击 创建事件通知。
- 对于事件类型,选择 所有对象创建事件,以便为每个对象创建事件发送通知。
- 对于目标,选择您刚刚创建的 SQS 队列。
步骤 2:安装 AWS 集成
编辑在这一步中,您将在 Kibana 中安装 AWS 集成。AWS 集成包含用于从 AWS 收集各种日志和指标的输入。您将首先配置集成以收集 VPC 流日志。在使其工作后,您将学习如何添加 S3 访问日志。
要添加集成
- 在主菜单中查找 集成,或使用 全局搜索字段。
- 在查询栏中,搜索 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 中,在主菜单中查找 Fleet,或使用 全局搜索字段。
- 在 代理 选项卡上,单击您的代理正在使用的策略。
- 编辑 AWS 集成策略并启用 从 S3 收集 S3 访问日志 选择器。
- 在 队列 URL 字段中,输入您为 S3 访问日志通知创建的 SQS 队列的 URL,然后保存并部署您的更改。
Elastic Agent 需要几分钟才能更新其配置并开始收集数据。
步骤 5:可视化 AWS 日志
编辑现在日志正在流式传输到 Elasticsearch,您可以在 Kibana 中将其可视化。要查看原始日志,请在主菜单中查找 Discover,或使用 全局搜索字段。
请注意,您可以根据特定的数据流进行筛选。例如,设置 data_stream.dataset : "aws.s3access"
以显示 S3 访问日志。
AWS 集成还提供了预构建的仪表板,您可以使用它们来可视化数据。在 Kibana 中,打开主菜单并单击 仪表板。搜索 VPC Flow
并选择名为 [Logs AWS] VPC Flow Log Overview 的仪表板。
接下来,打开名为 [Logs AWS] S3 Server Access Log Overview 的仪表板。
步骤 6:收集 AWS 指标
编辑在此步骤中,您将配置 AWS 集成,以使用 GetMetricData API 定期从 AWS CloudWatch 获取 AWS 服务的监控指标。具体来说,您将学习如何流式传输和处理账单和 EC2 指标。
如果您配置 AWS 集成来收集指标,可能会产生额外的 CloudWatch API 请求费用。要了解更多信息,请参阅 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 中,在主菜单中查找 Fleet,或使用 全局搜索字段。
- 在 代理 选项卡上,单击您的代理正在使用的策略。
- 编辑 AWS 集成策略并启用 收集账单指标 选择器。您可以接受默认设置。
- 同时启用 收集 EC2 指标 选择器。您可以选择更改默认设置,然后保存并部署您的更改。
Elastic Agent 需要几分钟才能更新其配置并开始收集数据。
步骤 7:可视化 AWS 指标
编辑现在,指标正在流式传输到 Elasticsearch 中,您可以在 Kibana 中可视化它们。在主菜单中查找 Discover 或使用 全局搜索字段。选择 metrics-*
数据视图,然后根据 data_stream.dataset: "aws.ec2_metrics"
进行筛选。
AWS 集成还提供了预构建的仪表板,您可以使用它们来可视化数据。在主菜单中查找 仪表板 或使用 全局搜索字段。
搜索 EC2 并选择名为 [Metrics AWS] EC2 Overview 的仪表板。
要跟踪您的 AWS 账单,请打开 [Metrics AWS] Billing Overview 仪表板。
恭喜您!您已完成本教程。