问题描述

经过上篇文章 “kibana第一次连接elasticsearch出现问题1” 的操作后,重新运行kibana容器,发现kibana对应链接依旧打不开,这次直接显示网络错误。

通过docker 命令查看kibana日志:

docker logs kibana

显示错误为:[elasticsearch-service] Unable to retrieve version information from Elasticsearch nodes. security_exception Root causes: security_exception: missing authentication credentials for REST request

问题原因

这个错误表示 Kibana 无法从 Elasticsearch 节点检索版本信息,原因是缺少身份验证凭据。Elasticsearch 需要身份验证来进行 REST 请求,但 Kibana 没有提供有效的身份验证信息。

解决过程

通过查询好像kibana可以通过两种方式进行身份认证:

  1. 使用用户身份进行验证:如果 Elasticsearch 启用了用户名和密码认证,在kibana的配置文件中添加对应的用户名和密码(elasticsearch创建的)
  2. 为 Kibana 配置证书认证: 如果 Elasticsearch 使用的是证书认证而不是用户名和密码,则需要在 Kibana 配置中提供适当的证书和密钥。

方案二在上篇文章 “kibana第一次连接elasticsearch出现问题1” 就出现了问题,因此选择方案一进行解决。

我记得 elasticsearch 有内置用户专门用于连接kibana。

方案二过程:

  1. 进入 Elasticsearch 容器
docker exec -it elasticsearch /bin/bash

  1. 手动为内置用户 kibana_system 设置密码,可以使用 --interactive 参数,它会提示输入并确认新密码。
bin/elasticsearch-reset-password -u kibana_system --interactive
  1. 退出容器
exit
  1. 在 Kibana 配置文件中添加凭证,打开 Kibana 容器的 kibana.yml 配置文件,通常位于 /usr/share/kibana/config/kibana.yml
cat >> /usr/share/kibana/config/kibana.yml
  1. 添加以下内容:
elasticsearch.username: "kibana_system"
elasticsearch.password: "your_kibana_system_password"
  1. 退出容器,重启kibana容器
exit

docker restart kibana
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐