关闭虚拟机防火墙
systemctl disable firewalld
chkconfig iptables off

1、先在linux上安装docker,以方便拉取ELK镜像
yum -y install docker
2、启动docker
systemctl start docker
3、查看docker状态
systemctl status docker

image.png
4、分别拉取elasticsearch、Kibana、Logstash镜像文件(通过docker images来查看)
docker pull elasticsearch:7.6.1
docker pull kibana:7.6.1
docker pull logstash:7.6.1image.png
# 创建自定义的网络(用于连接到连接到同一网络的其他服务(例如Kibana))
docker network create elk_network
#由于es分词器很垃圾,所以要用插件ik分词器自定义镜像
首先在home文件夹下,新建一个ik文件夹
mkdir ik
进入文件夹后新建文件Dockerfile(严格区分大小写)
从网上下载一个wget的rpm文件,因为构建镜像的时候会用到
下载wget-1.14-18.el7_6.1.x86_64.rpm(自行百度)

一定要放在和Dockerfile文件同目录下

编辑Dcokerfile文件
vim Dockerfile

Dockerfile文件内容:

# Docker image of elasticsearch with ik tokenizer
# VERSION 7.6.1
# Author: SenWang

#基础镜像使用elasticsearch:7.6.1
FROM elasticsearch:7.6.1
ADD wget-1.14-18.el7_6.1.x86_64.rpm /home/ik/
RUN rpm -ivh /home/ik/wget-1.14-18.el7_6.1.x86_64.rpm

#作者
MAINTAINER SenWang wangsen961225@163.com

#es插件目录
ENV ES_PLUGINS_PATH /usr/share/elasticsearch/plugins

#定义存放ik分词器文件的目录
ENV ik_SRC_COMPILE_PATH /opt/ik_build


#创建存放ik分词器文件的目录

RUN mkdir $ik_SRC_COMPILE_PATH && \

#进入编译ik分词器文件的目录
cd $ik_SRC_COMPILE_PATH && \

#下载ik包
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.1/elasticsearch-analysis-ik-7.6.1.zip && \

#解压zip包
unzip elasticsearch-analysis-ik-7.6.1 -d analysis-ik&& \

#构建成功后,将文件移动到插件目录
mv analysis-ik $ES_PLUGINS_PATH/

然后运行(注意后面有个点)
docker build -t elasticsearch-with-ik:7.6.1 .

(经过漫长的等待后…………….)

这时候查看镜像
docker images
image.png
#启动es ,
docker run -d —name elasticsearch —privileged=true —net elk_network

-p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” elasticsearch:7.6.1

5、我在docker安装目录下创建了kibana目录,用来存放kibana的所有配置
kibana.yml(文件内容)
i18n.locale: “zh-CN”
elasticsearch.hosts: [“http://192.168.1.59:9200“]
server.port: 5601
server.host: “0.0.0.0”
6、给配置文件赋权限
chmod 777 kibana.yml
7、启动kibana
记得挂载配置文件目录

docker run -d —name kibana —privileged=true —net elk_network -p 5601:5601 -v /home/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml/ kibana:7.6.1
8、我在docker安装目录下创建了logstash目录,用来存放logstash的所有配置
里面新建两个文件:logstash.yml conf.d(文件夹,里面放一个test.conf)

logstash.yml (文件内容)
path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /etc/docker/logstash

conf.d/test.conf (文件内容)
input {
tcp {
mode => “server”
host => “0.0.0.0”
port => 5044
codec => json_lines
type=>”TcpLog”
}
}

filter{
date{
match =>[“logDateTime”,”yyyyMMddHHmmss +0000”,”UNIX_MS”]
target =>”@timestamp”
timezone =>”UTC”
}
ruby {
code => “event.set(‘timestamp’, event.get(‘@timestamp’).time.localtime + 8_60_60)”
}
ruby {
code => “event.set(‘@timestamp’,event.get(‘timestamp’))”
}
mutate {
remove_field => [“timestamp”]
}
}
output {
if [level] == “INFO” {
elasticsearch {
hosts => “192.168.1.59:9201”
index => “zhada-saas”
}
}
}
9、给配置文件赋权限chmod 777 文件名
chmod 777 logstash.yml conf.d
10、启动 Logstash
记得挂载上面两个目录
(如果需要端口映射,则加上-p 5055:5055/udp)之类的
docker run -it -d —privileged=true -p 5044:5044 —name logstash —net elk_network -v /home/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /home/logstash/conf.d/:/usr/share/logstash/conf.d/ logstash:7.6.1
11、查看容器状态
docker ps -a
image.png
12、登录kibana查看
192.168.1.58:5601
image.png