能否在AWS ECS Fargate中通过node-exporter sidecar采集微服务指标
ECS Fargate 搭配 node-exporter sidecar 采集业务指标方案说明
方案可行性结论
该方案完全可行,你当前采集到node-exporter容器自身指标属于配置疏漏,并非方案本身存在缺陷。
问题根因
ECS Fargate 中同Task内的多个容器默认隔离PID、cgroup命名空间,node-exporter默认读取自身容器的/proc、/sys路径下的数据,因此默认只能采集到自身的运行指标,无法感知同Task内的业务容器状态。
修正配置操作
- 修改ECS Task Definition的全局配置,将
pidMode参数设置为task,开启同Task内所有容器的PID命名空间共享,让node-exporter可以访问到业务容器的进程数据 - 调整node-exporter容器的启动参数,增加以下配置:
--collector.cgroup.enabled --path.sysfs=/sys --path.procfs=/proc - 采集指标后通过cgroup标签、进程PID过滤业务容器对应的指标即可,同Task内业务容器的cgroup路径会带业务容器的名称前缀,可以直接作为筛选维度
- 验证方式:查看
process_cpu_seconds_total指标的PID数值,和业务容器内运行的主进程PID做对比,匹配即代表采集到的是业务容器的指标
注意:
pidMode配置为task要求Fargate平台版本≥1.4.0,低版本Fargate不支持该配置
可选替代方案
如果仅需要采集业务容器的CPU、内存指标,也可以直接使用AWS托管的Prometheus服务搭配ECS服务发现,无需额外部署sidecar,但sidecar方案的自定义灵活度更高,可以适配更多自定义采集需求。
内容的提问来源于stack exchange,提问作者Yash G
相关产品推荐
相关产品推荐

