You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS ECS Fargate使用Firelens边车推送应用容器日志到Cloudwatch问题

问题根源

ECS Fargate中不同容器的文件系统默认相互隔离,Fluent Bit边车运行在独立的容器命名空间下,默认无法直接访问应用容器内的文件系统路径,你需要通过共享卷挂载的方式,让两个容器共享日志存储目录。


具体修改步骤

  1. 新增共享卷配置
    在任务定义的volumes数组中添加一个共享卷,用于存放应用日志,Fargate会自动为该卷分配临时存储空间:
"volumes": [
  {
    "name": "app-logs",
    "host": {}
  }
]
  1. 为应用容器配置挂载
    修改my-app容器的mountPoints字段,将应用的日志目录挂载到上述共享卷:
"mountPoints": [
  {
    "sourceVolume": "app-logs",
    "containerPath": "/opt/apache-tomcat-8.5.72/my-app/logs",
    "readOnly": false
  }
]
  1. 为Fluent Bit边车配置挂载
    修改log_router容器的mountPoints字段,将同一个共享卷挂载到边车的对应路径(和你当前配置里的exec、后续tail的路径保持一致即可):
"mountPoints": [
  {
    "sourceVolume": "app-logs",
    "containerPath": "/opt/apache-tomcat-8.5.72/my-app/logs",
    "readOnly": true
  }
]

额外注意事项

  • 你当前的配置存在两套CloudWatch输出规则:一套是自定义Fluent Bit配置中的[OUTPUT]段,另一套是应用容器logConfiguration中配置的awsfirelens日志驱动。前者用于收集你通过tail/exec读取的日志文件内容,后者用于收集应用容器输出到stdout/stderr的日志,二者独立运行不会冲突,按需保留即可。
  • 后续切换为tail输入时,建议添加Docker_Mode On配置,适配Java应用常见的多行异常栈日志。
  • 你已经将边车的运行用户设为root("user": "0"),无需额外调整日志文件读取权限。

内容的提问来源于stack exchange,提问作者nirajj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:45:02