基于centos

1.下载elasticsearch镜像:

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.7.1

docker tag 容器id elasticsearch:6.7.1

docker run -d --name elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" e2667f5db289

2.下载kibana镜像

docker pull docker.elastic.co/kibana/kibana:6.7.1

docker tag 容器id kibana:6.7.1

docker run -it -d --name kibana -p 5601:5601 kibana:6.7.1    启动容器

docker exec -it 容器id bash  进入容器运行命令

vi config/kibana.yml  修改容器连接的默认elasticsearch地址

server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://172.17.0.1:9200" ]    //因为elasticsearch也部署在另一个docker里,所以连接ip为172.17.0.1

退出容器并重启

3.下载filebeat镜像

在输出日志文件的系统上部署

docker pull docker.elastic.co/beats/filebeat:6.7.1

docker tag 容器id filebeat:6.7.1

3.1 log方式收集

修改filebeat.yml   path为容器内日志地址,output输出到elasticsearch

启动filebeat: docker run  -u root --name filebeat -d  -v /usr/local/filebeats6.7.1/filebeat.yml:/usr/share/filebeat/filebeat.yml -v /usr/local/filebeats6.7.1/logs/:/usr/share/filebeat/logs filebeat:6.7.1

第一个 -v  将本地filebeat配置文件挂载到容器

第二个 -v  是将本地日志目录挂载到容器

如果进入容器出现permission denied权限问题,可在启动命令加  -u root 指定root用户运行

filebeat.yml其它参数详解:
scan_frequency: 10s    检测文件更新默认10秒
tail_files: false      true: 从文件尾部监控新增内容,默认false

3.2 docker方式收集

filebeat.yml:    multiline合并多行日志,pattern正则以时间戳开始

filebeat.inputs:
- type: docker
  containers.ids:
    - '*'
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after
  multiline.timeout: 10s
  processors:
    - add_docker_metadata: ~

output:
  elasticsearch:
    hosts: ["172.17.0.1:9200"]

启动命令:

docker run -u root --name filebeat -d  
	-v /usr/local/filebeats6.7.1/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro 
	-v /var/lib/docker/containers:/var/lib/docker/containers:ro 
	-v /var/run/docker.sock:/var/run/docker.sock:ro filebeat:6.7.1

4. 访问kibana 界面并设置索引即可搜索数据,实时日志。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐