Docker环境搭建ELK
1、拉取镜像
docker pull elasticsearch:7.2.0 docker pull logstash:7.2.0 docker pull kibana:7.2.0
虽然不带版本号会拉取最新版本,但是可能会在拉取过程中报错。注意ES、Logstash、Kibana版本必须一致,不然会出现各种莫名的问题,比如Kibana连不上ES或者Logstash连不上ES。这里我使用的是7.2.0版本。
2、安装Elasticsearch
创建挂载目录
mkdir -p /home/elasticsearch/config
mkdir -p /home/elasticsearch/data
echo "http.host: 0.0.0.0">>/home/elasticsearch/config/elasticsearch.yml
chmod -R 777 /home/elasticsearch/
运行容器
docker run --privileged=true --name elasticsearch -p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/elasticsearch/data:/usr/share/elasticsearch/data \
-v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.2.0
配置跨域(可以不用配置)
修改/home/elasticsearch/config/elasticsearch.yml文件
cluster.name: "docker-cluster"
network.host: 0.0.0.0
# 访问ID限定,0.0.0.0为不限制,生产环境请设置为固定IP
transport.host: 0.0.0.0
# elasticsearch节点名称
node.name: node-1
# elasticsearch节点信息
cluster.initial_master_nodes: ["node-1"]
# 下面的配置是关闭跨域验证(可以不开启)
http.cors.enabled: true
http.cors.allow-origin: "*"
检验安装结果
http://192.168.1.101:9200/
显示效果如下就成功了
3、安装Kibana
kibana不用做特殊的配置,只是需要在运行容器的时候link一下es。
docker run --name kibana \
--link elasticsearch:elasticsearch \
-p 5601:5601 \
-d kibana:7.2.0
检验安装结果
http://192.168.1.101:5601/
如果可以正常打开并连接上ES表示安装成功。
4、安装Logstash
如果项目中是直接把日志写入到ES中的话,可以不用安装Logstash。
运行容器
docker run --name logstash -d -p 5044:5044 -p 9600:9600 logstash:7.2.0
创建配置文件目录,设置权限:
mkdir -p /home/elk/logstash/config;
mkdir -p /home/elk/logstash/pipeline;
chown -R 1000 /home/elk/logstash;
拷贝配置文件:
docker cp logstash:/usr/share/logstash/config /home/elk/logstash/config;
docker cp logstash:/usr/share/logstash/pipeline /home/elk/logstash/pipeline;
删除容器:
docker rm -f logstash
重新运行容器:
docker run --name logstash -d \
-p 5044:5044 \
-p 9600:9600 \
-v /home/elk/logstash/config/config:/usr/share/logstash/config \
-v /home/elk/logstash/pipeline/pipeline:/usr/share/logstash/pipeline \
logstash:7.2.0
安装完了需要修改配置
修改/home/elk/logstash/config/config/logstash.yml,将里面改成
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.22.188:9200" ]
如果需要接收filebeat等其他应用的日志转发到ES,需要修改/home/elk/logstash/pipeline/pipeline/logstash.conf
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["192.168.22.188:9200"]
index => "moonlog.%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
参考文档
https://my.oschina.net/u/3656204/blog/3078973
https://www.jianshu.com/p/1b33b351ffdf