一、环境准备 在开始配置前,需确保系统中已安装Docker(用于运行容器)和Filebeat(用于日志采集)。若未安装,可通过以下命令快速安装Filebeat(以Debian/Ubuntu为例):
sudo apt-get update && sudo apt-get install filebeat
二、核心配置步骤
Filebeat通过filebeat.yml配置文件定义输入源、处理器及输出目标。针对Docker容器,主要有两种配置方式:
通过type: docker输入模块,结合通配符*监控宿主机上所有Docker容器的日志(默认路径为/var/lib/docker/containers/<container-id>/<container-id>-json.log):
filebeat.inputs:
- type: docker
enabled: true
containers.ids:
- "*" # 监控所有容器
json.keys_under_root: true # 将JSON日志的键提升至根层级(便于结构化查询)
json.add_error_key: true # 添加错误键(便于定位日志解析问题)
processors:
- add_docker_metadata: ~ # 自动添加容器元数据(如容器名称、镜像、标签等)
若仅需监控特定容器,可通过containers.ids指定容器ID(可通过docker ps -q获取):
filebeat.inputs:
- type: docker
enabled: true
containers.ids:
- "abc123def456" # 替换为目标容器ID
processors:
- add_docker_metadata: ~
为简化部署流程,建议使用Filebeat官方Docker镜像(如docker.elastic.co/beats/filebeat:8.0.0)。通过docker-compose.yml挂载配置文件、日志目录及Docker套接字:
version: '3.8'
services:
filebeat:
image: docker.elastic.co/beats/filebeat:8.0.0
user: root # 需root权限访问Docker套接字
volumes:
- ./filebeat.yml:/usr/share/filebeat/filebeat.yml:ro # 挂载配置文件
- /var/lib/docker/containers:/var/lib/docker/containers:ro # 挂载容器日志目录
- /var/run/docker.sock:/var/run/docker.sock:ro # 挂载Docker套接字(用于获取容器元数据)
command: ["-e", "-c", "/usr/share/filebeat/filebeat.yml", "--strict.perms=false"] # 后台运行,忽略权限问题
将采集到的日志发送至Elasticsearch(需替换为实际地址):
output.elasticsearch:
hosts: ["http://localhost:9200"] # Elasticsearch地址
username: "elastic" # 可选:Elasticsearch用户名(若启用了安全认证)
password: "your_password" # 可选:Elasticsearch密码
或发送至Logstash(需替换为实际地址):
output.logstash:
hosts: ["localhost:5044"] # Logstash地址
三、启动与验证
sudo systemctl start filebeat # 通过systemd启动
sudo systemctl status filebeat # 检查运行状态
docker-compose up -d # 后台启动Filebeat容器
http://localhost:5601),进入“Stack Management > Index Patterns”,创建新索引模式(如filebeat-*),选择@timestamp作为时间字段。container.name、log.level等字段过滤日志。四、优化建议
add_docker_metadata处理器自动添加容器元数据,无需手动指定容器ID。close_inactive参数(如5m),避免因日志轮转导致Filebeat无法读取新日志。/var/run/docker.sock并设置--user root,确保Filebeat能访问容器元数据。filebeat modules enable nginx),简化日志解析流程。通过以上步骤,即可实现Filebeat对Docker容器日志的高效监控与采集,为后续日志分析、故障排查提供基础。