暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ES 最常见的 十种 故障诊断指令,帮你O(1)时间内定位集群故障问题

Elastic之家 2022-06-02
943
Elastic全栈技术贴、应用技术即原理。Elastic认证工程师之家
Elastic全栈课程

1、查询分片未分配的原因

1.1 问题场景描述

学习 Elasticsearch 最常遇到的一种情况:分片未分配

索引未分配的原因有很多种,准确的说有一共有 12 种。对于很多人来说,没有多年ES使用经验很难马上判断出索引未分配的原因,只能在网上去搜,然后一种一种方法的去试。线上出问题时间是分秒必争的。这就要求必须在最短的时间内定位问题。


1.2 诊断方式

以下为查看my_index
编号为 0 的副本分片的未分配原因

以下为查询结果核心代码

原因:node does not match index setting [index.routing.allocation.require] filters [_name:"node3"]

由此可见,索引分片未分配原因为分片过滤器阻挡了分片分配,查询到病症,方可对症下药。关闭过滤器即可

1.3 解决方案

不同的问题原因需要不同的解决方案,针对以上问题原因,关闭分片过滤器即可。我将在后续给出常见的分片未分配原因的不同解决方案

1.4 所有 12 种分片未分配原因汇总

以下为所有分片未分配的原因的故障码以及描述,共12种

2、查询集群的健康状况

2.1 健康状态

绿色:所有分片都可用黄色:至少有一个副本不可用,但是所有主分片都可用红色:至少有一个主分片不可用,数据不完整

可以通过一些客户端工具查看集群状态信息

2.2 查看状态信息

    GET _cat/health


    结果如下


      GET _cluster/health

      输出结构如下

      3、查看集群中所有节点的节点属性

        _cat/nodeattrs

        3.1 常见使用场景

        查看节点属性最常见的即查看节点的自定义属性,自定义属性用于节点标记,常被用于以下几种场景:

        冷热集群部署高可用集群架构部署分片分配策略部署

        如上图所示,红框部分为通过自定义属性标记了三个节点处于不同的 rack 上,此类标记常用集群部署高可用策略等


        4、查看集群中所有节点的分配信息

          _cat/nodes?v

          4.1 常见使用场景

          此命令长用于获取每个节点的分配情况,包括获取其分配的 IP 地址、资源占用信息、角色等。


          5、查询集群/索引的文档总计数

            GET _cat/count

            5.1 常见使用场景

            此命令用于查看集群或者指定索引中的文档总计数,也可被_count API
             替代,比如:

            计算集群中的文档总数

              GET _cat/count?v


              // 返回结果:
              epoch timestamp count
              1654141686 03:48:06 13342

              计算 product 索引中的文档总数

                GET _cat/count/product?v


                // 返回结果
                epoch timestamp count
                1654141931 03:52:11 13

                此命令可被_count API
                 替代

                  GET product/_count


                  // 返回结果
                  {
                  "count" : 13,
                  "_shards" : {
                  "total" : 1,
                  "successful" : 1,
                  "skipped" : 0,
                  "failed" : 0
                  }
                  }


                  6、查询集群的分片分配信息

                    _cat/shards

                    6.1 常见使用场景

                    常用于查看分片所处位置,包括所处哪个节点以及所处节点的 IP 地址。

                    常见的使用场景如:索引的生命周期管理、数据流等

                    6.2 使用案例

                      GET _cat/shards?v

                      返回结果如下

                      7、查询集群索引分片数、文档数或集群中包含哪些索引

                        _cat/indices

                        7.1 常见应用场景

                        此命令一般用于查看及群众包含哪些索引。可查询信息包括但不仅限于

                        索引的健康状态索引的打开关闭状态索引名称索引文档数量被删除的文档数量主分片数量副本分片数量

                        7.2 使用

                          GET _cat/indices?v

                          返回结果如下

                          8、查询集群的快照存储信息

                            _cat/snapshots

                            8.1 常见使用场景

                            用于获取索引数据的 快照备份信息查询

                            8.2 使用

                              GET /_cat/snapshots?v

                              也可用于指定快照名称进行查询

                                GET /_cat/snapshots/<repository>

                                9、查看集群状态信息

                                  _cluster/state

                                  9.1 常见使用场景

                                  用于查询集群状态元数据信息,包括:

                                  集群中的节点集所有集群级设置有关集群中索引的信息,包括它们的映射和设置集群中所有分片的位置。

                                  10、查看集群统计信息


                                    _cluster/stats

                                    10.1 描述

                                    此命令可以查询从集群范围的角度检索统计信息。API 返回基本索引指标(分片数量、存储大小、内存使用情况)和有关构成集群的当前节点的信息(数量、角色、操作系统、jvm 版本、内存使用情况、cpu 和已安装的插件)。

                                    索引到分片的映射文档技术统计fielddata缓存信息段文件信息索引字段类型统计信息分词器统计信息集群节点角色统计信息

                                    10.2 使用


                                       GET _cluster/stats



                                      Elastic开源社区  

                                      点赞分享加关注,学习加速不迷路

                                      DRAGON BOAT

                                      FESTIVAL

                                      文章转载自Elastic之家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                      评论