由于公司需要搭建一个ELK日志平台,看了一下最新的8.5版本还可以,加了权限管理,可观测性等功能,所以就试下使用8.5版本,此教程基于docker-compose安装ELK的。我这里是直接使用filebeat推送到了Elasticsearch,所以logstash没有安装。由于是新版本,所以踩坑还是有点的,我将问题也汇总到最后。
安装环境:
软件 | 版本 |
Centos | 7.6以上 |
Docker | 20以上 |
Docker-compose | 1.25以上 |
安装目录如下:
序号 | 步骤 |
1 | 安装 Elasticsearch |
2 | 安装Kibana |
3 | 安装Filebeat |
2,创建挂载的目录
mkdir /home/es/elasticsearch/plugins
mkdir /home/es/elasticsearch/data
mkdir /home/es/elasticsearch/config
3,创建docker-compose文件
4,创建network
docker network create elastic
5,启动elasticsearch
docker-compose up -d
正常来说这里基本没问题的,能正常启动。如果遇到问题,可参考以下的问题
6,问题汇总
1,java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/
提示创建目录权限不足,然后把宿主机的目录添加了权限 chmod 777 /home/es/data 还是报错。最后才发现,需要yml文件加上privileged: true,然后就可以成功了
1,创建kibana.yml文件
如果需要安装汉化版,则添加以下配置
i18n.locale: "zh-CN"
2,创建挂载目录
mkdir /home/kibana/config
3,创建docker-compose文件
ELASTICSEARCH_URL :es网址
ELASTIC_USERNAME:es自定义用户
ELASTIC_PASSWORD:es密码
4,启动kibana
docker-compose up -d
5,问题汇总
1,FATAL Error: [config validation of [elasticsearch].username]: value of "elastic" is forbidden. This is a superuser account that cannot write to system indices that Kibana needs to function. Use a service account token instead.
界面会显示:Kibana server is not ready yet.
这是因为es 不允许使用elastic用户登录kibana
所以这里需要创建一个自定义用户
进入es容器,docker exec -it es bash,执行bin/elasticsearch-users useradd test
添加了用户,并需要给这个用户添加角色不然会报错
角色授权
bin/elasticsearch-users roles -a superuser test
bin/elasticsearch-users roles -a kibana_system test
然后启动kibana