如何知道 Elasticsearch 集群中节点的总数?

4
我有一个由3个节点组成的 Elasticsearch 集群。如果有多个节点宕机,我可以手动轻松地进行检查。假设集群中的节点增加了,那么手动检查将变得困难。那么,即使节点宕机,我如何获取集群中所有节点(特别是节点名称)?
为了获取活动/正常节点,我使用以下 API 端点:
curl -X GET "hostname/ip:port/_cat/nodes?v&pretty"
是否有任何端点可用于获取 Elasticsearch 集群中的总节点数和不健康/宕机节点?
我正在尝试使用 Elasticsearch.yml 配置文件中存在的 discovery.seed.hosts 来列出所有节点。但我不知道如何做或者这是否是正确的方法。
1个回答

5
我认为没有任何API可以了解离线节点。如果整个集群或单个节点宕机,则Elastic不提供任何检查节点健康状况的方式。您需要依赖外部脚本、代码或监控工具,该工具将ping所有节点并打印状态。
您可以编写自定义脚本,调用下面的API,它将返回集群中所有可用的节点。一旦收到响应,您就可以过滤出节点的IP或主机名,哪些未在响应中出现,您可以将其视为宕机节点。
GET _cat/nodes?format=json&filter_path=ip,name

另一个选择是启用集群监控,它将为您提供整个集群的状态,但仅会显示运行节点的信息。
请查看这个答案,了解Kibana如何在集群监控中显示离线节点。

感谢提供的信息。那么,我们只能列出或计算处于活动状态或健康状态的节点,是吗?您能分享一些有关脚本的文章或资源吗?我已经使用了Kibana仪表板堆栈监视功能来监视es集群,如果没有这样的API端点,那么Kibana如何能显示脱机/关闭节点呢? - Abhishek Sinha
请阅读此答案,了解Kibana如何显示离线节点。他们提到了与我在答案中提到的相同方法,即比较监控响应和集群配置中的节点列表。 - Sagar Patel
1
谢谢@Sagar Patel,这会有所帮助。 - Abhishek Sinha
FYI,在Kibana上有一个名为Stack Monitoring的部分,显示一些基本信息。 - ozgurozkanakdemirci
1
@ozgurozkanakdemirci 他想了解关于离线节点的情况,这些节点在Kibana堆栈监控部分永远不会显示。它只会显示关于在线节点的信息。 - Sagar Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接