ELK - Elasticsearch Validation Failed: this cluster currently has [1000]/[1000] maximum shards open

Elasticsearch突然就写不进去了,看日志,shards有1000的限制。

Dev Tool

{
  "error" : {
    "root_cause" : [
      {
        "type" : "runtime_exception",
        "reason" : "Failed to persist transform configuration"
      }
    ],
    "type" : "runtime_exception",
    "reason" : "Failed to persist transform configuration",
    "caused_by" : {
      "type" : "validation_exception",
      "reason" : "Validation Failed: 1: this action would add [2] total shards, but this cluster currently has [1000]/[1000] maximum shards open;"
    }
  },
  "status" : 500
}

elasticsearch.log

Caused by: org.elasticsearch.common.ValidationException: Validation Failed: 1: this action would add [2] total shards, but this cluster currently has [1000]/[1000] maximum shards open;
        at org.elasticsearch.indices.ShardLimitValidator.validateShardLimit(ShardLimitValidator.java:80) ~[elasticsearch-7.9.0.jar:7.9.
### 三级标题:Docker Compose ELK Stack 网络与版本冲突修复 在使用 `docker-compose.yml` 配置 ELK 栈时,若指定的 `version: '3.8'` 并出现网络错误 `service "logstash" refers to undefined network elk-net`,说明服务中引用了未定义的自定义网络。为确保容器间的通信正常运行,必须在 `networks` 段显式声明所有自定义网络[^1]。 #### 正确配置自定义网络 在 YAML 文件顶部添加如下网络声明: ```yaml networks: elk-net: driver: bridge ``` Logstash、Elasticsearch 和 Kibana 的服务配置需统一使用该网络: ```yaml logstash: image: docker.elastic.co/logstash/logstash:7.2.0 networks: - elk-net ports: - "5044:5044" - "9600:9600" depends_on: - elasticsearch ``` --- #### 完整 ELK 栈配置示例(适配 Logstash 7.2.0) 以下是一个适用于 Logstash 7.2.0 的 `docker-compose.yml` 示例片段,确保兼容性与功能性: ```yaml version: '3.8' networks: elk-net: driver: bridge services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 container_name: elasticsearch environment: - discovery.type=single-node ports: - "9200:9200" - "9300:9300" networks: - elk-net logstash: image: docker.elastic.co/logstash/logstash:7.2.0 container_name: logstash ports: - "5044:5044" - "9600:9600" volumes: - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf depends_on: - elasticsearch networks: - elk-net kibana: image: docker.elastic.co/kibana/kibana:7.2.0 container_name: kibana ports: - "5601:5601" depends_on: - elasticsearch networks: - elk-net ``` --- #### 日志管道无输出问题排查 若 Logstash 启动成功但数据无法写入 Elasticsearch 或控制台无输出,可检查日志确认是否因安全认证失败导致: ``` [security_exception] unable to authenticate user [elastic] for REST request ``` 此错误表明 Logstash 使用的账号权限不足或未正确配置安全凭证。可在 Logstash 输出插件中明确指定用户名和密码: ```ruby output { elasticsearch { hosts => ["http://elasticsearch:9200"] user => "elastic" password => "your_secure_password" } } ``` 此外,确保 Elasticsearch 已关闭安全验证或已正确配置 TLS 加密与用户权限管理[^2]。 --- #### 网络连通性验证 进入 Logstash 容器并测试对 Elasticsearch 的访问能力: ```bash docker exec -it logstash bash curl -v http://elasticsearch:9200 ``` 若返回 `Connection refused`,应进一步检查 Elasticsearch 是否启动成功,并确认其绑定地址是否为 `0.0.0.0` 而非仅限于 `localhost`。 --- #### 版本兼容性建议 Logstash 7.2.0 属于较旧版本,需确保与 Elasticsearch 和 Kibana 的版本一致,避免因协议变更或功能弃用导致不可预见的问题。官方推荐使用相同主版本的组件以保证稳定性。对于新部署项目,建议优先考虑更新至 8.x 系列以获得更好的安全性与性能优化。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值