随着越来越多的组织利用 Amazon Web Services (AWS) 云平台和服务来提高运营效率并将产品推向市场,管理日志成为保持可见性和保护多账户 AWS 环境的关键组成部分。传统上,日志存储在 Amazon Simple Storage Service (Amazon S3) 中,然后发送到外部监控和分析解决方案以进行进一步处理。
为了简化此过程并减少管理开销,AWS 用户现在可以利用新的 Amazon Kinesis Firehose Delivery Stream 将日志实时摄取到 AWS 中的 Elastic Cloud 中,并在 Elastic Stack 中与其他日志一起查看,以进行集中分析。这消除了对诸如 VM 供应或数据发送器操作等耗时且昂贵的程序的需求。
Elastic Observability 统一了日志、指标和应用程序性能监控 (APM) 跟踪,以便在您的混合AWS 环境及其本地数据集中提供完整的上下文视图。Elastic Observability 使您能够跨各种 AWS 服务跟踪和监控性能,包括 AWS Lambda、Amazon Elastic Compute Cloud (EC2)、Amazon Elastic Container Service (ECS)、Amazon Elastic Kubernetes Service (EKS)、Amazon Simple Storage Service (S3)、Amazon Cloudtrail、Amazon Network Firewall 等。
在本博客中,我们将引导您了解如何使用 Amazon Kinesis Data Firehose 集成 - Elastic 在 Amazon Kinesis Firehose 下拉列表中列出 - 简化您的架构并将日志发送到 Elastic,以便您可以监控和保护您的多账户 AWS 环境。
发布 Kinesis Firehose 方法
Elastic 目前提供基于代理和无服务器的机制,我们很高兴宣布添加 Kinesis Firehose 方法。这种新方法使客户能够直接从 AWS 将日志摄取到 Elastic 中,从而补充我们现有的选项。
- Elastic Agent 从 CloudWatch 和 S3 拉取指标和日志,这些日志通常从服务(例如,EC2、ELB、WAF、Route53)推送,并将它们摄取到 Elastic Cloud 中。
- Elastic 的无服务器转发器(运行 Lambda 并且在 AWS SAR 中可用)将来自 Kinesis Data Stream、Amazon S3 和 AWS Cloudwatch 日志组的日志发送到 Elastic。要了解有关此主题的更多信息,请参阅此博客文章。
- Amazon Kinesis Firehose 直接从 AWS 将日志摄取到 Elastic 中(特别是,如果您在 AWS 上运行 Elastic Cloud)。
在本博客中,我们将介绍最后一个选项,因为我们最近发布了 Amazon Kinesis Data Firehose 集成。具体来说,我们将回顾
- Amazon Kinesis Data Firehose 集成的总体概述以及它如何与 AWS 协同工作
- 在 AWS 和 Elastic Cloud 上设置 Amazon Kinesis Data Firehose 集成的分步说明
在本博客结束时,您将掌握使用 Elastic Observability 和 Amazon Kinesis Data Firehose 简化 AWS 日志管理所需的知识和工具。
先决条件和配置
如果您打算按照此博客文章中概述的步骤进行操作,则需要事先准备好一些先决条件和配置。
- 您需要在 Elastic Cloud 上拥有一个帐户,并在 AWS 上部署一个堆栈。有关在 AWS 上部署堆栈的说明,请参阅此处。这是 AWS Firehose 日志摄取所必需的。
- 您还需要一个 AWS 账户,并具有从 AWS 拉取数据所需的权限。有关所需权限的详细信息,请参阅我们的文档。
- 最后,请确保为部署应用程序的 VPC 启用 VPC 流日志,并将它们发送到 AWS Firehose。
Elastic 的 Amazon Kinesis Data Firehose 集成
Elastic 已与 AWS 合作,提供 Amazon Kinesis Data Firehose 与 Elastic 的无缝集成,从而可以直接将数据从 Amazon Kinesis Data Firehose 摄取到 Elastic 中,而无需代理或 Beats。您所需要做的就是配置 Amazon Kinesis Data Firehose Delivery Stream 将其数据发送到 Elastic 的端点。在此配置中,我们将演示如何将 VPC 流日志和防火墙日志摄取到 Elastic 中。您可以按照类似的过程将 AWS 环境中的其他日志摄取到 Elastic 中。
有三种不同的配置可用于将 VPC 流日志和网络防火墙日志摄取到 Elastic 中。一种配置涉及通过 CloudWatch 发送日志,另一种配置使用 S3 和 Kinesis Firehose;每种配置都有其独特的设置。使用 Cloudwatch 和 S3,您可以存储和转发,但使用 Kinesis Firehose,您必须立即摄取。但是,在本博客文章中,我们将重点介绍这种新配置,该配置涉及将 VPC 流日志和网络防火墙日志直接发送到 Elastic。
我们将指导您完成最简单的设置配置,该设置涉及将 VPC 流日志和防火墙日志直接发送到 Amazon Kinesis Data Firehose,然后发送到 Elastic Cloud。
注意: 请务必注意,此设置仅与 AWS 上的 Elastic Cloud 兼容,不能用于自管理、本地部署或其他云提供商的 Elastic 部署。
设置步骤
要开始设置 Amazon Kinesis Data Firehose 和 Elastic 之间的集成,让我们逐步完成必要的步骤。
步骤 0:获取 Elastic Cloud 帐户
按照提供的说明在 Elastic Cloud 上创建一个帐户,以开始使用 Elastic Cloud。
步骤 1:在 AWS 上部署 Elastic
您可以通过两种不同的方式在 AWS 上部署 Elastic:通过 UI 或通过 Terraform。 我们先从 UI 选项开始。
登录 Elastic Cloud 后,在 Elastic 上创建一个部署。 务必确保该部署位于 AWS 上的 Elastic Cloud 上,因为 Amazon Kinesis Data Firehose 连接到必须位于 AWS 上的特定端点。
创建部署后,务必复制 Elasticsearch 端点,以确保配置过程顺利进行。
应该复制 Elasticsearch HTTP 端点并将其用于 Amazon Firehose 目标配置,因为这是必需的。 以下是端点的示例外观:
https://elastic-O11y-log.es.us-east-1.aws.found.io
使用 Terraform 的替代方法
在 AWS 上部署 Elastic Cloud 的另一种方法是使用 Terraform。 这也是自动化和简化部署过程的有效方法。
首先,只需创建一个 Terraform 配置文件,其中概述必要的基础设施。 此文件应包含 Elastic Cloud 部署的资源以及任何所需的 IAM 角色和策略。 通过使用这种方法,您可以简化部署过程并确保跨环境的一致性。
使用 Terraform 创建 Elastic Cloud 部署的一个简单方法是使用此 Github 存储库。 此资源允许您指定 Elastic Cloud 部署的区域、版本和部署模板,以及您需要的任何其他设置。
步骤 2:要启用 Elastic 的 AWS 集成,请导航到部署中的 Elastic 集成部分
要在部署的 Elastic 集成部分中安装 AWS 资产,请按照以下步骤操作
- 登录到您的 Elastic Cloud 部署并打开 Kibana。
- 首先,转到 Kibana 的 管理 部分,然后单击“集成”。
- 导航到 AWS 集成,然后在 设置 中单击“安装 AWS 资产”按钮。此步骤很重要,因为它安装必要的资产,例如 仪表板 和 采集管道,以支持从 AWS 服务到 Elastic 的数据采集。
步骤 3:在 AWS 控制台上设置 Amazon Kinesis Data Firehose 交付流
您可以通过两种不同的方式设置 Kinesis Data Firehose 交付流:通过 AWS 管理控制台或通过 Terraform。 我们先从控制台选项开始。
要在 AWS 上设置 Kinesis Data Firehose 交付流,请按照这些步骤操作
-
转到 AWS 管理控制台,然后选择 Amazon Kinesis Data Firehose。
-
单击“创建交付流”。
-
选择一个交付流名称,然后选择“直接 PUT”或其他源作为源。
-
选择 Elastic 作为目标。
-
在 Elastic 目标部分中,输入您从 Elastic Cloud 部署中复制的 Elastic 端点 URL。
-
选择如上所示的内容编码和重试持续时间。
-
为您的 AWS 日志类型输入适当的参数值。 例如,对于 VPC 流日志,您需要指定 _ es_datastream_name _ 和 _ logs-aws.vpc flow-default _。
-
配置 Amazon S3 存储桶作为 Amazon Kinesis Data Firehose 交付流失败数据或所有数据的源备份,并为交付流配置任何所需的标签。
-
查看设置,然后单击“创建交付流”。
在上面的示例中,我们使用 es_datastream_name 参数通过 logs-aws.vpcflow-default 数据流提取 VPC 流日志。 根据您的用例,可以使用以下类型的日志配置此参数
- logs-aws.cloudfront_logs-default (AWS CloudFront 日志)
- logs-aws.ec2_logs-default(AWS CloudWatch 中的 EC2 日志)
- logs-aws.elb_logs-default (Amazon Elastic Load Balancing 日志)
- logs-aws.firewall_logs-default (AWS 网络防火墙日志)
- logs-aws.route53_public_logs-default (Amazon Route 53 公共 DNS 查询日志)
- logs-aws.route53_resolver_logs-default (Amazon Route 53 DNS 查询和响应日志)
- logs-aws.s3access-default (Amazon S3 服务器访问日志)
- logs-aws.vpcflow-default (AWS VPC 流日志)
- logs-aws.waf-default (AWS WAF 日志)
使用 Terraform 的替代方法
在 Terraform 中使用 " aws_kinesis_firehose_delivery_stream" 资源是创建 Kinesis Firehose 交付流的另一种方法,允许您指定交付流名称、数据源和目标 - 在这种情况下,是 Elasticsearch HTTP 端点。 要进行身份验证,您需要提供端点 URL 和 API 密钥。 利用此 Terraform 资源是自动化和简化部署过程的绝佳方式,从而提高一致性和效率。
这是一个示例代码,展示了如何使用 Terraform 创建将数据发送到 Elasticsearch HTTP 端点的 Kinesis Firehose 交付流
resource "aws_kinesis_firehose_delivery_stream" “Elasticcloud_stream" {
name = "terraform-kinesis-firehose-ElasticCloud-stream"
destination = "http_endpoint”
s3_configuration {
role_arn = aws_iam_role.firehose.arn
bucket_arn = aws_s3_bucket.bucket.arn
buffer_size = 5
buffer_interval = 300
compression_format = "GZIP"
}
http_endpoint_configuration {
url = "https://cloud.elastic.co/"
name = “ElasticCloudEndpoint"
access_key = “ElasticApi-key"
buffering_hints {
size_in_mb = 5
interval_in_seconds = 300
}
role_arn = "arn:Elastic_role"
s3_backup_mode = "FailedDataOnly"
}
}
步骤 4:配置 VPC 流日志以发送到 Amazon Kinesis Data Firehose
要完成设置,您需要在部署应用程序的 VPC 中配置 VPC 流日志,并将它们发送到您在步骤 3 中设置的 Amazon Kinesis Data Firehose 交付流。
在 AWS 中启用 VPC 流日志是一个简单的过程,涉及多个步骤。 以下是在您的 AWS 账户中启用 VPC 流日志的逐步详细信息
-
选择要为其启用流日志的 VPC。
-
在 VPC 仪表板中,单击“日志”部分下的“流日志”。
-
单击“创建流日志”按钮以创建新的流日志。
-
在“创建流日志”向导中,提供以下信息
选择流日志的目标:在这种情况下,是同一 AWS 账户中的 Amazon Kinesis Data Firehose。
- 提供流日志的名称。
- 选择要为其启用流日志的 VPC 和网络接口。
- 选择流日志格式:AWS 默认格式或自定义格式。
-
配置流日志的 IAM 角色。 如果您有现有的 IAM 角色,请选择它。 否则,创建一个新的 IAM 角色,该角色授予流日志所需的权限。
-
查看流日志配置,然后单击“创建”。
创建 VPC 流日志。
步骤 5:几分钟后,检查流是否正在进入 Elastic
要确认 VPC 流日志是否正在摄取到 Elastic 中,您可以在 Kibana 中查看日志。 您可以通过在 Kibana Discover 选项卡中搜索索引,然后按适当的索引和时间范围过滤结果来完成此操作。 如果 VPC 流日志正在流入,您应该会看到一个文档列表,表示 VPC 流日志。
步骤 6:导航到 Kibana,查看在 [Logs AWS] VPC 流日志概览仪表板中解析和可视化的日志
最后,有一个 Elastic 开箱即用 (OOTB) VPC 流日志仪表板,其中显示了正在访问 VPC 的顶部 IP 地址、它们的地理位置、流的时间序列以及所选时间范围内 VPC 流日志拒绝的摘要。 此仪表板可以提供有关您的网络流量和潜在安全威胁的宝贵见解。
注意:有关其他 VPC 流日志分析功能,请参阅此博客。
步骤 7:配置 AWS 网络防火墙日志以发送到 Kinesis Firehose
要为 AWS 网络防火墙日志创建 Kinesis Data Firehose 交付流,请首先登录 AWS 管理控制台,导航到 Kinesis 服务,选择“Data Firehose”,然后按照步骤 3 中所示的分步说明操作。指定 Elasticsearch 端点、API 密钥,添加一个参数 (_ es_datastream_name=logs-aws.firewall_logs-default _),然后创建交付流。
其次,要设置网络防火墙规则组以将日志发送到 Kinesis Firehose,请转到控制台的网络防火墙部分,创建一个规则组,添加一个规则以允许流量流向 Kinesis 端点,然后将该规则组附加到您的网络防火墙配置。 最后,通过网络防火墙将流量发送到 Kinesis Firehose 端点来测试配置,并验证日志是否已交付到您的 S3 存储桶。
请按照以下说明设置防火墙规则和日志记录。
- 设置网络防火墙规则组以将日志发送到 Amazon Kinesis Data Firehose
- 转到 AWS 管理控制台,然后选择“网络防火墙”。
- 单击左侧菜单中的“规则组”,然后单击“创建规则组”。
- 根据您的要求选择“无状态”或“有状态”,然后为您的规则组命名。 单击“创建规则组”。
- 向规则组添加规则,以允许流量流向 Kinesis Firehose 端点。 例如,如果您使用的是 us-east-1 区域,您将添加如下规则:json
{
"RuleDefinition": {
"Actions": [
{
"Type": "AWS::KinesisFirehose::DeliveryStream",
"Options": {
"DeliveryStreamArn": "arn:aws:firehose:us-east-1:12387389012:deliverystream/my-delivery-stream"
}
}
],
"MatchAttributes": {
"Destination": {
"Addresses": ["api.firehose.us-east-1.amazonaws.com"]
},
"Protocol": {
"Numeric": 6,
"Type": "TCP"
},
"PortRanges": [
{
"From": 443,
"To": 443
}
]
}
},
"RuleOptions": {
"CustomTCPStarter": {
"Enabled": true,
"PortNumber": 443
}
}
}
- 保存规则组。
- 将规则组附加到您的网络防火墙配置
- 转到 AWS 管理控制台,然后选择“网络防火墙”。
- 单击左侧菜单中的“防火墙配置”,然后选择要附加规则组的配置。
- 向下滚动到“关联”,然后单击“编辑”。
- 选择您在步骤 2 中创建的规则组,然后单击“保存”。
- 测试配置
- 通过网络防火墙将流量发送到 Kinesis Firehose 端点,并验证日志是否已交付到您的 S3 存储桶。
步骤 8:导航到 Kibana,查看在 [Logs AWS] 防火墙日志仪表板中解析和可视化的日志
总结
我们很高兴为您带来这个最新的 AWS Cloud 和 Kinesis Data Firehose 生产集成。 整合日志和指标以获取云和本地环境的可见性对于当今的分布式环境和应用程序至关重要。
从 EC2、Cloudwatch、Lambda、ECS 和 SAR,Elastic 集成允许您快速轻松地开始使用摄取您的遥测数据,用于监控、分析和可观测性。 Elastic 不断提供无摩擦的客户体验,允许随时随地访问所有遥测数据 — 这种与 AWS 的精简的本机集成是我们承诺的最新示例。
立即开始免费试用
您可以从 AWS Marketplace 中开始 7 天免费试用 Elastic Cloud,立即开始监控和改善您的用户体验!
本帖中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。任何当前不可用的特性或功能可能不会按时交付或根本不交付。