亚马逊AWS官方博客
使用 FluentBit 抽取日志到 AOS 中不同索引 Index
![]() |
1. 场景说明
AWS OpenSearch Service(简称 AOS) 是一个基于 Elasticsearch 的开源分布式搜索和分析引擎,专门为日志搜索和分析而设计。它提供了以下优势:
- 高度可扩展性:可根据需求轻松扩展或缩减集群规模,满足不断变化的日志数据量。
- 近乎实时搜索:日志数据几乎实时可搜索,确保及时发现和响应问题。
- 强大的查询和分析功能:支持复杂的查询和聚合操作,帮助深入挖掘日志数据洞见。
- 高可用性和容错性:采用分布式架构,确保服务的高可用性和容错性。
- 安全性:提供多层安全控制,包括访问控制、加密传输和审计日志等。
- 与 AWS 服务无缝集成:可与 AWS 其他服务(如 CloudWatch、Kinesis 等)无缝集成,构建完整的日志分析解决方案。
FluentBit 是一款轻量级的日志处理器,常用于从各种数据源收集日志并将其发送到不同的目标,包括 AWS OpenSearch Service (AOS)。在真实的业务场景中往往存在多种类型的日志,例如系统日志、安全日志、应用日志等。不同类型的日志需要隔离保存并实现访问控制,在 AOS 中可以使用索引 Index 的设计实现数据的分类存储、访问控制以及生命周期管理。
2. 部署架构
![]() |
- HAQM Opensearch 集群以私有化形式部署在 VPC 内部
- 在一个 HAQM Opensearch 域存在多个 Index
- 最终用户通过部署在相同 VPC 内公共子网的 Windows 跳板机访问 HAQM Opensearch Dashboard
- 用于模拟应用服务器的 EC2 中部署 FluentBit 并持续抽取/var/log/secure 和/var/log/messages 中的安全和 syslog 到不同 HAQM Opensearch Index
3. 部署过程
3.1 创建 AOS 集群
推荐 VPC 私有子网内创建 AOS 集群,避免暴露到公网的安全隐患,但要注意私有集群的 Dashboard 无法直接通过 Internet 访问,需要额外创建一台 Windows 跳板机打开。
3.2 创建访问 AOS 集群的所需的 EC2
与 AOS 相同 VPC 内的公共子网内创建 EC2 或者是使用现有的 EC2,请注意 EC2 使用的 IAM role 必须要具备访问 Opensearch 服务的相关权限,如果是测试可以考虑分配 HAQMOpenSearchServiceFullAccess 权限。后续在 Fluent-bit 中将使用这个 IAM Role 完成日志上传到 Opensearch,避免每台 EC2 中都需要配置 AK/SK,因此需要确保这个 IAM Role 可以由 AWS 上应用调用,默认 EC2 中使用的 Role 只能由 EC2 调用。
3.3 安装 FluentBit
3.3.1 一键部署 FluentBit
运行“curl http://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh”一键部署 FluentBit
![]() |
中国区 EC2 有可能由于网络原因无法连接 githubusercontent.com,可以选择修改 yum 源。以 HAQM Linux 2 为例,需要在 /etc/yum.repos.d/路径下添加 fluent-bit.repo 文件,以下为文件内容:
或者使用 yum 命令安装
更多内容请参考:http://docs.fluentbit.io/manual/installation/linux/amazon-linux
3.3.2 启动 fluent bit 并检查运行状态
![]() |
3.3.3 设置开机自动启动
![]() |
3.3.4 修改配置文件
找到 /etc/fluent-bit 路径,修改 fluent-bit.conf 配置文件。请注意只需要删除文件中默认的 [INPUT] 和 [OUTPUT] 下的内容,其他内容保留
![]() |
输入输出配置示例和详解:以下配置支持将 2 个不同的日志输出到 Opensearch 集群中不同的 Index。如需要更多,可以添加更多的 [INPUT] [OUTPUT],详细可以参考 http://docs.fluentbit.io/manual/concepts/data-pipeline/router。以下配置请使用时删除中文说明和注释。
其它内容请参考:http://docs.fluentbit.io/manual/pipeline/outputs/opensearch
3.3.5 AOS 中添加 Index
在运行 Fluent-bit 新配置前需要手动在 Opensearch 集群中添加好 Index,这里使用 Dashboard 完成添加。由于 Opensearch 集群部署在了私有子网,需要创建另外一台在相同 VPC 内公共子网的 Windows EC2,通过域名连接到 Dashboard。请确保 Opensearch 集群的安全组配置可以允许这台 EC2 访问,例如使用相同的安全组并添加同一安全组内资源可以任意互访的规则。
![]() |
3.3.6 尝试写入数据
打开 Dev tools 工具,粘贴如下 DSL 命令,依次执行两个 PUT 命令
![]() |
3.3.7 确认 Index 创建成功
运行 GET /_cat/indices?v 命令确认两个 index 创建成功
![]() |
3.3.8 Opensearch Dashboard 中为 Fluent-bit 使用的 IAM role 添加必要的 Opensearch 权限
选择 Management 菜单下的 Security 选项,找到 all_access 角色,默认情况下只是在创建 Opensearch 集群时指定的 master 用户被加入到了这个角色。
![]() |
点击角色的名称,选择 Mapped users 并选择 Manage mapping,将 Fluent-bit.conf 文件中使用的 IAM Role ARN 添加到 Use。
![]() |
这里如果不添加 IAM Role,启动 Fluent-bit 服务时会遇到如下报错。
![]() |
3.3.9 切换回 Fluent Bit 所在的 EC2,重启 Fluent Bit 服务
![]() |
3.3.10 基于新的 Fluent-bit.conf 启动日志注入
![]() |
3.3.11 切换到 Windows EC2 中的 Opensearch Dashboard,检查两个 Index 中是否有数据写入
使用之前保存的 GET /secure_logs/_search 和 GET /system_logs/_search 两段命令验证两个 Index 中是否已经有数据
![]() |
![]() |
4. 方案总结
本篇博客从客户实际需求出发,实现了通过 FluentBit 从服务器中抽取不同类型的日志数据,并且在同一个 AOS Domain 中按照不同的索引 Index 保存不同类型的日志数据。结合索引 Index 自身提供的功能可以轻松实现日志数据的分类保存以及生命周期和权限的管理。由于 FluentBit 可以部署在任意的虚拟机或者容器环境中,除了用于 AWS 云上的资源以外,也可以支持将本地资源的日志抽取到云上做统一的保存和分析。