选择版本为elasticsearch:7.17.9,kibana:7.17.9,logstash:7.17.9
版本一定要一致
docker hub地址:https://hub.docker.com
elk相关文档:https://www.elastic.co/guide/en/kibana/7.17
一、部署单点es
1.创建网络
因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:
这个可用,可不用,看具体的网络环境
docker network create es-net
拉取镜像
考虑到elasticsearch的兼容性,这里elasticsearch、kibana、IK分词器统一下载7.17.9版本
拉取镜像
docker pull elasticsearch:7.17.9
docker pull kibana:7.17.9
运行es
#–network es-net
运行docker命令,部署单点es:
docker run -d --name es \
--restart=always \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v /etc/localtime:/etc/localtime:ro \
-v /home/docker_data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /home/docker_data/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /home/docker_data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
--privileged \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.17.9
命令解释
-e “cluster.name=es-docker-cluster”:设置集群名称
-e “http.host=0.0.0.0”:监听的地址,可以外网访问
-e “ES_JAVA_OPTS=-Xms512m -Xmx512m”:内存大小
-e “discovery.type=single-node”:非集群模式
-v es-data:/home/docker_data/elasticsearch/data:挂载逻辑卷
-v es-logs:/home/docker_data/elasticsearch/logs:挂载逻辑卷
-v es-plugins:/home/docker_data/elasticsearch/plugins:挂载逻辑卷
–privileged:授予逻辑卷访问权
–network es-net :加入一个名为es-net的网络中
-p 9200:9200:端口映射配置
结果
在浏览器中输入:http://10.255.20.231:9200 即可看到elasticsearch的响应结果:
配置拷贝
docker cp es:/usr/share/elasticsearch/config /home/docker_data/elasticsearch
chmod -R 777 config/
#重启
增加配置文件映射,重启
运行docker命令,部署单点es:
docker run -d --name es \
--restart=always \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v /etc/localtime:/etc/localtime:ro \
-v /home/docker_data/elasticsearch/config:/usr/share/elasticsearch/config \
-v /home/docker_data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /home/docker_data/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /home/docker_data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
--privileged \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.17.9
二、部署kibana
kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习。
#–network=es-net \
docker pull kibana:7.17.9
部署
运行docker命令,部署kibana
docker run -d \
--name kibana \
--restart=always \
-v /etc/localtime:/etc/localtime:ro \
-v /home/docker_data/kibana/config:/usr/share/kibana/config \
-v /home/docker_data/kibana/data:/usr/share/kibana/data \
-e ELASTICSEARCH_HOSTS=http://10.255.20.231:9200 \
-p 5601:5601 \
kibana:7.17.9
参数说明
–network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
-e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
-p 5601:5601:端口映射配置
结果
kibana启动一般比较慢,需要多等待一会,可以通过命令:
docker logs -f kibana
查看运行日志,当查看到下面的日志,说明成功:
配置文件
docker cp kibana:/usr/share/kibana/config /home/docker_data/kibana/config
docker cp kibana:/usr/share/kibana/config/kibana.yml /home/docker_data/kibana/config/kibana.yml
查看页面: http://10.255.20.231:5601
三、部署logstash
镜像拉取
docker pull logstash:7.17.9
部署
[root@test231 docker_data]# mkdir logstash
[root@test231 docker_data]# mkdir -p logstash/config/conf.d
[root@test231 docker_data]# cd logstash/config/conf.d
[root@test231 docker_data]# touch shininglog.conf
[root@test231 docker_data]# chmod -R 777 /home/docker_data/logstash
#–network=es-net \
docker run -d \
--name=logstash \
--restart=always \
-p 5044:5044 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/logs:/data/logs \
-v /home/docker_data/logstash/config:/usr/share/logstash/config \
-v /home/docker_data/logstash/data:/usr/share/logstash/data \
-v /home/docker_data/logstash/log/messages:/var/log/messages \
logstash:7.17.9
配置
input {
file {
#标签
type => "shining-plat-applet"
#采集点
path => "/data/logs/shining-plat-applet/*.log"
#开始收集点
start_position => "beginning"
#扫描间隔时间,默认是1s,建议5s
stat_interval => "5"
}
}
output {
if ["type"] == "shining-plat-applet" {
elasticsearch {
hosts => ["10.255.20.231:9200"]
index => "shininglog-plat-applet-%{+YYYY.MM.dd}"
}
}
}
注意⚠️
我们使用的是docker容器,所以,一定要做输入数据源的来源文件映射,切记
效果
后续会发一系列问题文章。。。
环境交流