使用Docker部署ELK最快捷的方案

说明:本例采用Filebeat直接往ElasticSearch发送日志的方案,省去了logstash,简单快捷

架构图:

 

使用Docker部署ELK最快捷的方案_第1张图片

1 .安装ES

选一台机器执行命令:

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

运行容器之前先设置服务器的vm.max_map_cout参数;执行命令:

sysctl -w vm.max_map_count=262144

然后启动容器:

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -d -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.4.2

2.安装配置Kibana

另选一台机器,执行命令:

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

然后在该机器root目录新建文件kibana.yml

---
# Default Kibana configuration from kibana-docker.
server.name: kibana
server.host: "0"
# 这里es安装在105这台机器,所以地址配这个
elasticsearch.url: http://192.168.60.105:9200
xpack.monitoring.ui.container.elasticsearch.enabled: true
然后启动kibana容器:
docker run -v /root/kibana.yml:/usr/share/kibana/config/kibana.yml -d --name kibana -p 5601:5601 kibana:6.4.2

3、安装配置Filebeat

在产生日志的每台服务器上都需要安装Filebeat

执行命令:

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

注意:因为日志存放在宿主机,Filebeat要读取宿主机的日志,所以这里必须采用配置文件挂载方式启动Filebeat

在root目录新建文件filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
# 下面的的xxx代表不同微服务产生的日志,具体以自己项目为准,如有多个微服务,按照如下格式继续添加即可
  paths:
    - /usr/share/filebeat/xxx-logs/xxx/logs/*.log
    - /usr/share/filebeat/xxx-logs/xxx/logs/*.log
 
# 配置日志输出到哪里,这里ES安装在105这台机子,以105为例
output.elasticsearch: 
  hosts: ["192.168.60.105:9200"]
#以下配置可以不配
#setup.kibana:
 #host: http://192.168.60.105:5601

 启动容器:

 docker run \
  --name filebeat  \
  -d  \
  -v /root/filebeat.yml:/usr/share/filebeat/filebeat.yml \
  -v /home/xxx-logs/:/usr/share/filebeat/xxx-logs \
  docker.elastic.co/beats/filebeat:6.4.2

上面的命令,第二个参数-v 表示将docker容器中的filebeat.yml挂载到宿主机root目录下的filebeat.yml

第三个参数 -v 表示将生产日志的目录挂载到宿舍机,这里宿主机尝试日志的目录是/home/xxx-logs/

最后访问kibana:

首次访问,先设置索引

使用Docker部署ELK最快捷的方案_第2张图片

 使用Docker部署ELK最快捷的方案_第3张图片

 以下这里填filebeat-*

使用Docker部署ELK最快捷的方案_第4张图片

 创建好索引之后,在点击左边Discover则可以看到当前产生的日志,亦可以按关键字搜索日志了

你可能感兴趣的:(Linux,Docker)