CentOS7 Docker 搭建ELK环境笔记

CentOS7 Docker 搭建ELK环境笔记
(适合新手看)

准备工作

1.调通网络,让主机能上网
2.安装好docker
3.将SELINUX=enforcing改为SELINUX=permissive(设置完成再往下看)

[root@localhost /]# vim /etc/selinux/config logstash.con
[root@localhost /]# getenforce 
Permissive

下载docker镜像

查找地址为:https://www.docker.elastic.co/
命令在此网页有,下面是我复制出来的下载命令
下载elasticsearch命令为:
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.3
下载logstash命令为:
docker pull docker.elastic.co/logstash/logstash:6.4.3
下载kibana命令为:
docker pull docker.elastic.co/kibana/kibana:6.4.3

完成后运行命令: docker images查看镜像列表

[root@localhost /]# docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
docker.elastic.co/logstash/logstash             6.4.3               69c8a126e24a        5 months ago        674 MB
docker.elastic.co/kibana/kibana                 6.4.3               69271c2e80d6        5 months ago        724 MB
docker.elastic.co/elasticsearch/elasticsearch   6.4.3               01e5bee1e059        5 months ago        795 MB

创建docker网络

参考文档https://docker_practice.gitee.io/
创建docker网络 elk-net,docker network ls能查看到elk-net即可

[root@localhost /]# docker network create -d bridge elk-net
[root@localhost /]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
dc04d52e7293        bridge              bridge              local
7c5c25647431        elk-net             bridge              local
a3e040d8d8a5        host                host                local
778ea2f28cf0        none                null                local

修改ELK配置文件

注意事项:为了保证配置文件的准确,尤其是不同版本建配置文件参数可能有调整,尽量从镜像中copy配置文件出来修改(测试时就吃了大亏 。)
1.运行elasticsearch镜像

[root@localhost home]# docker run --rm --name es_test -it -d docker.elastic.co/elasticsearch/elasticsearch:6.4.3 /bin/bash
04b162e253ef3732d3ebacf8599ffc348c5e6ac4d0acb670f66a5d6a3be42104

查看运行起来的elasticsearch容器如下

[root@localhost home]# docker ps -a
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS              PORTS                              NAMES
04b162e253ef        docker.elastic.co/elasticsearch/elasticsearch:6.4.3   "/usr/local/bin/do..."   4 minutes ago       Up 4 minutes        9200/tcp, 9300/tcp                 es_test

进入到容器内,找到elasticsearch 配置文件路径

[root@localhost home]# docker exec -it es_test /bin/bash
[root@04b162e253ef elasticsearch]# 
[root@567caff23fbd elasticsearch]# cd /usr/share/elasticsearch/config/
[root@567caff23fbd config]# ls
elasticsearch.yml  ingest-geoip  jvm.options  log4j2.properties  role_mapping.yml  roles.yml  users  users_roles
[root@567caff23fbd config]# exit

找到容器内的配置文件将配置后退出容器
1、将配置文件拷贝到本地

[root@localhost home]# docker cp es_test:/usr/share/elasticsearch/config /home/docker_elk/usr/share/elasticsearch/
[root@localhost config]# pwd
/home/docker_elk/usr/share/elasticsearch/config
[root@localhost config]# ls
elasticsearch.yml  ingest-geoip  jvm.options  log4j2.properties  role_mapping.yml  roles.yml  users  users_roles
[root@localhost config]# 

注释:–rm 停止时删除
–name 为容器设置别名
-it 镜像名/镜像ID /bin/bash 进入到镜像录的命令行
将容器中配置文件拷贝到本地:(位置自定)
为了便于区分:/home/docker_elk/usr/share/elasticsearch/
同理将 logstash、kibana配置文件拷贝到本地
*2、修改配置文件:*易错点
先运行elasticsearch容器

[root@localhost /]# docker run  --rm --name es -d --network elk-net -v elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 01e5bee1e059

注释
–network 网络名称 (创建docker网络定义好的)
–name 容器名称 名字自定义,不重复就行(此处名称为es)
-d 容器后台运行
-v 挂在配置文件,我觉得理解为替换容易理解,运行容器时本地配置文件替换容器里的配置文件文件。-v 本地目录/本地配置:容器里的目录/容器里的配置文件;也可以是替换整个目录(根据自己情况来定)

将kibana、logstash配置文件中指定elasticsearch地址的地方换成elasticsearch容器名称!
vim /home/docker_elk/usr/share/kibana/config/kibana.yml

server.name: kibana
server.host: “0”
elasticsearch.url: http://es:9200 //上一步我们启动elasticsearch容器设置的名字就是es
xpack.monitoring.ui.container.elasticsearch.enabled: true

vim /home/docker_elk/usr/share/logstash/config/logstash.yml

http.host: “0.0.0.0”
xpack.monitoring.elasticsearch.url: http://es:9200

[root@localhost pipeline]# vim /home/docker_elk/usr/share/logstash/pipeline/logstash.conf

input {
beats {
port => 5044
}
}

output {
elasticsearch {
hosts => “http://es:9200”
manage_template => false
index => “%{[@metadata][beat]}-%{+YYYY.MM.dd}”
document_type => “%{[@metadata][type]}”
}
}

运行docker镜像

docker run --rm --name kibana -d --network elk-net -p 5601:5601 -v /home/docker_elk/usr/share/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml docker.elastic.co/kibana/kibana:6.4.3
docker run --rm --name logstash -d --network elk-net -p 5044:5044 -v /home/docker_elk/usr/share/logstash/pipeline:/usr/share/logstash/pipeline -v /home/docker_elk/usr/share/logstash/config:/usr/share/logstash/config  docker.elastic.co/logstash/logstash:6.4.3

注意事项:kibana、logstash必须将端口映射出来,便于测试与使用
查看容器命令
docker ps -a
运行容器
docker run es
停止容器
docker stop es
删除容器
docker rm es

查看日志命令
docker logs -f es

测试

你可能感兴趣的:(CentOS7 Docker 搭建ELK环境笔记)