如何查看和解释 ElasticSearch 集群的磁盘空间使用情况

要了解你的 elasticsearch 集群每个节点正在使用多少磁盘空间以及剩余多少磁盘空间,使用

es_allocation_curl.sh
curl -XGET "http://localhost:9200/_cat/allocation?v&pretty"

一个没有任何数据的节点的示例输出:

es_allocation_example.txt
shards disk.indices disk.used disk.avail disk.total disk.percent host       ip         node
    0           0b     2.4gb    200.9gb    203.3gb            1 172.18.0.2 172.18.0.2 TxYuHLF
es_allocation_explanation.txt
此示例输出告诉你:
* `shards: 0` 集群当前没有分片。这意味着集群中没有数据
* `disk.indices: 0b` 集群当前使用 0 字节的磁盘空间用于索引。
* `disk.used: 2.4gb` ElasticSearch 存储其数据的磁盘有 2.4 千兆字节已用空间。这并不意味着 ElasticSearch 使用 2.4 千兆字节,任何其他应用程序(包括操作系统)也可能使用(部分)该空间。
* `disk.avail: 200.9gb` ElasticSearch 存储其数据的磁盘有 200.9 千兆字节的可用空间。记住这不会仅在 ElasticSearch 在该磁盘上使用数据时缩小,其他应用程序也可能消耗一些磁盘空间,具体取决于你如何设置 ElasticSearch。
* `disk.total: 203.3gb` ElasticSearch 存储其数据的磁盘总大小为 203.3 千兆字节(总大小即*没有任何文件的文件系统上的可用空间*)
* `disk.percent: 1` 当前可用总磁盘空间(`disk.total`)的 1% 已被使用。此值始终四舍五入到整百分比。
* `host, ip, node`:此行引用的节点。

一个带有一些测试数据的节点的示例(请参见此 TechOverflow 文章了解如何生成测试数据):

es_allocation_example_with_data.txt
shards disk.indices disk.used disk.avail disk.total disk.percent host       ip         node
     5        6.8kb     2.4gb     21.6gb       24gb           10 172.18.0.2 172.18.0.2 J3W5zqj
     5                                                                                 UNASSIGNED

如我们所见,ElasticSearch 现在有 5 个分片。注意第二行告诉我们 5 个分片是 UNASSIGNED。这是因为 ElasticSearch 已配置为每个分片制作一个副本,并且没有第二个节点可以放置副本。对于开发配置这通常没问题,但生产配置通常应至少有两个节点。请参见我们的 ElasticSearch docker-compose 和 systemd 服务生成器了解如何使用 docker 配置本地多节点集群的说明。


Check out similar posts by category: ElasticSearch