此篇会使用之前已搭的应用(宿主机192.168.72.129),详细可参见《docker化笔记二、镜像应用服务日志输出到宿主机器》,同时新建一个宿主机,上面主要部署ELK相关组件。

一、新创建一台宿主机(虚拟机)

        可以使用VMware在自己电脑创建一台虚拟机,VMware创建过程可自行百度之,本文所以用机器IP为:192.168.72.130。

        修改固定IP如下:

       (1)编辑文件:/etc/sysconfig/network-scripts/ifcfg-ens33

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="eabf0e00-7330-4ee1-8832-ff0ea15eb400"
DEVICE="ens33"
ONBOOT=yes
ZONE=public
IPADDR=192.168.72.130
GATEWAY=192.168.72.2
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=114.114.114.114

        (2)重启网络服务

service network restart

二、安装Docker 

         1、docker安装

yum -y install docker

        --查看版本

docker version

        2、启动docker服务

service docker start

        --启动并加入开机启动

systemctl start docker
systemctl enable docker

        3、查看本机已有镜像

docker images 或 docker image ls

三、拉取ELK的镜像

        1、增加国内拉取镜像的地址,否则会拉取不成功
        (1)修改文件/etc/docker/daemon.json

{
  "registry-mirrors": [
     "https://docker.mirrors.ustc.edu.cn",
     "https://registry.docker-cn.com",
     "http://hub-mirror.c.163.com",
     "https://mirror.ccs.tencentyun.com"
  ]
}

        (2)重启docker服务

sudo systemctl daemon-reload
sudo systemctl restart docker

         2、拉取镜像

# 此处使用的是7.15.1的版本
# 192.168.72.130机器拉取如下镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.1
docker pull docker.elastic.co/kibana/kibana:7.15.1
docker pull docker.elastic.co/logstash/logstash:7.15.1
docker pull docker.elastic.co/beats/filebeat:7.15.1
# 192.168.72.129机器拉取如下镜像
docker pull docker.elastic.co/beats/filebeat:7.15.1

        3、查看本机已有镜像

docker images 或 docker image ls

四、192.168.72.130宿主机进行ELK容器配置和启动

        1、创建容器间访问网络
        (1)创建

docker network create elk

        (2) 查看创建情况

docker network ls

        2、启动elasticSearch
        (1)启动

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --net elk fa601f7c24cb

        (2)查看是否允许成功
        访问 http://192.168.72.130:9200
        (3)练习时可以禁用Elasticsearch的安全提示
        进入容器:docker exec -it 5ce419206cce /bin/bash
        编辑文件:/usr/share/elasticsearch/config/elasticsearch.yml
        追加一行:xpack.security.enabled: false
        退出容器后重启容器:docker restart 5ce419206cce 

        3、启动kibana

        (1)启动

docker run -d --name kibana -p 5601:5601 -e "ELASTICSEARCH_HOST=http://elasticsearch:9200" --net elk 9871707dda25

        (2)将es的地址信息写入kibana的配置文件,启动时指定配置

        a.查看kibana默认配置文件

docker exec -it 6e9e444bb828 /bin/bash
cat /usr/share/kibana/config/kibana.yml

        b.在宿主机中创建一份配置文件,并修改为es容器访问地址

cat /opt/docker/elk/kibana/kibana.yml
server.host: "0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
# 语言
i18n.locale: "zh-CN"

        c.重新启动kibana

#重启
docker restart 6e9e444bb828

        or

#删除再创建
docker stop 6e9e444bb828(当前镜像id,使用docker ps查看)
docker rm 6e9e444bb828
docker run -v /opt/docker/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml -d --name kibana -p 5601:5601 -e "ELASTICSEARCH_HOST=http://elasticsearch:9200" --net elk 9871707dda25

        (3)查看是否允许成功
        访问 http://192.168.72.130:5601
        3、启动logstash
        (1)配置编辑

mkdir -p /opt/docker/elk/logstash
vim /opt/docker/elk/logstash/logstash.yml
vim /opt/docker/elk/logstash/logstash.conf

# logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: elasticsearch:9200

# logstash.conf:filebeat通过4567端口将收集的日志发给logstash,最后输出到es中
input {
  beats {
    port => 4567
  }
}
filter {
  #Only matched data are send to output.
}
output {
  elasticsearch {
    hosts  => ["http://elasticsearch:9200"]   #ElasticSearch host, can be array.
    index  => "logapp-%{+YYYY.MM}"         #The index to write data to.
  }
}

        (2)启动运行

docker run -d -p 4567:4567 --net elk --name logstash -p 5044:5044 -p 5045:5045  -v /opt/docker/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -v /opt/docker/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml 852762e1f73f

        (3)查看是否运行成功

docker ps

五、192.168.72.129宿主机增加filebeat容器配置和启动

        1、启动filebeat

       (1)编辑配置文件

cat /opt/docker/elk/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  paths:
    - /var/log/logapp/*
output.logstash:
    hosts: ["192.168.72.130:4567"]

        (2)创建日志收集文件(启动应用容器产生日志,参见前面章节)

        a.启动应用容器

docker run -d -p 8088:8080 -v /applogs:/dockercontainer/applogs docker-demo:2.0

        b.访问地址

http://192.168.72.129:8088/docker/hello

        (3)启动运行

docker run -d -u root -v /applogs:/var/log/logapp:rw -v /opt/docker/elk/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro -e setup.kibana.host=192.168.72.130:5601 --name filebeat01 311985fdcf7c

        (4)查看是否运行成功

docker ps

        2、访问kibana,并设置索引模式,即可在日志查询界面看到搜集的日志

http://192.168.72.130:5601

 

filebeat收集多个docker日志 elk收集docker容器里服务的日志_docker