Elasticsearch--集群管理_时光机&监控

Elasticsearch时光机

强大数据恢复机制

创建快照存储库

快照保存它创建的时间点上所有跟集群相关的数据,包括集群状态和索引的信息。至少在创建第一个快照之前,必须创建一个快照存储库。
每个存储库有名称区分,应该定义如下内容:

  • name:存储库的唯一名称
  • type:存储库的类型,可能值包括fs(共享文件系统中的存储库)、url(一个通过URL访问的只读存储库)。
  • settings:不同存储库类型需要的额外信息。
    创建一个文件系统存储库,集群中的每个节点都应该能访问这个目录。实例创建命令如下:

    前面的命令创建一个backup的库。将备份文件存储在由location属性指定的目录中。与此同时,本地文件系统中新建了backup_folder目录,但是没有任何内容。

创建快照

默认情况下,创建快照时,Elasticsearch取得所有的索引和集群设置。可以创建任意数量的快照,快照仅复制新的信息。这意味着Elasticsearch知道哪些段已经存储在存储库中,不会再保存它们。

创建快照,需要选择一个唯一的名称,命令如下:

curl -XPUT 'localhost:9200/_snapshot/backup/bckp1'

上面定义了一个名为bcp1的新快照,数据保存在定义的backup库中。以上命令成功后,快照就开始创建,如果想被创建以后才得到成功相应,可以添加wait_for_complete参数:

curl -XPUT 'localhost:9200/_snapshot/backup/bckp1?wait_for_complete=true&pretty'

额外参数

  • indices:想拍快照的索引名称
  • ignore_unavailable:默认是true,设置为false时,意味着如果indices参数指定的不存在的索引,命令将失败。
  • include_global_state:默认是true,指集群的状态也被写入快照中。
  • partial:快照的成功与否取决于所有分片的可能性,任何一个分片不可用,快照都将失败。设置partial为true时,Elasticsearch保存可用分片的信息,忽略丢失的分片。

还原快照

从backup存储库中还原一个名为bckp1的快照,执行下面命令:

curl -XPOST 'localhost:9200/_snapshot/backup/bckp1/_restore'

执行这个命令过程中,如果索引已经存在而且未关闭,命令将失败。这种情况下可以还原某些索引:

curl -XPOST 'localhost:9200/_snapshot/backup/bckp1/_restore?pretty -d {"include":"c*"}'

上述命令只还原以字母c开头的索引,还可以包含下列参数:

清理:删除旧的快照

curl -XDELETE 'localhost:9200/_snapshot/backup/bckp1?pretty'

监控集群状态和健康度

Elasticsearch提供了非常详细的信息,使得能够监控单个节点集群

集群健康度API

最基本的健康度API,得到整个集群的信息:

curl 'localhost:9200/_cluster/health?pretty'

返回的响应如下:

集群的状态有green(表示分片和副本都可用)yellow(表示部分副本不可用)red(至少一个主分片没有分配)。

curl 'localhost:9200/_cluster/health/library,map?pretty'

以上命令仅检查两个索引的健康度。
控制信息细节
Elasticsearch允许指定一个特征的level参数,把它指定为cluster(默认)、indices或shards。
额外的参数

  • timeout:控制命令执行的最长时间,默认是30s
  • wait_for_status:返回响应时,集群应该处于什么状态。可以取:green,yellow和red。如果指定状态是实际不符,响应会超时失败。
  • wait_for_nodes:返回响应时需要多少节点可用(或者达到timeout时间)
  • wait_for_relocationg_shard:默认不指定,告诉Elasticsearch应该重定位多少分片

索引统计API

Elasticsearch使用_stats端点上的索引统计API,可以得到关于集群中索引的各种信息。可以发送命令得到所有索引的信息(使用纯_stats端点),或得到某特定索引的信息,或者一次得到几个索引的信息。

curl -XPOST 'localhost:9200/library,map/_stats?pretty'


docs
显示索引文档的信息

"docs":{
"count":4,
"deleted":0
}

count指文档的数目,从索引中删除文档时,并不是立刻删除,而是做标记,等合并过程中删除,被标记的删除文档的数目在deleted属性中。

store
提供了关于存储的信息

"store":{
"size_in_bytes":6003,
"throttle_time_in_millis":0
}

主要信息是关于这个索引的大小。还有调节统计值,在系统有I/O性能问题,段合并过程中内部操作有限制时,这个信息很有用。

indexing, get和search
响应中的indexing,get,search节点提供了数据操纵的相关信息:索引删除操作,实时的get和搜索。

可以看到这些统计具有类似结构:请求花费的总时间,请求数,可以用总时间计算单个查询的平均时间。

额外信息
此外,Elasticsearch提供了下列信息。

状态API

另一个得到关于索引信息的方法,使用_status端点的状态API,返回描述了可用的分片,包含:哪个分片被认为是主分片,它被分配到哪个节点,被重新分配到了哪个节点,分片的状态,事务日志,合并过程以及刷新和清理统计。

节点信息API

请求发送到_nodes端点。
可以获取单个或特定几个节点的信息:

该API还允许使用如下方式一次性获得几个节点的信息:

  • 模式: 例如,_nodes/192.168.1.*或_nodes/P*
  • 节点枚举:例如_nodes/Pluse,Slab
  • 模式与节点枚举:例如,_nodes/P*, S*

默认情况下,对节点API的请求将返回关于节点的基本信息,比如名称、标示符、地址。通过添加额外参数,可以获取其他信息

curl -XPOST 'localhost:9200/_nodes/Pluse/os, jvm, plugins?pretty'

节点统计API

节点信息API提供环境信息,节点统计API告诉我们集群工作时发生过什么。发送命令的端口是/_nodes/stats。

集群状态API

允许获取整个集群的信息,也可以通过在请求中添加local=true,限制返回本地节点信息。

curl -XPOST 'localhost:9200/_cluster/state?pretty'

不过,也可以把提供信息限定为特定的度量,以及特定的索引

curl -XPOST 'localhost:9200/_cluster/state/nodes/map,library?pretty'

可以使用下列度量

挂起任务API

索引段API

cat API

上面API返回的信息都是JSON格式,对人来说不是很友好,Elasticsearch提供了一个友好API:cat API。向_cat REST端点发送一个请求,紧跟着下面的一个选项:

  • aliases: 返回有关别名的信息
  • allocation:返回分片分配和磁盘使用的信息
  • count:为所有索引或单个索引返回文档个数的信息
  • health:集群健康度信息
  • indices:返回所有索引或单个索引的信息
  • master:当前主节点信息
  • nodes:集群拓扑相关信息
  • pending_tasks:正在等待执行的任务信息
  • recovery:还原过程的视图
  • thread_pool:返回集群范围内线程池的统计信息
  • shards:关于分片的信息

curl -XGET 'localhost:9200/_cat/shards?v'


限制返回信息

  • aliases: 请求中添加别名,限定获取特定的别名
  • count:添加感兴趣的索引名字,限定获取特定索引的信息
  • indices:同count一样,特定索引
  • shards:同count一样,特定索引
原文地址:https://www.cnblogs.com/51zone/p/9866555.html