Elasticsearch与Kibana网络配置问题:Curl连接超时及令牌生成失败
解决Elasticsearch与Kibana归档包安装后的网络配置冲突问题
核心问题分析
你遇到的是单节点ES与Kibana的配置冲突:
- 开启
network.host: 0.0.0.0后,ES因缺少单节点集群配置导致集群健康检查失败,进而出现curl连接超时、注册令牌生成失败问题 - 关闭该配置后,ES仅绑定localhost,但Kibana因端口配置错误或网络限制无法正常连接ES(报错中的9202端口大概率是配置失误)
分步解决方案
1. 修正Elasticsearch配置(解决curl超时与令牌生成失败)
编辑elasticsearch.yml,添加/保留以下关键配置:
network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node # 学习用单节点必须设置,确保集群健康状态正常 xpack.security.enabled: true xpack.security.http.ssl.enabled: true xpack.security.http.ssl.certificate: certs/http_ca.crt xpack.security.http.ssl.key: certs/http_ca.key
配置完成后重启Elasticsearch:
# 先停止现有ES进程(可通过ps查找进程后kill,或用pkill elasticsearch) bin/elasticsearch # 前台启动查看日志,确认无致命错误
验证curl连接:
curl --cacert config/certs/http_ca.crt -m 15 -u elastic https://localhost:9200
若仍超时,检查:
- 端口9200是否被占用:执行
lsof -i :9200或netstat -tulpn | grep 9200 - 本地防火墙是否放行9200端口:Ubuntu用
ufw allow 9200,CentOS用firewall-cmd --add-port=9200/tcp --permanent && firewall-cmd --reload
此时重新生成Kibana注册令牌:
bin/elasticsearch-create-enrollment-token --scope kibana
2. 修正Kibana配置(解决无法获取ES版本信息)
编辑kibana.yml,确保以下配置正确:
server.port: 5601 # Kibana默认端口,避免与ES端口混淆 elasticsearch.hosts: ["https://localhost:9200"] # 指向ES的正确端口(不要写成9202) elasticsearch.ssl.certificateAuthorities: ["/path/to/elasticsearch/config/certs/http_ca.crt"] # 替换为你的http_ca.crt实际路径 elasticsearch.username: "elastic" elasticsearch.password: "你的elastic用户密码"
重启Kibana:
bin/kibana # 前台启动查看日志,确认连接ES成功
3. 排查ES启动非致命错误
若ES启动有警告类错误,重点检查:
- 系统内存配置:确保
vm.max_map_count至少为262144(Linux执行sysctl -w vm.max_map_count=262144,并写入/etc/sysctl.conf永久生效) - 文件描述符限制:设置
nofile至少为65535(Linux编辑/etc/security/limits.conf,添加elasticsearch soft nofile 65535和elasticsearch hard nofile 65535)
内容的提问来源于stack exchange,提问作者Hakan SONMEZ
相关产品推荐
相关产品推荐

