gpt4 book ai didi

elasticsearch - 如何获取Elasticsearch集群中当前打开的分片数量?

转载 作者:行者123 更新时间:2023-12-02 22:44:15 28 4
gpt4 key购买 nike

我找不到从哪里获取当前打开的碎片数。
我想进行监视以避免此类情况:

this cluster currently has [999]/[1000] maximum shards open

我可以获得最大限制-max_shards_per_node
$ curl -X GET "${ELK_HOST}/_cluster/settings?include_defaults=true&flat_settings=true&pretty" 2>/dev/null | grep cluster.max_shards_per_node
"cluster.max_shards_per_node" : "1000",
$

但是无法找到如何获取当前打开的碎片数(999)。

最佳答案

获取此信息的一种非常简单的方法是调用 _cat/shards API并使用wc shell命令计算行数:

curl -s -XGET ${ELK_HOST}/_cat/shards | wc -l

这将产生一个数字,该数字代表集群中的分片数量。

另一种选择是使用JSON格式检索群集统计信息,将结果通过管道传输到 jq中,然后获取您想要的任何内容,例如下面,我计算所有STARTED分片:
curl -s -XGET ${ELK_HOST}/_cat/shards?format=json | jq ".[].state" | grep "STARTED" | wc -l

还有一种选择是查询 _cluster/stats API:
curl -s -XGET ${ELK_HOST}/_cluster/stats?filter_path=indices.shards.total

这将返回带有分片计数的JSON
{
"indices" : {
"shards" : {
"total" : 302
}
}
}

据我所知,没有ES会从任何API喷出单个数字。为确保这一点,让我们看一下源代码。
  • IndicesService.java 引发错误
  • 要查看currentOpenShards的计算方式,我们可以转到 Metadata.java

  • 如您所见,代码正在遍历从集群状态检索的索引元数据,这非常类似于运行以下命令并计算分片的数量,但仅适用于带有 "state" : "open"的索引
    GET _cluster/state?filter_path=metadata.indices.*.settings.index.number_of*,metadata.indices.*.state

    根据这些证据,我们几乎可以确定找不到您要查找的单个数字,但是需要使用我上面显示的方法之一来计算。如果需要,您可以自由使用 open a feature request

    关于elasticsearch - 如何获取Elasticsearch集群中当前打开的分片数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57727309/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com