docker 安装 ElasticSearch,Logstash,Kibana
------ ElasticSearch ------
下载镜像 查看镜像
docker pull elasticsearch:7.1.1
docker images
创建自定义的网络(用于连接到连接到同一网络的其他服务(例如Kibana))
docker network create somenetwork
#创建挂载目录 mkdir -p /data/elk/es/{config,data,logs}
#修改es配置文件 vim /data/elk/es/config/elasticsearch.yml
cluster.name: "myes" network.host: 0.0.0.0 http.port: 9200 xpack.security.enabled: true
运行 elasticsearch
docker run -it -d -p 9200:9200 -p 9300:9300 --name myes1 -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e "discovery.type=single-node" --restart=always -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/elasticsearch/data:/usr/share/elasticsearch/data -v /home/elasticsearch/log:/usr/share/elasticsearch/logs elastic/elasticsearch:7.1.1
查看容器状态
docker ps
检测 elasticsearch 是否启动成功
curl 127.0.0.1:9200
#成功标识是控制台出现如下东西 { "name" : "e106a7c0604a", "cluster_name" : "docker-cluster", "cluster_uuid" : "K56VTNZATqKxukzX4bULeA", "version" : { "number" : "7.1.1", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "7a013de", "build_date" : "2019-05-23T14:04:00.380842Z", "build_snapshot" : false, "lucene_version" : "8.0.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
------ Kibana ------
下载镜像 查看镜像
docker pull kibana:7.1.1
docker images
运行 Kibana
docker run -d --name kibana --net somenetwork -p 5601:5601 kibana:7.1.1
查看容器启动状态
docker ps
访问 http://127.0.0.1:5601 (启动可能会较慢,如失败等几秒再尝试刷新一下)
------ Logstash ------
下载镜像 查看镜像
docker pull logstash:7.1.1 docker images
docker run -it -d -p 5044:5044 --name logstash --net somenetwork -v {path}/logstash.yml:/usr/share/logstash/config/logstash.yml -v {path}/conf.d/:/usr/share/logstash/conf.d/ logstash:7.1.1
查看容器运行状态 docker ps
------ Filebeat ------
下载镜像 查看镜像
docker pull store/elastic/filebeat:7.1.1 docker images
下载默认官方配置文件 (暂时在当前目录创建一个 filebeat 目录 用来放 filebeat 配置文件)
curl -L -O https://raw.githubusercontent.com/elastic/beats/7.1/deploy/docker/filebeat.docker.yml
打开配置文件
vim filebeat.docker.yml
增加下面的配置 (收集 .log 数据 把数据发送到当前网络5044端口 (logstash 端口) )
这个地方的 .log 要保证有几条测试数据
filebeat.inputs:
- type: log enabled: true paths:
- /var/log/nginx/*.log
output.logstash: hosts: ['{ip}:5044']
运行Filebeat
请更改下面两个路径
{nginx-path} = 本地的日志文件目录(映射到容器中 作为数据源) {path} = Filebeat配置文件路径 {ip} = elasticsearch 地址
docker run --name filebeat --user=root -d --net somenetwork --volume="{nginx-path}:/var/log/nginx/" --volume="{path}/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" --volume="/var/run/docker.sock:/var/run/docker.sock:ro" store/elastic/filebeat:7.1.1
查看容器启动状态
docker ps
启动成功
现在去 Kibana 查看数据,已经有数据了