如何知道弹性搜索集群中的总节点数?

How to know total nodes in an elasticsearch cluster?

我有 3 个节点的 elasticsearch 集群。如果不止一个节点出现故障,那么我可以轻松地手动检查它们。假设集群中的节点增加了,那么手动检查它们将很困难。那么,我怎样才能获得集群的所有节点(特别是节点的名称),即使它们已关闭?

为了获得 live/healthy 个节点,我点击了 api 端点:

curl -X GET "hostname/ip:port/_cat/nodes?v&pretty"

是否有任何端点可以用来获取 elasticsearch 集群中的总节点数和 unhealthy/down 个节点数?

我试图使用 elasticsearch.yml 配置文件中的 discovery.seed.hosts 列出所有节点。但是我不知道该怎么做,或者这是正确的方法。

我认为没有任何 API 了解离线节点。如果您的整个集群宕机或单个节点宕机,则 Elastic 不会提供任何检查节点健康状况的方法。您需要依赖外部脚本或代码或监控工具来 ping 您的所有节点并打印状态。

您可以编写一个自定义脚本,它将在 API 下面调用,它将 return 集群中可用的所有节点。收到响应后,您可以过滤掉节点的 IP 或主机名,无论哪个没有响应,您都可以将其视为关闭节点。

GET _cat/nodes?format=json&filter_path=ip,name

另一个选项是启用 cluster monitoring,这将为您提供整个集群的状态,但同样它只会显示有关 运行 节点的信息。

关于 Kibana 如何在集群监控中显示离线节点,请查看 this 答案。