aws-for-fluent-bit 是 AWS ***发布的 Fluent Bit 容器镜像,集成了 AWS 服务专用插件(如 CloudWatch Logs、S3、Kinesis 等),专为容器化环境的日志收集与转发设计。其核心用途是在 AWS 生态(如 ECS Fargate、EKS)中实现轻量级、高效的日志流水线,无需依赖 EFS 等持久化存储即可完成配置,特别适用于无持久存储的场景(如 Fargate)。
***镜像托管于 AWS ECR Public Gallery,直接拉取即可使用:
bashdocker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:latest
版本标签可指定具体版本(如
2.31.0),推荐使用固定版本避免兼容性问题。
Fluent Bit 配置文件采用 ini 格式,包含 Service(全局配置)、Input(日志输入源)、Filter(日志处理)、Output(日志目标)四个核心模块。
ini[SERVICE] Flush 5 # 日志刷新间隔(秒) Log_Level info # 日志级别(debug/info/warn/error) Daemon off # 容器环境需设为 off(前台运行) [INPUT] Name tail # 输入插件(tail:监控文件) Path /var/log/containers/*.log # 日志文件路径 Parser docker # 解析器(docker:JSON 格式日志) Tag container.* # 日志标签(用于 Output 路由) [OUTPUT] Name cloudwatch # 输出插件(CloudWatch Logs) Match * # 匹配标签(*:所有日志) region us-east-1 # AWS 区域 log_group_name /ecs/fargate-app # CloudWatch 日志组名称 log_stream_name {HOSTNAME} # 日志流名称(可使用变量)
在 Fargate 等无持久化场景中,配置文件可通过以下方式注入,无需挂载 EFS:
| 方式 | 适用场景 | 实现方式 |
|---|---|---|
| 环境变量注入 | 配置内容较短(< 4KB) | 通过环境变量 CONFIG_CONTENT 传递配置文件内容,启动时写入本地文件。 |
| 任务定义嵌入 | ECS Fargate 任务 | 在任务定义的 containerDefinitions 中通过 command 动态生成配置文件。 |
| 镜像内置配置 | 固定配置场景 | 基于 aws-for-fluent-bit 构建自定义镜像,通过 COPY 指令添加配置文件。 |
通过环境变量注入配置文件,收集本地 /var/log/app.log 日志并发送至 CloudWatch:
bashdocker run -d \ --name aws-fluent-bit \ -v /var/log/app.log:/var/log/app.log \ # 挂载本地日志文件(仅本地测试用) -e AWS_REGION=us-east-1 \ # AWS 区域 -e CONFIG_CONTENT="$(cat <<EOF # 注入配置文件内容 [SERVICE] Flush 5 Log_Level info [INPUT] Name tail Path /var/log/app.log Tag app.log [OUTPUT] Name cloudwatch Match * region \${AWS_REGION} log_group_name /local/test log_stream_name \${HOSTNAME} EOF )" \ public.ecr.aws/aws-observability/aws-for-fluent-bit:latest \ sh -c "echo \"\$CONFIG_CONTENT\" > /fluent-bit/etc/fluent-bit.conf && /fluent-bit/bin/fluent-bit -c /fluent-bit/etc/fluent-bit.conf"
以下为 ECS Fargate 任务定义片段,通过 command 动态生成配置文件,收集容器日志并转发至 CloudWatch:
json{ "family": "fargate-fluent-bit-demo", "networkMode": "awsvpc", "requiresCompatibilities": ["FARGATE"], "cpu": "256", "memory": "512", "executionRoleArn": "arn:aws:iam::123456789012:role/ecs-task-execution-role", "containerDefinitions": [ { "name": "aws-fluent-bit", "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:latest", "essential": true, "environment": [ {"name": "AWS_REGION", "value": "us-east-1"} ], "command": [ "sh", "-c", "cat > /fluent-bit/etc/fluent-bit.conf <<EOF [SERVICE] Flush 5 Log_Level info [INPUT] Name tail Path /var/log/containers/*.log # Fargate 容器日志路径 Parser docker Tag ecs.* [OUTPUT] Name cloudwatch Match * region \${AWS_REGION} log_group_name /ecs/fargate-demo log_stream_name \${HOSTNAME} EOF && /fluent-bit/bin/fluent-bit -c /fluent-bit/etc/fluent-bit.conf" ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/fargate-demo-fluent-bit", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "fluent-bit" } } } ] }
yamlversion: '3' services: fluent-bit: image: public.ecr.aws/aws-observability/aws-for-fluent-bit:latest environment: - AWS_REGION=us-east-1 volumes: - ./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf # 本地配置文件挂载(开发用) command: /fluent-bit/bin/fluent-bit -c /fluent-bit/etc/fluent-bit.conf
| 参数 | 说明 | 默认值 |
|---|---|---|
Flush | 日志刷新间隔(秒) | 5 |
Log_Level | 日志级别(debug/info/warn/error) | info |
Daemon | 是否后台运行(容器环境需设为 off) | on |
HTTP_Server | 是否启用 HTTP 监控接口 | off |
HTTP_Listen | HTTP 接口监听地址 | 0.0.0.0 |
HTTP_Port | HTTP 接口端口 | 2020 |
tail 插件为例)| 参数 | 说明 | 示例值 |
|---|---|---|
Name | 输入插件名称 | tail |
Path | 监控日志文件路径 | /var/log/containers/*.log |
Parser | 日志解析器(需在配置中定义) | docker(解析 JSON 日志) |
Tag | 日志标签(用于 Output 匹配) | container.${HOSTNAME} |
Refresh_Interval | 文件列表刷新间隔(秒) | 10 |
cloudwatch 插件为例)| 参数 | 说明 | 示例值 |
|---|---|---|
Name | 输出插件名称 | cloudwatch |
Match | 匹配标签(* 表示所有日志) | container.* |
region | AWS 区域 | us-east-1 |
log_group_name | CloudWatch 日志组名称 | /ecs/fargate-app |
log_stream_name | 日志流名称(支持变量) | ${HOSTNAME}-${TAG} |
auto_create_group | 是否自动创建日志组 | On |
retry_limit | 重试次数(0 表示无限重试) | 3 |
| 环境变量名 | 作用 | 示例值 |
|---|---|---|
AWS_REGION | 配置 AWS 服务区域(覆盖插件中的 region 参数) | us-west-2 |
FLB_LOG_LEVEL | 覆盖 SERVICE 中的 Log_Level | debug |
CONFIG_CONTENT | 自定义配置文件内容(需通过启动命令写入文件) | 完整的 Fluent Bit 配置内容 |
AWS_ACCESS_KEY_ID | AWS 访问密钥(非 IAM 角色场景) | AKIAXXXXXXXXXXXX |
AWS_SECRET_ACCESS_KEY | AWS 密钥(非 IAM 角色场景) | xxxxxxxxxxxxxxxxxxxxxxxx |
CloudWatchLogsFullAccess),或通过环境变量配置 AWS 密钥(非推荐)。2.31.0)并参考***文档。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429