首页 > 其他分享 >ES运维常见的十个故障诊断指令汇总

ES运维常见的十个故障诊断指令汇总

时间:2023-09-09 15:56:20浏览次数:51  
标签:count index name 运维 bytes 故障诊断 集群 分片 ES

文章目录
1、查询分配未分配的原因
1.1 问题场景描述
1.2 诊断方式
1.3 解决方案
1.4 所有 12 种分片未分配原因汇总
2、查询集群的健康状况
2.1 健康状态
2.2 查看状态信息
3、查看集群中所有节点的节点属性
3.1 常见使用场景
4、查看集群中所有节点的分配信息
4.1 常见使用场景
5、查询集群/索引的文档总计数
5.1 常见使用场景
6、查询集群的分片分配信息
6.1 常见使用场景
6.2 使用案例
7、查询集群中索引的分片数、文档数或集群中包含哪些索引
7.1 常见应用场景
7.2 使用
8、查询集群的快照存储信息
8.1 常见使用场景
8.2 使用
9、查看集群状态信息
9.1 常见使用场景
10、查看集群统计信息
10.1 描述
10.2 使用

1、查询分配未分配的原因
1.1 问题场景描述
学习 Elasticsearch 最常遇到的一种情况:分片未分配


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

1.2 诊断方式
_cluster/allocation/explain
1
以下为查看my_index编号为 0 的副本分片的未分配原因

GET _cluster/allocation/explain
{
  "index": "my_index",
  "shard": 0,
  "primary": false
}


以下为查询结果核心代码

{
      "node_id" : "bgLGquyZSeOKbFBTJECjOQ",
      "node_name" : "node1",
      "transport_address" : "127.0.0.1:9302",
      "node_attributes" : {
        "rack" : "rack1",
        "xpack.installed" : "true",
        "transform.node" : "false"
      },
      "node_decision" : "no",
      "deciders" : [
        {
          "decider" : "filter",
          "decision" : "NO",
          "explanation" : """node does not match index setting [index.routing.allocation.require] filters [_name:"node3"]"""
        }
      ]
    }

 


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

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

1.3 解决方案

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

PUT my_index/_settings
{
  "index.routing.allocation.require._name": null
}

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

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

* ALLOCATION_FAILED: 由于分片分配失败而未分配
* CLUSTER_RECOVERED: 由于完整群集恢复而未分配.
* DANGLING_INDEX_IMPORTED: 由于导入悬空索引而未分配.
* EXISTING_INDEX_RESTORED: 由于还原到闭合索引而未分配.
* INDEX_CREATED: 由于API创建索引而未分配.
* INDEX_REOPENED: 由于打开闭合索引而未分配.
* NEW_INDEX_RESTORED: 由于还原到新索引而未分配.
* NODE_LEFT: 由于承载它的节点离开集群而取消分配.
* REALLOCATED_REPLICA: 确定更好的副本位置并取消现有副本分配.
* REINITIALIZED: 当碎片从“开始”移回“初始化”时.
* REPLICA_ADDED: 由于显式添加了复制副本而未分配.
* REROUTE_CANCELLED: 由于显式取消重新路由命令而取消分配.

2、查询集群的健康状况

2.1 健康状态

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

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

 

2.2 查看状态信息

 输出结构如下

{
  "cluster_name" : "my_cluster",       集群名称 
  "status" : "yellow",                集群健康值
  "timed_out" : false,                是否超时
  "number_of_nodes" : 3,            索引主分片数量
  "number_of_data_nodes" : 3,        数据节点数量
  "active_primary_shards" : 37,        活跃主分片数量
  "active_shards" : 65,                活跃的分片数量
  "relocating_shards" : 0,            迁移中的分片的数量
  "initializing_shards" : 0,        初始化中的分片数量
  "unassigned_shards" : 3,            未分配的分片数量
  "delayed_unassigned_shards" : 0,    延迟未分配的分片数量
  "number_of_pending_tasks" : 0,    尚未执行的集群级别更改的数量
  "number_of_in_flight_fetch" : 0,                            未完成的提取次数
  "task_max_waiting_in_queue_millis" : 0,                    自最早启动的任务等待执行以来的时间
  "active_shards_percent_as_number" : 95.58823529411765        集群中活动分片的比率,以百分比表示
}

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

 // 返回结果如下
 {
  "_nodes" : {
    "total" : 3,
    "successful" : 3,
    "failed" : 0
  },
  "cluster_name" : "msb_cluster",
  "cluster_uuid" : "KhkbJ4V-TZemUBJ2vcWe9w",
  "timestamp" : 1654144248125,
  "status" : "yellow",
  "indices" : {
    "count" : 30,
    "shards" : {
      "total" : 65,
      "primaries" : 37,
      "replication" : 0.7567567567567568,
      "index" : {
        "shards" : {
          "min" : 2,
          "max" : 6,
          "avg" : 2.1666666666666665
        },
        "primaries" : {
          "min" : 1,
          "max" : 6,
          "avg" : 1.2333333333333334
        },
        "replication" : {
          "min" : 0.0,
          "max" : 1.0,
          "avg" : 0.9333333333333333
        }
      }
    },
    "docs" : {
      "count" : 13452,
      "deleted" : 2044
    },
    "store" : {
      "size_in_bytes" : 17546432,
      "total_data_set_size_in_bytes" : 17546432,
      "reserved_in_bytes" : 0
    },
    "fielddata" : {
      "memory_size_in_bytes" : 0,
      "evictions" : 0
    },
    "query_cache" : {
      "memory_size_in_bytes" : 0,
      "total_count" : 0,
      "hit_count" : 0,
      "miss_count" : 0,
      "cache_size" : 0,
      "cache_count" : 0,
      "evictions" : 0
    },
    "completion" : {
      "size_in_bytes" : 0
    },
    "segments" : {
      "count" : 126,
      "memory_in_bytes" : 370536,
      "terms_memory_in_bytes" : 242816,
      "stored_fields_memory_in_bytes" : 61872,
      "term_vectors_memory_in_bytes" : 0,
      "norms_memory_in_bytes" : 13824,
      "points_memory_in_bytes" : 0,
      "doc_values_memory_in_bytes" : 52024,
      "index_writer_memory_in_bytes" : 765980,
      "version_map_memory_in_bytes" : 0,
      "fixed_bit_set_memory_in_bytes" : 2816,
      "max_unsafe_auto_id_timestamp" : 1648427283621,
      "file_sizes" : { }
    },
    "mappings" : {
      "field_types" : [
        {
          "name" : "boolean",
          "count" : 5,
          "index_count" : 4,
          "script_count" : 0
        },
        {
          "name" : "date",
          "count" : 43,
          "index_count" : 12,
          "script_count" : 0
        },
        {
          "name" : "float",
          "count" : 14,
          "index_count" : 5,
          "script_count" : 0
        },
        {
          "name" : "geo_point",
          "count" : 3,
          "index_count" : 2,
          "script_count" : 0
        },
        {
          "name" : "geo_shape",
          "count" : 2,
          "index_count" : 2,
          "script_count" : 0
        },
        {
          "name" : "integer",
          "count" : 7,
          "index_count" : 2,
          "script_count" : 0
        },
        {
          "name" : "keyword",
          "count" : 199,
          "index_count" : 21,
          "script_count" : 0
        },
        {
          "name" : "long",
          "count" : 22,
          "index_count" : 12,
          "script_count" : 0
        },
        {
          "name" : "murmur3",
          "count" : 2,
          "index_count" : 2,
          "script_count" : 0
        },
        {
          "name" : "nested",
          "count" : 3,
          "index_count" : 3,
          "script_count" : 0
        },
        {
          "name" : "object",
          "count" : 31,
          "index_count" : 9,
          "script_count" : 0
        },
        {
          "name" : "text",
          "count" : 56,
          "index_count" : 20,
          "script_count" : 0
        }
      ],
      "runtime_field_types" : [ ]
    },
    "analysis" : {
      "char_filter_types" : [ ],
      "tokenizer_types" : [ ],
      "filter_types" : [ ],
      "analyzer_types" : [ ],
      "built_in_char_filters" : [ ],
      "built_in_tokenizers" : [ ],
      "built_in_filters" : [ ],
      "built_in_analyzers" : [
        {
          "name" : "ik_max_word",
          "count" : 2,
          "index_count" : 1
        }
      ]
    },
    "versions" : [
      {
        "version" : "7.13.0",
        "index_count" : 30,
        "primary_shard_count" : 37,
        "total_primary_bytes" : 8764317
      }
    ]
  },
  "nodes" : {
    "count" : {
      "total" : 3,
      "coordinating_only" : 0,
      "data" : 0,
      "data_cold" : 0,
      "data_content" : 3,
      "data_frozen" : 0,
      "data_hot" : 3,
      "data_warm" : 0,
      "ingest" : 3,
      "master" : 3,
      "ml" : 0,
      "remote_cluster_client" : 0,
      "transform" : 0,
      "voting_only" : 0
    },
    "versions" : [
      "7.13.0"
    ],
    "os" : {
      "available_processors" : 24,
      "allocated_processors" : 24,
      "names" : [
        {
          "name" : "Windows 10",
          "count" : 3
        }
      ],
      "pretty_names" : [
        {
          "pretty_name" : "Windows 10",
          "count" : 3
        }
      ],
      "architectures" : [
        {
          "arch" : "amd64",
          "count" : 3
        }
      ],
      "mem" : {
        "total_in_bytes" : 51175010304,
        "free_in_bytes" : 24862060544,
        "used_in_bytes" : 26312949760,
        "free_percent" : 49,
        "used_percent" : 51
      }
    },
    "process" : {
      "cpu" : {
        "percent" : 0
      },
      "open_file_descriptors" : {
        "min" : -1,
        "max" : -1,
        "avg" : 0
      }
    },
    "jvm" : {
      "max_uptime_in_millis" : 6379434,
      "versions" : [
        {
          "version" : "1.8.0_301",
          "vm_name" : "Java HotSpot(TM) 64-Bit Server VM",
          "vm_version" : "25.301-b09",
          "vm_vendor" : "Oracle Corporation",
          "bundled_jdk" : true,
          "using_bundled_jdk" : false,
          "count" : 3
        }
      ],
      "mem" : {
        "heap_used_in_bytes" : 873520008,
        "heap_max_in_bytes" : 3113877504
      },
      "threads" : 215
    },
    "fs" : {
      "total_in_bytes" : 148684926976,
      "free_in_bytes" : 31089479680,
      "available_in_bytes" : 31089479680
    },
    "plugins" : [
      {
        "name" : "analysis-ik",
        "version" : "7.13.0",
        "elasticsearch_version" : "7.13.0",
        "java_version" : "1.8",
        "description" : "IK Analyzer for Elasticsearch",
        "classname" : "org.elasticsearch.plugin.analysis.ik.AnalysisIkPlugin",
        "extended_plugins" : [ ],
        "has_native_controller" : false,
        "licensed" : false,
        "type" : "isolated"
      },
      {
        "name" : "mapper-murmur3",
        "version" : "7.13.0",
        "elasticsearch_version" : "7.13.0",
        "java_version" : "1.8",
        "description" : "The Mapper Murmur3 plugin allows to compute hashes of a field's values at index-time and to store them in the index.",
        "classname" : "org.elasticsearch.plugin.mapper.MapperMurmur3Plugin",
        "extended_plugins" : [ ],
        "has_native_controller" : false,
        "licensed" : false,
        "type" : "isolated"
      }
    ],
    "network_types" : {
      "transport_types" : {
        "security4" : 3
      },
      "http_types" : {
        "security4" : 3
      }
    },
    "discovery_types" : {
      "zen" : 3
    },
    "packaging_types" : [
      {
        "flavor" : "default",
        "type" : "zip",
        "count" : 3
      }
    ],
    "ingest" : {
      "number_of_pipelines" : 4,
      "processor_stats" : {
        "circle" : {
          "count" : 0,
          "failed" : 0,
          "current" : 0,
          "time_in_millis" : 0
        },
        "foreach" : {
          "count" : 0,
          "failed" : 0,
          "current" : 0,
          "time_in_millis" : 0
        },
        "gsub" : {
          "count" : 0,
          "failed" : 0,
          "current" : 0,
          "time_in_millis" : 0
        },
        "script" : {
          "count" : 0,
          "failed" : 0,
          "current" : 0,
          "time_in_millis" : 0
        }
      }
    }
  }
}

原文链接:https://blog.csdn.net/wlei0618/article/details/125095872

标签:count,index,name,运维,bytes,故障诊断,集群,分片,ES
From: https://www.cnblogs.com/sunlong88/p/17689583.html

相关文章

  • 2019 ICPC Universidad Nacional de Colombia Programming Contest
    A.Amazon给定\(n\)条直线(存在共线的情况),在每两条垂直的直线的交点处需要建一个交叉点,求交叉点的数量,注意需要去除共线时候的交叉点题解因为要除去共线的情况,我们考虑将一条直线以方向向量\(v\),与\(x\)轴的交点的横坐标\(x\)的方式存储注意:对于\(v\)来说需要最简形......
  • ESP8266 - WiFi
    ESP8266-WiFi当我们拿到Esp8266开发板的时候,既然具有wifi能功能的,那么我们肯定首先是需要来连接一下wifi啦。首先Esp8266可以工作在2种模式下,分别是AP接入点模式和STA无线终端模式下。一.接入点模式以下代码演示如何将Esp8266设置成AP工作模式#include<Arduino.h>const......
  • 2023-09-09 微信小程序之引入uni_modules过多插件导致主包体积过大如何解决 ==》hbuil
    前言:uni_modules里面的插件会全部打包在主包里,分包如果都是引用了uni_modules的插件,那么会导致包体积越来越大。我的项目主要用到一些组件库,如uview,对这个库的依赖太严重了,加上是把2个小程序融合到一起,所以对这个库的依赖就会变得更多。解决方案:你的小程序是用uniapp开发,才能使......
  • Test3
    方案markdown+Typora+picGo+jsdelivr+github仓库+bloghelperTypora:本地Markdown编辑器,用于本地编写文档PicGo:一个用于快速上传图片并获取图片URL链接的工具,可以与Typora集成,实现黏贴图片后自动上传图片到图床doocs.github.io/md:一款高度简洁的微信Ma......
  • [web] Session原理 (转载)
    1SessionWeb三大概念:cookie,session,applicationSession(会话):记录一系列状态用户登录用户登录后的操作Session与cookie功能效果相同。Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。解释session:当用户访问服务器某个网页时,服......
  • Test2
    方案markdown+Typora+picGo+jsdelivr+github仓库+bloghelperTypora:本地Markdown编辑器,用于本地编写文档PicGo:一个用于快速上传图片并获取图片URL链接的工具,可以与Typora集成,实现黏贴图片后自动上传图片到图床doocs.github.io/md:一款高度简洁的微信Ma......
  • Python学习笔记:pandas.Series.str.split分列
    split()方法通过指定分隔符对字符串进行切分,返回分割后的字符串列表  pandas.str.split分列Series.str.split(pat=None,expand=False)  返回分割后的Series ......
  • sv宏展开+参数化类+uvm_coreservice_t+m_sequencer的出现
    sv的宏展开https://www.systemverilog.io/verification/macros/`"包括双引号,双引号内的参数应替换,并且任何嵌入的宏都应该展开。`\`"在宏拓展结果中使用双引号。参数化类如果是要传入一种类型,使用关键字typeclasspacket#(intsize=1);//定义参数化类 bit[size-1......
  • 论文解读(LR2E)《Learning to Reweight Examples for Robust Deep Learning》
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:LearningtoReweightExamplesforRobustDeepLearning论文作者:MengyeRen、WenyuanZeng、BinYang、RaquelUrtasun论文来源:2021 论文地址:download 论文代码:download视屏讲解:click......
  • 解释 pandas.series.str.contains里的参数na的作用并举例
    pandas.Series.str.contains方法用于检查Series中的字符串是否包含指定的模式(pattern)。参数na是用来指定在Series中存在缺失值时的处理方式。它的作用是决定对于缺失值应该返回什么结果。下面是参数na的不同设置及其作用:默认值为na=True:如果设置为默认值,当Series中存在......