如何通过Docker部署的Metricbeat监控宿主机全量系统进程并上报到Kibana
容器化Metricbeat采集宿主机全量进程解决方案
核心原因
容器默认以普通用户运行Metricbeat,无权限读取宿主机/proc路径下其他用户归属的进程数据,因此仅能采集到容器内部的少量进程。
修复步骤
- 启用root用户运行容器
取消docker-compose.yml中user: root的注释,配置如下:
services: metricbeat: # 取消下方行的注释 user: root
- 验证system模块配置
你当前system.yml中的配置均符合要求:- 已启用
process、process_summary指标集 processes: ['.*']已配置匹配所有进程system.hostfs: "/hostfs"已正确指定宿主机根挂载路径
你可以进入Metricbeat容器执行以下命令验证模块是否正常加载:
- 已启用
metricbeat test modules system
所有指标集输出为OK即为配置正常。
- 可选:清理冗余挂载
当前配置中/:/hostfs:ro已经包含了/proc、/sys/fs/cgroup路径,重复挂载不会引发故障,你可以按需删除两条独立挂载配置避免潜在冲突。 - 验证采集结果
重启Metricbeat容器后,执行以下命令即可验证采集到的进程数量是否符合预期:
# 输出process指标集采集结果 metricbeat run -M "system/process" -N -e
内容的提问来源于stack exchange,提问作者Mahdi Gheidi
相关产品推荐
相关产品推荐

