【ES & Kibana】Kibana 启动 statusCode: 429 报错

ES 活着,Kibana 死了?报错 cluster_block_exception;真相:根目录磁盘超95%,ES触发保护性只读锁定,Kibana 写不进 .kibana 索引。

1、现象

bash 复制代码
# es 可以正常访问,kibana 服务无法正常启动
# 查看 kibana 启动日志(此处为 systemctl 方式启动的 kibana)
journalctl -u kibana -f
# kibana 报错
Apr 24 15:29:43 efk kibana[1226976]: FATAL Error: Unable to complete saved object migrations for the [.kibana] index. Please check the health of your Elasticsearch cluster and try again. Unexpected Elasticsearch ResponseError: statusCode: 429, method: PUT, url: /.kibana_7.17.22_001/_mapping?timeout=60s error: [cluster_block_exception]: index [.kibana_7.17.22_001] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];,  

2、问题原因

  • **问题根因:**Elasticsearch 磁盘空间不足,而非 Kibana 本身故障

  • **关键错误日志:**index [.kibana_7.17.22_001] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block]

  • **原因解析:**Elasticsearch节点触发了磁盘使用率警戒水位线(默认≥95%);为保护集群稳定,ES自动将所有相关索引设为read-only-allow-delete(只读状态);Kibana 启动时需要创建/写入.kibana索引来保存配置,因此被阻塞而退出

3、解决办法

bash 复制代码
# 手动清理磁盘空间(删除不必要的文件)
# (可选)删除 es 不必要索引
curl -X DELETE "http://x.x.x.x:9200/your_old_index_name" -u elastic:your_password
# 解除 es 的只读锁定
curl -X PUT "http://x.x.x.x:9200/_all/_settings" -H 'Content-Type: application/json' -u elastic:your_password -d '{
  "index.blocks.read_only_allow_delete": null
}'
# 重启 kibana
systemctl restart kibana
ssytemctl status kibana

4、其他

4.1、es 启动参数分析

bash 复制代码
# 查看 es 的启动参数
ps -ef |grep elastic

# 配置文件目录是 /etc/elasticsearch
-Des.path.conf=/etc/elasticsearch
# 配置文件
elasticsearch.yml      # 核心配置文件,网络、端口、集群名等重要配置
jvm.options            # JVM(Java虚拟机)参数配置文件,用于设置JVM堆内存大小(-Xms, -Xmx)等

# elasticsearch.yml
http.port:HTTP端口,用于API调用,默认 9200-9300
transport.port:TCP传输端口,用于集群内部节点之间的通信,默认 9300-9400
network.host:服务绑定的IP地址,若未配置,可能会绑定在 127.0.0.1(仅本地访问)或 0.0.0.0(允许外部访问)
cluster.name::elasticsearch	集群名称,用于节点发现
node.name:主机名,节点名称(与主机名一致)
path.data:数据存储目录
path.logs:日志存储目录(排查问题时非常重要)

4.2、使用命令重置 es 密码

bash 复制代码
# 为内置用户设置密码(交互式)
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
# 或者自动生成随机密码
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
# 重置 es 用户密码
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

# 默认用户名
elastic:超级管理员
kibana:Kibana系统用户
logstash_system:Logstash系统用户
beats_system:Beats系统用户

# 使用elastic用户访问
curl -u elastic:your_password http://x.x.x.x:9200
# 查看集群健康状态
curl -u elastic:your_password http://x.x.x.x:9200/_cluster/health
相关推荐
Elivs.Xiang2 小时前
基于docker安装MySQL、RabbitMQ、ElasticSearch、minio
linux·mysql·elasticsearch·docker·rabbitmq
Elastic 中国社区官方博客11 小时前
为 Elastic Cloud Serverless 和 Elasticsearch 引入统一的 API 密钥
大数据·运维·elasticsearch·搜索引擎·云原生·serverless
vastsmile13 小时前
(R)26.04.23 hermes agent执行本地命令超级慢的原因
开发语言·elasticsearch·r语言
OtIo TALL18 小时前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins
Elastic 中国社区官方博客1 天前
Jina embeddings v3 现已在 Gemini Enterprise Agent Platform Model Garden 上可用
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·jina
前端若水1 天前
Git 撤销与恢复完全指南(超级详细版)
大数据·git·elasticsearch
tonydf1 天前
日志模块该如何设计
后端·elasticsearch
前端若水1 天前
Git 可以做的所有操作(完整分类)
大数据·git·elasticsearch
Elasticsearch1 天前
我们如何构建 Elasticsearch simdvec,使向量搜索成为世界上最快之一
elasticsearch