1、创建docker网络与相应目录

docker network create elk
  mkidr -p /u01/es/data
  mkdir -p /u01/kibana
  mkdir -p /u01/logstash
  mkdir -p /u01/kafka/data
  mkdir -p /u01/kafka/conf


2、安装es

# 搜索镜像
docker search elasticsearch
# 拉取 7.12.1 版本镜像
docker pull elasticsearch:7.12.1
# 运行 elasticsearch
docker run -d --name es --net elk -P -e "discovery.type=single-node" elasticsearch:7.12.1
# 将容器内的配置文件拷贝到 /usr/local/elk/elasticsearch/ 中
docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /u01/es/
# 修改文件权限
chmod 666 /u01/es/elasticsearch.yml
#添加http.cors.enabled: true与http.cors.allow-origin: "*"
[root@elk_01 es]# cat /u01/es/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"

# 在elasticsearch 目录下再创建data目录,同时修改权限
chmod -R 777 /u01/es/data
# 停止的es容器
docker stop es
# 准备工作已完成,删除临时创建的es容器
docker rm -f es
# 运行新的容器
docker run -d --name es \
--net elk \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
--privileged=true \
-v /u01/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /u01/es/data/:/usr/share/elasticsearch/data \
elasticsearch:7.12.1

3、安装 ElasticSearch-head

#安装ElasticSearch-head
docker run -d --name es_admin --net elk -p 9100:9100 mobz/elasticsearch-head:5
#将文件拷贝回去
docker cp Gruntfile.js es_admin:/usr/src/app/
docker cp es_admin:/usr/src/app/_site/vendor.js ./
vi Gruntfile.js
编辑该配置文件在 connect -> server -> options 下添加: hostname: '0.0.0.0'

Centos8 安装 kafka + ELK_kafka

vi vendor.js
在这里我们需要修改:(注意不是把整行替换掉)
6886 行:contentType: "application/json;charset=UTF-8"
7573 行: contentType === "application/json;charset=UTF-8"

4、测试站点

curl http://127.0.0.1:9200

Centos8 安装 kafka + ELK_docker_02

浏览器打开http://ip:9100/

Centos8 安装 kafka + ELK_kafka_03

5、安装Kibana

镜像
docker search kibana
docker pull kibana:7.12.1
# 启动 kibana 容器并连接同一网络
docker run -d --name kibana --net elk -P -e "ELASTICSEARCH_HOSTS=http://es:9200" -e "I18N_LOCALE=zh-CN" kibana:7.12.1

docker cp kibana:/usr/share/kibana/config/kibana.yml /u01/kibana/
chmod 666 /u01/kibana/kibana.yml

如果使用挂载配置文件的方式启动的话,elasticsearch.hosts 这需填写 http://ip:9200,而不能使用容器名了,否则后面 kibana 连接 es 会失败。
 cat /u01/kibana/kibana.yml
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
# elasticsearch 地址
elasticsearch.hosts: [ "http://ip:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
# 开启 kibana 的汉化
i18n.locale: zh-CN

# 停止的kibana容器
docker stop kibana
#删除原来未挂载的容器
docker rm -f kibana

# 启动容器并挂载
docker run -d --name kibana \
-p 5601:5601 \
-v /u01/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \
--net elk \
kibana:7.12.1


6、测试kibana

浏览器打开http://ip:5601

Centos8 安装 kafka + ELK_docker_04


7、安装 LogStash

docker pull logstash:7.12.1

docker run -d -P --name logstash --net elk logstash:7.12.1
# 拷贝数据
docker cp logstash:/usr/share/logstash/config /u01/logstash/
docker cp logstash:/usr/share/logstash/data /u01/logstash/
docker cp logstash:/usr/share/logstash/pipeline /u01/logstash/

#文件夹赋权
chmod -R 777 /u01/logstash/


#停止容器
docker stop logstash

#注意先删除之前的容器
docker rm -f logstash

# 启动容器并挂载
docker run -d --name logstash --net elk \
--privileged=true \
-p 5044:5044 -p 9600:9600 \
-v /u01/logstash/data/:/usr/share/logstash/data \
-v /u01/logstash/config/:/usr/share/logstash/config \
-v /u01/logstash/pipeline/:/usr/share/logstash/pipeline \
logstash:7.12.1

8、安装zk与kafka

docker pull zookeeper:3.8.1
 docker pull bitnami/kafka:latest
#目录权限 
chmod -R 777 /u01/kafka/ 
#创建zk
docker run -d --name zk-server  --network elk -p 2181:2181  -e ALLOW_ANONYMOUS_LOGIN=yes --restart always zookeeper:3.8.1 
#创建kafka
docker run -d --name kafka-server \
    --network elk \
    -e ALLOW_PLAINTEXT_LISTENER=yes \
    -e KAFKA_CFG_ZOOKEEPER_CONNECT=172.24.3.26:2181 \
    -e KAFKA_ADVERTISED_HOST_NAME=172.24.3.26 \
    -e KAFKA_BROKER_ID=1 \
    -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://172.24.3.26:9092 \
    -e KAFKA_KRAFT_CLUSTER_ID=elk_kafka \
    -p 9092:9092 \
    -v /u01/kafka/data:/bitnami/kafka/data \
    --restart always \
    bitnami/kafka:latest

 #创建kafka管理工具
 docker pull sheepkiller/kafka-manager:latest
 docker run -d --name kafka-manager --network elk  -p 9000:9000 -e ZK_HOSTS=172.24.3.26:2181 sheepkiller/kafka-manager:latest