亚马逊AWS官方博客
通过 Amazon Kinesis Data Streams 实现跨账户应用日志收集解决方案
一.概述
我们在之前的文章介绍了如何使用Fluent Bit结合Amazon Kinesis Data Streams、Amazon Lambda以及Amazon OpenSearch Search在同账户下构建应用日志系统。但是在有些场景下,企业可能会存在多个账户,因为企业内控的需要,管理员希望能够将各个账户下的应用日志通过Private Link传输到指定账户下,进行集中化的日志处理或审计。本篇文章中关于使用Amazon Lambda将日志写入Amazon OpenSearch Service中是基于上一篇博客介绍的内容,如果您之前没有阅读过《使用Fluent Bit与Amazon OpenSearch Service构建日志系统》,建议您先点击这里阅读。通过本文,您将了解到如何通过Fluent Bit结合Amazon STS AssumeRole、Amazon Kinesis Data Streams等服务,在跨账户的场景下进行集中化日志处理。阅读本文,您将会了解到:
- 如何通过Amazon Role Trust Relationship与Amazon STS AssumeRole配置跨账户传输日志权限
- 如何通过Amazon for Fluent Bit 2.21.1跨账户传输日志
二.简要说明
下面我们基于下图的总体架构,以us-west-2为例,详细讲解一下整个的实现过程。
在开始之前,我们考虑这样一种场景。我们在Amazon Web Services账户A的EC2中部署了Nginx,用于构建我们的Web Server,并将账户A的EC2的Nginx日志通过Private Link,发送到B账户的Amazon Kinesis Data Stream里。关于B账户的Amazon Lambda与Amazon Kinesis Data Stream以及VPC Endpoint、Amazon OpenSearch Service服务的创建,可以参考我们之前文章。
1.如何通过Amazon Role Trust Relationship与Amazon STS AssumeRole配置跨账户传输日志权限
- 我们先登录B账户,这里我们使用us-west-2区域,在IAM服务中创建一个角色,如下图所示:选择信任的实体类型处选择另一个账户,并输入账户A的ID。
点击下一步,创建策略,策略文档参考如下:
注意:请将<YOUR ACCOUNT ID>替换成您所使用的B账户ID,创建角色名称为demo-writing-kds。
- 登录A账户,同样选择us-west-2区域。创建EC2,并安装Fluent Bit。安装步骤同样可以参考我们之前文章的“安装与配置Amazon for Fluent Bit 2.21.1”部分,安装过程我们可以将/etc/fluent-bit/conf/fluent-bit.conf文件内容设置为空。
- 为EC2创建新的IAM角色,“use cases”我们选择EC2,点击Next,创建策略,配置Amazon STS AssumeRole,策略文档参考如下:
注意:请将<demo-writing-kds>替换成您在前面步骤所创建demo-writing-kds角色的ARN,该角色在B账户中。
2.配置Amazon for Fluent Bit 2.21.1通过Private Link跨账户传输日志
我们还是在A账户下选择us-west-2区域。注意,以下场景不需要在A账户下创建Amazon Kinesis Data Stream。
- 让EC2通过Private Link访问B账户的Amazon Kinesis Data Streams。创建Amazon Kinesis Data Streams的VPC Endpoint,为了简化,在选择VPC时我们可以选择EC2所在的VPC。
若创建新的安全组,安全组的入站规则需添加允许来自于EC2的所属安全组访问443端口,入站规则参考下图:
- 登录EC2,编辑
/etc/fluent-bit/conf/fluent-bit.conf
文件,为Fluent Bit的output插件“kinesis_streams”配置Arn,完整配置文件内容参考如下:
同样,我们需要将<demo-writing-kds>
替换成demo-writing-kds
角色的ARN
- 启动Fluent Bit,查看日志,验证是否成功。
- 登录Amazon OpenSearch Service的dashboard,您即可看到写入的日志。
注意:如果想了接如何通过Amazon Lambda消费Amazon Kinesis Data Stream的日志消息,并将日志写入到Amazon OpenSearch Service中,可以点击这里了解。关于如何通过公网方式使用Nginx代理方式访问VPC内的OpenSearch dashboard,大家可以参考我们的官方文档。
三.总结
在本文中,我们介绍了如何通过开源日志收集工具Fluent Bit,在多账户的场景下结合Amazon Role Trust Relationship与Amazon STS AssumeRole,并且通过使用VPC Endpoint,我们还可以用内网访问Kinesis Data Streams,从而满足企业内控的需要。在实际使用时,我们也需要注意跨账户使用VPC Endpoint连接Kinesis Data Streams时,两个账户下对应的服务必须处于相同的Region,企业可以结合自身实际情况来决定是否启用VPC Endpoint。
四.参考资料
- Fluent Bit资料:https://docs.fluentbit.io/manual/