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