# Cluster Health（集群健康）

原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.4/_cluster_health.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.4/_cluster_health.html)

译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=4260685](http://www.apache.wiki/pages/viewpage.action?pageId=4260685)

贡献者 : [那伊抹微笑](/display/~wangyangting)，[ApacheCN](/display/~apachecn)，[Apache中文网](/display/~apachechina)

## 集群健康

让我们从基本的健康检查开始，我们可以用它来看看我们的集群在做什么。我们将使用 **curl** 来做这件事情，当然您也可以使用任何允许您进行 **HTTP**/**REST** 调用的工具。假设我们在同一节点上启动了 **Elasticsearch** 并且打开了另一个命令 **shell** 窗口。

为了检查集群健康，我们将使用 [`_cat` API](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/cat.html "cat APIs")。您可以在 [Kibana’s Console](https://www.elastic.co/guide/en/kibana/master/console-kibana.html) 通过点击 “**VIEW IN CONSOLE**” 或者通过点击 “**COPY AS CURL**” 链接然后粘贴到终端中使用 **curl **中运行命令 : 

```
curl -XGET 'localhost:9200/_cat/health?v&pretty'
```

响应如下 : 

```
epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1475247709 17:01:49  elasticsearch green           1         1      0   0    0    0        0             0                  -                100.0%
```

我们可以看到我们名为 “**elasticsearch**” 的集群与 **green** 的 **status**。

无论何时我们请求集群健康，我们可以获得 **green**，**yellow**，或者 **red** 的 **status**。**Green** 表示一切正常（集群功能齐全）， **yellow** 表示所有数据可用，但是有些副本尚未分配（集群功能齐全），**red** 意味着由于某些原因有些数据不可用。注意，集群是 **red**，它仍然具有部分功能（例如，它将继续从可用的分片中服务搜索请求），但是您可能需要尽快去修复它，因为您已经丢失数据了。

另外，从上面的响应中，我们可以看到共计 **1** 个 node（节点）和 **0** 个 shard（分片），因为我们还没有放入数据的。注意，因为我们使用的是默认的集群名称（**elasticsearch**），并且 **Elasticsearch** 默认情况下使用 **unicast network**（单播网络）来发现同一机器上的其它节点。有可能您不小心在您的电脑上启动了多个节点，然后它们全部加入到了单个集群。在这种情况下，你会在上面的响应中看到不止 1 个 **node**（节点）。

我们也可以获取我们集群的节点列表，如下所示 : 

```
curl -XGET 'localhost:9200/_cat/nodes?v&pretty'
```

响应如下 : 

```
ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1           10           5   5    4.46                        mdi      *      PB2SGZY
```

在这里，我们可以到我名为 “**I8hydUG**” 的节点名，这是目前在我们集群中的单个节点。