docker 会将容器日志记录到 /var/lib/docker/containers/id/id-json.log,我们就可以用filebeat把文件发送给elk就可以了
filebeat可以用容器启动, 我们只要把配置文件和日志目录挂给filebeat容器,filebeat容器再输出到elk,那就实现了日志收集.
拉取镜像
docker pull docker.elastic.co/beats/filebeat:7.2.0
创建文件 vim /docker/filebeat/filebeat.yml
[root@sz_xxgc_swarm01_18_2 filebeat]# cat filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/docker/*/*.log
json.keys_under_root: true
json.add_error_key: true
json.overwrite_keys: true
output.elasticsearch:
hosts: ["10.10.18.2:9200"]
index: "filebeat-testindex-%{+yyyy.MM.dd}"
setup.template.name: "filebeattest"
setup.template.pattern: "filebeattest-*"
创建目录并授权
说明: 创建这个目录是用来挂载给容器里面,存放日志,要授权,否则容器里面的用户没有权限在下面创建子目录
mkdir -p /docker/filebeat/registry/ && chmod 777 /docker/filebeat/registry/
启动容器
docker run -d --name=filebeat -v /var/lib/docker/containers:/var/log/docker:ro -v /docker/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml -v /docker/filebeat/registry/:/usr/share/filebeat/data/registry/ docker.elastic.co/beats/filebeat:7.2.0
查看容器filebeat容器是否已经正常收集容器日志
docker logs db88a32caa5f
网友评论