Docker 中安装 Elasticsearch + Kibana + Filebeat
在 Docker 中安装 Elasticsearch + Kibana + Filebeat
在 CentOS上安装 Docker Engine
先更新一下 yum 软件源的缓存,安装依赖包
1 | sudo yum update |
添加国内下载源
1 | sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo |
安装比较稳定的版本 Docker CE
1 | sudo yum makecache fast |
配置开机启动,并启动 Docker CE :
1 | sudo systemctl enable docker |
测试是否正确安装了 Docker Engine:
1 | docker run hello-world |
建立 docker 组,将当前用户加入 docker 组:
1 | sudo groupadd docker |
再次执行 docker run hello-world 测试是否可以执行。
安装 Docker-Compose
在线安装,下载一个 Docker-Compose
1 | sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
给文件执行权限
1 | sudo chmod +x /usr/local/bin/docker-compose |
创建指向 /usr/bin 的链接
1 | sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose |
查看版本
1 | docker-compose --version |
安装 Elasticsearch
在 Docker-hub 中搜索 Elasticsearch 版本
1 | docker search Elasticsearch |
安装 Elasticsearch 7.2 的版本
1 | docker pull docker.elastic.co/elasticsearch/elasticsearch:7.2.0 |
安装完成后,执行 docker images 或者 docker image ls
1 | [root@bogon /]# docker images |
Docker + Elasticsearch + Kibana + Filebeat 实例
我的 test_docker 文件夹,目录层级
1 | [root@bogon test_docker]# tree |
新建一个 docker-compose.yml 文件
1 | version: '2.2' |
关于 filebeat.yml 的配置
1 | # 日志输入配置 |
启动容器
1 | [root@bogon test_docker]# docker-compose up |
1 | # 一些docker 命令 |
接着通过浏览器查看 Elasticsearch、Kibana 服务

配置 Kibana 索引
浏览器中打开 http://10.103.131.242:5601/
在 索引模式 中输入 filebeat 后,下面会有匹配到索引,然后点击下一步,选择 时间筛选字段名称,最后点击创建索引模式。
查看现有的索引:http://10.103.131.242:9200/_cat/indices?v

当前 health 状态是 green,如果一开始是 yellow,则需要查看索引的配置信息,修改分片数:目前我只是一台机器,所以设置成0,然后再刷新后就变绿了。

遇到的问题及解决
Another app is currently holding the yum lock; waiting for it to exit…
执行yum报错error: rpmdb: BDB0113 Thread/process 23226 failed: BDB1507 Thread died in Berkeley D
windows Elasticsearch启动报此处不应有Files\elascsearch-7.8.0\jdk解决办法一
浏览器界面提示
Kibana server is not ready yet执行
docker-compose up后,在浏览器上查看 Kibana 服务,发现提示Kibana server is not ready yet。通过
docker ps查看,只启动了 cerebro 和 kibana,elasticsearch 没启动成功![img]()
在
/etc/sysctl.conf中增加配置vm.max_map_count=262144,保存后执行sysctl -p,重新再启动服务就ok了![img]()
windows 下启动 logstash 报错
Unrecognized VM option 'UseConcMarkSweepGC'根据类似的错误,将 logstash 的 config 目录下的
jvm.options文件中的以下3行注释掉:1
2
3## -XX:+UseConcMarkSweepGC
## -XX:CMSInitiatingOccupancyFraction=75
## -XX:+UseCMSInitiatingOccupancyOnlyERROR:filebeat 连接不了 elasticsearch
报错:
Failed to connect to backoff(elasticsearch(http://localhost:9200)):Get http://localhost:9200:dail tcp 127.0.0.1:9200:connect:connection refused,后面一行又尝试 reconnect 了7次都失败了![image-20201015142530194]()
原因:在
filebeat.yml中配置的问题,将hosts: ["localhost:9200"]改为hosts: ["es7_01:9200"],其中es7_01是我在docker-compose.yml中elasticsearch的配置container_name: es7_01,地址需要保持一致。这个问题找了很久,在网上一直没有找到 docker 下部署的出现这个问题的资料,最后在相关群里问人才解决。连接成功的结果:
![]()
学习记录
-
其中最便捷的一种:
1
2
3
4
5
6
7
8[root@bogon test_docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a313438333f4 docker.elastic.co/elasticsearch/elasticsearch:7.1.0 "/usr/local/bin/dock…" 4 hours ago Up 41 minutes 0.0.0.0:9200->9200/tcp, 9300/tcp es7_01
ece44e259317 lmenezes/cerebro:0.8.3 "/opt/cerebro/bin/ce…" 4 hours ago Up 41 minutes 0.0.0.0:9000->9000/tcp cerebro
d85ff4c04999 docker.elastic.co/beats/filebeat:7.1.1 "/usr/local/bin/dock…" 4 hours ago Up 41 minutes filebeat
6b9f47643a7a docker.elastic.co/kibana/kibana:7.1.0 "/usr/local/bin/kiba…" 4 hours ago Up 41 minutes 0.0.0.0:5601->5601/tcp kibana7
[root@bogon test_docker]# docker exec -it a313438333f4 /bin/bash elasticsearch.yml配置项详解1
2
3
4
5
6
7
8bin :脚本文件,包括 ES 启动 & 安装插件等等
config : elasticsearch.yml(ES 配置文件)、jvm.options(JVM 配置文件)、日志配置文件等等
JDK : 内置的 JDK,JAVA_VERSION=“12.0.1“
lib : 类库
logs : 日志文件
modules : ES 所有模块,包括 X-pack 等
plugins : ES 已经安装的插件。默认没有插件
data : ES 启动的时候,会有该目录,用来存储文档数据。该目录可以设置



