docker-compose实现EFK日志监控 - Go语言中文社区

docker-compose实现EFK日志监控


注:filebeat没有分析功能,由于没有logstash的字段分析和解析功能,所有的日志最好都是json格式。

EFK是elastic三个组件的简称,分别是 elasticsearch、filebeat和 kibana。三个组件都非常强大,这里作为练习和小项目的分析只运用一些简单功能。【elastic官网地址】

docker-compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Compose 中你可以使用 YAML 文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。对非专业运维人员而言比 dockerfile 友好不少。

docker不再过多介绍了,docker-ce的安装请移步到 https://docs.docker.com/install/ 。请注意docker-compose不是docker引擎,它的启用和工作都是建立在docker引擎之上。

1、docker-compose 使用python2.7安装:

apt install python-pip
python -m pip install --upgrade pip
pip install docker-compose

看到如下提示及成功:

2、创建文件夹并将配置文件和需要挂上去的卷一道同一文件夹下:

mkdir -p /data/docker/es
mkdir -p /data/docker/filebeat
mkdir -p /data/docker/kibana

3、用docker拉取官方镜像并运行:

1) 运行elasticsearch并进入容器内,找到config的位置

docker run -it docker.elastic.co/elasticsearch/elasticsearch:6.5.4 /bin/bash
pwd

2)将config文件夹拷贝出来,容器ID在左下角[root@]后面

然后退出容器,在宿主机上运行

docker cp [容器ID]:/usr/share/elasticsearch/config /data/docker/es/
ll /data/docker/es

 

3)es和kibana基本上是互相依赖和重启的,所以这里直接使用一个compose服务里边。docker-compose.yml是docker-compose启动的配置文件

cd /data/docker
vi docker-compose.yml

docker-compose.yml文件内容:

version: '2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4
container_name: land-es
privileged: true #容器可获得root权限
volumes:
- ./es/config:/usr/share/elasticsearch/config #卷挂载 前面为宿主机路径,后面为容器位置路径
ports:
- "9200:9200" #端口映射,前面为容器端口,后面为宿主机端口
- "9300:9300"
kibana:
image: docker.elastic.co/kibana/kibana:6.5.4
container_name: land-kibana
privileged: true
environment:
- ELASTICSEARCH_URL:"http://localhost:9200"
- OPS_INTERVAL:60000
volumes:
- ./kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
- ./kibana/log:/usr/share/kibana/log
ports:
- "5621:5621"
depends_on:
- elasticsearch

具体docker-compose的配置在这里不再说明,后面若有时间学习和记录一下,请自行查询。其中挂载卷 volumnes 容器位置的值就是从第一次进入容器中获取,所以若你需要替换掉容器里边的任何文件,可以用此方法获取到文件在容器中的位置,然后配置替换,这样就可以在宿主机中修改配置文件以及尽量减少docker容器中的大小了。

4)运行

docker-compose up -d

即可运行

查看进程:

ps -ef | grep elaticsearch

进入kibana页面:

5) 进入filebeat目录并配置filebeat.yml需要扫描的文件夹或文件

cd /data/docker/filebeat
vi filebeat.yml

filebeat.yml文件内容:

filebeat.inputs:
- type: log
enabled: true
paths:
- /data/web/app/runtime/logs/buyer/cart/*.log
- /data/web/app/runtime/logs/buyer/chips/*.log
- /data/web/app/runtime/logs/buyer/login/*.log
- /data/web/app/runtime/logs/buyer/order/*.log
document_type: "buyer_logs"
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.enabled: true
setup.template.name: "buyer_logs"
setup.template.pattern: "buyer_logs-*"
setup.template.settings:
index.number_of_shards: 3
setup.kibana:
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["192.168.1.254:9200"]
index: "buyer_logs-%{+yyyy.MM.dd}"

保存后建立docker-compose.yml文件配置filebeat:

version: '2'
services:
filebeat:
image: docker.elastic.co/beats/filebeat:6.5.4
container_name: land-filebeat
privileged: true
volumes:
- ./filebeat.yml:/usr/share/filebeat/filebeat.yml
- /data/web/app/runtime/logs/buyer:/data/web/app/runtime/logs/buyer #需要扫描的文件夹

运行docker,执行

docker-compose up -d 

后及开启运行容器。执行docker stats -a 查看实时容器运行信息:

 

一切顺利后,打开kibana-> management中配置index即可看到日志配置。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39678127/article/details/86672920
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-25 01:27:51
  • 阅读 ( 1161 )
  • 分类:docker

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢