cat 接口的命令行使用
之前介绍的各种接口数据,其响应数据都是 JSON 格式,更适用于程序处理。对于我们日常运维,在 Linux 命令行终端环境来说,简单的分行和分列表格才是更方便的样式。为此,Elasticsearch 提供了 cat 接口。
cat 接口可以读取各种监控数据,可用接口列表如下:
/_cat/nodes
/_cat/shards
/_cat/shards/{index}
/_cat/aliases
/_cat/aliases/{alias}
/_cat/tasks
/_cat/master
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/pending_tasks
/_cat/count
/_cat/count/{index}
/_cat/snapshots/{repository}
/_cat/recovery
/_cat/recovery/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}/_cat/nodeattrs
/_cat/allocation
/_cat/repositories
/_cat/health
/_cat/indices
/_cat/indices/{index}
集群状态
还是以最基础的集群状态为例,采用 cat 接口查询集群状态的命令如下:
如果单看这行输出,或许不熟悉的用户会有些茫然。可以通过添加 ?v 参数,输出表头:
节点状态
跟集群状态不一样的是,节点状态数据太多,cat 接口不方便在一行表格中放下所有数据。所以默认的返回,只是最基本的内存和负载数据。具体想看某方面的数据,也是通过请求参数的方式额外指明。比如想看 heap 百分比和最大值:
h 请求参数可用的值,可以通过 ?help 请求参数来查询:
中间第二列就是对应的请求参数的值及其缩写。也就是说上面示例还可以写成:
索引状态
查询索引列表和存储的数据状态是也是 cat 接口最常用的功能之一。为了方便阅读,默认输出时会把数据大小以更可读的方式自动换算成合适的单位,比如 3.2tb 这样。
如果你打算通过 shell 管道做后续处理,那么可以加上 ?bytes 参数,指明统一采用字节数输出,这样保证在同一个级别上排序:
分片状态
同样,可以用 ?help 查询其他可用数据细节。比如每个分片的 segment.count:
恢复状态
在出现集群状态波动时,通过这个接口查看数据迁移和恢复速度也是一个非常有用的功能。不过默认输出是把集群历史上所有发生的 recovery 记录都返回出来,所以一般会加上 ?active_only 参数,仅列出当前还在运行的恢复状态:
线程池状态
这个接口的输出形式和 5.0 之前的版本有了较大变化,把不同类型的线程状态做了一次行列转换,大大减少了列数以后,对人眼更加合适了。
Last updated
Was this helpful?