Elastic Stack 笔记(九)Elasticsearch5.6 集群管理
一、前言
集群搭建好以后,在日常中就要对集群的使用情况进行监控,对于一个多节点集群,由于网络连接问题,出现宕机、脑裂等异常情况都是有可能发生的。Elasticsearch 提供了 Cat API 和 Cluster API,可以方便地获取集群的健康情况、集群状态、节点状态、索引统计等信息。
二、集群 API
2.1 Cat API
cat API 官方参考文档:cat APIs
JSON is great… for computers. Even if it’s pretty-printed, trying to find relationships in the data is tedious. Human eyes, especially when looking at an ssh terminal, need compact and aligned text. The cat API aims to meet this need.
All the cat commands accept a query string parameter help to see all the headers and info they provide, and the /_cat command alone lists all the available commands.
包括如下 API:
- cat aliases
- cat allocation
- cat count
- cat fielddata
- cat health
- cat indices
- cat master
- cat nodeattrs
- cat nodes
- cat pending tasks
- cat plugins
- cat recovery
- cat repositories
- cat thread pool
- cat shards
- cat segments
- cat snapshots
- cat templates
常用的主要有:cat allocation、cat count、cat health、cat master、cat nodes、cat plugins、cat shards 和 cat templates 等,下面主要讲解这几个。
1)cat allocation
cat allocation 命令可以查看每个节点分片的分配数量以及它们所使用的硬盘空间大小。
GET /_cat/allocation?v
返回结果如下:
2)cat count
cat count 命令可以快速查询整个集群或者单个索引的文档数量(count)。
GET /_cat/count?v
返回结果如下:
查看单个索引的文档数量:
GET /_cat/count/books?v
返回结果如下:
3)cat health
cat health 命令用于显示集群的健康信息。
GET /_cat/health?v
返回结果如下:
4)cat master
显示出 master节点的节点 ID、绑定的 IP 和节点名。
GET /_cat/master?v
返回结果如下:
5)cat nodes
查看集群的拓扑结构。
GET /_cat/nodes?v
返回结果如下:
6)cat plugins
用于查看每一个节点所运行插件的信息。
GET /_cat/plugins?v
返回结果如下:
7)cat shards
用于查看节点包含的分片信息,包含一个分片是主分片还是一个副本分片、文档的数量、硬盘上占用的字节数、节点所在的位置等信息。
GET /_cat/shards/books?v
返回结果如下:
注意,分片序号从 0 开始,prirep 这一列中,p 代表主分片(primary),r 代表副本分片(replicate)。
8)cat templates
用于查看集群中的模板。
GET /_cat/templates?v
如果不存在模板,则返回为空,参数 v 表示显示表头。
2.2 Cluster API
Cluster APIs 官方参考文档:Cluster APIs
包括如下 API:
- Cluster Health
- Cluster State
- Cluster Stats
- Pending cluster tasks
- Cluster Reroute
- Cluster Update Settings
- Nodes Stats
- Nodes Info
- Nodes Feature Usage
- Remote Cluster Info
- Task Management API
- Nodes hot_threads
- Cluster Allocation Explain API
常用的有 Cluster Health、Cluster State、Cluster Stats、Nodes Stats 和 Nodes Info 等,下面主要讲解这几个。
1)Cluster Health
查看集群的健康信息:
GET _cluster/health
返回结果如下:
{ "cluster_name": "Banon", "status": "green", "timed_out": false, "number_of_nodes": 2, "number_of_data_nodes": 2, "active_primary_shards": 34, "active_shards": 68, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 0, "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": 100 }
参数说明:
cluster_name:集群名称;
status:集群的健康状态;
timed_out:是否超时;
number_of_nodes:节点数,包括 master 节点和 data 节点;
number_of_data_nodes:data 节点数;
active_primary_shards:活动的主分片;
active_shards:所有活动的分片数,包括主分片和副本分片;
relocating_shards:正在发生迁移的分片;
initializing_shards:正在初始化的分片;
unassigned_shards:没有被分配的分片;
delayed_unassigned_shards:延迟未被分配的分片;
number_of_pending_tasks:master 节点任务队列中的任务数;
number_of_in_flight_fetch:正在进行迁移的分片数量;
task_max_waiting_in_queue_millis:队列中任务的最大等待时间;
active_shards_percent_as_number:活动分片的百分比;
上面的命令用于获取整个集群的健康信息,也可以增加参数(索引名称),获取一个或多个索引的健康信息,如下:
green:所有的主分片和副本分片都可用;
yellow:所有的主分片可用,但存在不可用的副本分片;
red:存在不可用的主分片;
2)Cluster State
集群状态 API 可以对整个集群的信息进行一个全面的了解,包括集群信息、集群中每个节点的信息、元数据、路由表等。
GET _cluster/state
返回如下结果:
如上图 nodes 所示,表示此集群有两个节点,红色方框中分别为两个节点的 id(nodeId)。
3)Cluster Stats
集群统计 API 用于从集群中获取各种统计信息。主要包括两部分,一部分是索引层面,包含分片数、存储大小、内存使用情况等指标,另一部分是节点层面,包含节点数量、节点角色、操作系统、jvm 版本、内存、CPU、安装的插件等指标。
GET _cluster/stats
4)Nodes Stats
Cluster Nodes Stats(集群节点统计信息)API 可以获取集群中一个或者多个节点的统计信息。
GET _nodes/stats
返回结果如下:
由于内容太长,所以对每个节点进行了折叠。
也可以根据 nodeId 获取指定节点的统计信息:
GET _nodes/6n3douACShiPmlA9j2soBw,XwSysHCaQdmRAyp2D6NHLw/stats
当然也可以通过节点名称来获取节点的统计信息:
GET _nodes/masternode/stats
5)Nodes Info
Cluster Nodes Info API 可以获取集群中一个或多个节点的信息,包括设置、操作系统、虚拟机、线程池等信息。
GET _nodes
GET _nodes/masternode
GET _nodes/os,jvm
os、jvm 表示只查看节点的 os 和 jvm 信息。
三、监控插件
Bigdesk 监控插件是 Elasticsearch 的一个集群监控工具,可以通过它来查看 ES 集群的各种状态,比如:CPU、内存使用情况、JVM 信息、索引信息、搜索情况、HTTP 连接数、磁盘系统信息等。
Bigdesk 托管在 GitHub 上,项目地址:https://github.com/hlstudio/bigdesk。下载代码后,进入 bigdesk-master/_site 目录下,打开 index.html,在 ES node REST endpoint 输入框中输入 Elastsearch 集群节点的连接地址和端口即可。
界面如下所示:
主要包括如下五部分:
Summary、Indices、Thread Pools、OS & JVM & Process & Transport、File system