Elasticsearch---cat APIs

一、介绍

如果经常在命令行环境下工作,cat API 对你会非常有用。用 Linux 的 cat 命令命名,这些 API 也就设计成像unix 命令行工具一样工作了。

他们提供的统计和前面已经讨论过的 API ( 健康、节点统计 等等 ) 是一样的。但是输出以表格的形式提供,而不是 JSON。对于系统管理员来说这是 非常方便的,你仅仅想浏览一遍集群或者找出内存使用偏高的节点而已。

通过 GET 请求发送 cat 命名可以列出所有可用的 API:

GET /_cat

=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates

二、常用的cat命令

函数调用解释
aliasesGET /_cat/XXX/aliases?v;GET /_cat/aliases/alias1,aliase2,aliase3查询当前配置索引,过滤器,路由的别名;如果需要指定一至多个别名,则以逗号隔开
allocationGET /_cat/allocation?v查询每个节点上分配的分片(shard)的数量和每个分片(shard)所使用的硬盘容量
countGET /_cat/count?v快速查询当前整个集群或者指定索引的document的数量(不包括删除的但是还没有清理掉的document)
fielddataGET /_cat/fielddata?v;GET /_cat/fielddata?v&fields=XXX;GET /_cat/fielddata/field1,field2,field3?v查询集群中每个节点中的fileddata所使用的堆内存;指定fields;指定多个field
healthGET /_cat/health?v;GET /_cat/health?v&ts=false查询当前集群的健康信息(同/_cluster/health),ts用于控制是否显示时间戳(timestamp)。1、常见的用途是用于监测节点之间的健康值;2、通过循环使用该命令,用于追踪大集群恢复的时间 /_cat/health; sleep 120; done green:每个索引的primary shard和replica shard都是active状态的;yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态;red: 不是所有索引的primary shard都是active状态的,部分索引有数据丢失了
indicesGET /_cat/indices/index1?v查询指定索引index1的相关信息(组成一个索引(index)的shard数量,document的数量,删除的doc数量,主存大小和所有索引的总存储大小(包括replicas)。其中document的数量和删除document的数量是lucense层级的,包括所有隐藏的document数量。要获取Elasticsearch层级的精确的document数量可以使用 cat count或者Count API 。
masterGET /_cat/master?v仅用于显示master的节点ID,绑定IP地址,节点名称
nodeattrsGET /_cat/nodeattrs?v输出显示自定义节点属性
nodesGET /_cat/nodes?v;GET /_cat/nodes?v&full_id=false输出当前集群的拓扑结构(包括当前节点所在的地方和整个集群的相关信息等);full_id(true/false)用于是否格式化ID字段以显示ID的全长或者简写
pending tasksGET /_cat/pending_tasks?v输出集群中正在执行的任务(集群层级的变化,比如:创建索引,更新mapping,分配或者fail shard)同 /_cluster/pending_tasks
pluginsGET /_cat/plugins?v输出每个节点正在运行的插件信息
recoveryGET /_cat/recovery?v提供一个视图关于索引分片 正在恢复或者已经完成恢复的相关信息。恢复事件操作可以发生在集群中一个索引分片从一个节点移动到另外一个节点上。可以发生在快照恢复期间,一个replication层级的变化,节点失败,或者节点启动的时候。节点启动的恢复操作也叫本地存储恢复(当一个节点启动的时候分片从硬盘上被加载到)
repositoriesGET /_cat/repositories?v输出集群中注册快照存储库
thread poolGET /_cat/thread_pool输出每个节点集群范围的线程池统计信息,默认情况下返回正在活动,队列和被拒绝的统计信息
shardsGET /_cat/shards输出节点包含分片的详细信息(当前分片是primary shard还是 replica shard,doc的数量,硬盘上占用的字节已经该节点被分配在哪里等);
segmentsGET /_cat/segments?v;GET /_cat/segments/index1,index1输出索引分片中关于segment的低层级的信息(包括索引名称,分片数量,doc数量等),提供的信息类似于_segments端点;查询指定索引(index1,index2)的segments信息
snapshotsGET /_cat/snapshots/repo1?v输出属于指定仓库的快照信息(snapshots),每个快照信息包括了它被启动和被停止的信息。
templatesGET /_cat/templates?v; GET /_cat/templates/templateName1;GET /_cat/templates/template*输出当前正在存在的模板信息;输出指定模板的信息

/_cat/health

查看集群的运行情况,为了检查集群的运行状况,我们将使用_cat API。您可以在Kibana的控制台中运行下面的命令,或者使用curl。

GET /_cat/health?v
完整API请求地址
curl -X GET "localhost:9200/_cat/health?v&pretty"

响应如下:

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1475247709 17:01:49  elasticsearch green           1         1      0   0    0    0        0             0                  -                100.0%

含义如下:
前两个是时间戳,不过多介绍。其余如下:

参数含义
cluster集群名称
status绿色-一切正常(集群功能齐全);黄色-所有数据都可用,但某些副本尚未分配(群集完全正常工作);红色-由于任何原因,某些数据不可用(群集部分正常工作)
node.total代表在线的节点总数量
node.data代表在线的数据节点的数量
shardsactive_shards 存活的分片数量
priactive_primary_shards 存活的主分片数量 正常情况下 shards的数量是pri的两倍。
relorelocating_shards 迁移中的分片数量,正常情况为 0
initinitializing_shards 初始化中的分片数量 正常情况为 0
unassignunassigned_shards 未分配的分片 正常情况为 0
pending_tasks准备中的任务,任务指迁移分片等 正常情况为 0
max_task_wait_time任务最长等待时间
active_shards_percent正常分片百分比 正常情况为 100%

同样,从上面的响应中,我们可以看到总共1个节点,并且我们有0个分片,因为我们在其中还没有数据。请注意,由于我们使用的是默认群集名称(ElasticSearch),并且由于ElasticSearch默认情况下使用单播网络发现在同一台计算机上查找其他节点,因此您可能会意外启动计算机上的多个节点,并让它们都加入一个集群。在这个场景中,您可能会在上面的响应中看到多个节点。

/_cat/nodes

GET /_cat/nodes?help

id               | id,nodeId               | unique node id
pid              | p                       | process id
host             | h                       | host name
ip               | i                       | ip address
port             | po                      | bound transport port
version          | v                       | es version
build            | b                       | es build hash
jdk              | j                       | jdk version
disk.avail       | d,disk,diskAvail        | available disk space
heap.percent     | hp,heapPercent          | used heap ratio
heap.max         | hm,heapMax              | max configured heap
ram.percent      | rp,ramPercent           | used machine memory ratio
ram.max          | rm,ramMax               | total machine memory
load             | l                       | most recent load avg
uptime           | u                       | node uptime
node.role        | r,role,dc,nodeRole      | d:data node, c:client node
master           | m                       | m:master-eligible, *:current master
...
...

我们可以得到集群中的节点列表或磁盘剩余,如下所示:

#集群节点(仅显示一部分,详细见上)
GET /_cat/nodes?v
#磁盘剩余
GET _cat/nodes?v&h=ip,node.role,name,disk.avail
#集群节点
GET _cat/nodes?v

ip              heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.113.103           60          93   5    0.54    0.53     0.55 di        -      data-2
192.168.113.104           12          87   7    0.72    0.77     0.94 -         -      client-1
192.168.113.101           13          90   4    0.35    0.32     0.37 m         *      master-1
192.168.113.102           46          91 100    2.81    2.84     3.44 di        -      data-1

#磁盘剩余
GET _cat/nodes?v&h=ip,node.role,name,disk.avail

ip              node.role name     disk.avail
192.168.113.102 di        data-1        2.4gb
192.168.113.103 di        data-2        6.5gb
192.168.113.104 -         client-1        5gb
192.168.113.101 m         master-1      6.5gb

参数含义
heap.percent堆内存占用百分比
ram.percent内存占用百分比
cpuCPU占用百分比
master*表示节点是集群中的主节点
name节点名

/_cat/master

#查看集群master节点
GET _cat/master?v

id                     host  ip              node
AhlyPtZYTta1AVH_7mUSbQ node1 192.168.113.101 master-1

/_cat/indices

GET /_cat/indices?v

#查看索引
health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .monitoring-kibana-7-2020.04.22 H91MQlDhR-G32wu0IRXt2w   1   0       1516            0    694.3kb        694.3kb
green  open   .kibana_task_manager_1          l9C49SlmQbG0tq37PTFh7g   1   0          2            0     12.5kb         12.5kb
green  open   .apm-agent-configuration        TbYun9VjQaWF6SNB9lyAkg   1   0          0            0       283b           283b
green  open   .monitoring-es-7-2020.04.22     b9aqyfv7TYO4go0wz374JQ   1   0      16681         9071      7.7mb          7.7mb
green  open   .kibana_1                       pv_IgXRER7OIp_7zkQ28lw   1   0         76            4    102.3kb        102.3kb
green  open   kibana_sample_data_flights      eYekCbGVRdW5pteY3U_4qQ   1   0      13059            0      6.2mb          6.2mb

/_cat/count

#整个集群文档数
GET _cat/count?v

epoch      timestamp count
1535185950 16:32:30  3008

/_cat/aliases

#返回有关索引的当前配置别名的信息,包括过滤器和路由信息。
GET /_cat/aliases?v

alias                index                  filter routing.index routing.search is_write_index
.kibana_task_manager .kibana_task_manager_1 -      -             -              -
.kibana              .kibana_1              -      -             -              -

/_cat/allocation

# 查看每个数据节点上的分片数(shards),以及每个数据节点磁盘剩余
shards disk.indices disk.used disk.avail disk.total disk.percent host      ip        node
     6         16mb    48.6gb     34.2gb     82.8gb           58 127.0.0.1 127.0.0.1 master

/_cat/pending_tasks

#查看被挂起的任务
GET _cat/pending_tasks?v

insertOrder timeInQueue priority source

/_cat/shards

#查看每个索引的分片
GET /_cat/shards?v

index                           shard prirep state    docs   store ip        node
.monitoring-kibana-7-2020.04.22 0     p      STARTED  1768 687.8kb 127.0.0.1 master
.kibana_task_manager_1          0     p      STARTED     2  12.5kb 127.0.0.1 master
.monitoring-es-7-2020.04.22     0     p      STARTED 19453     9mb 127.0.0.1 master
.kibana_1                       0     p      STARTED    76 102.3kb 127.0.0.1 master
kibana_sample_data_flights      0     p      STARTED 13059   6.2mb 127.0.0.1 master
.apm-agent-configuration        0     p      STARTED     0    283b 127.0.0.1 master

/_cat/templates

#查看索引模板
GET _cat/templates?v

name                            index_patterns               order      version
.watches                        [.watches*]                  2147483647 
.monitoring-alerts-7            [.monitoring-alerts-7]       0          7000199
.monitoring-beats               [.monitoring-beats-7-*]      0          7000199
.transform-notifications-000002 [.transform-notifications-*] 0          7050199
.monitoring-es                  [.monitoring-es-7-*]         0          7000199
.transform-internal-003         [.transform-internal-003]    0          7050199
.monitoring-kibana              [.monitoring-kibana-7-*]     0          7000199
.ml-meta                        [.ml-meta]                   0          7050199
.management-beats               [.management-beats]          0          70000
.ml-config                      [.ml-config]                 0          7050199
.triggered_watches              [.triggered_watches*]        2147483647 
.slm-history                    [.slm-history-1*]            2147483647 
.monitoring-logstash            [.monitoring-logstash-7-*]   0          7000199
.watch-history-10               [.watcher-history-10*]       2147483647 
.logstash-management            [.logstash]                  0          
.ml-anomalies-                  [.ml-anomalies-*]            0          7050199
.ml-notifications-000001        [.ml-notifications-000001]   0          7050199
.ml-state                       [.ml-state*]                 0          7050199

/_cat/plugins

#查看每个节点正在运行的插件
GET _cat/plugins?v

name     component          version
data-2   x-pack-core        6.2.4
client-1 x-pack-core        6.2.4
client-1 x-pack-monitoring  6.2.4
client-1 x-pack-security    6.2.4
client-1 x-pack-upgrade     6.2.4

/_cat/fielddata

全文检索用倒排索引非常合适;但过滤、分组聚合、排序这些操作,正排索引更合适。

ES中引入了fielddata的数据结构用来做正排索引。如果需要对某一个字段排序、分组聚合、过滤,则可将字段设置成fielddata。

默认情况下:
text类型的字段是不能分组及排序的,如需要则需要开启该字段的fielddata=true,但是这样耗费大量的内存,不建议这么使用。

keyword类型默认可分组及排序。

fielddata默认是采用懒加载的机制加载到堆内存中。当某个字段基数特别大,可能会出现OOM。

GET _cat/fielddata?v&h=node,field,size

node   field                      size
data-1 kibana_stats.kibana.uuid     0b
data-1 kibana_stats.kibana.status   0b
data-2 kibana_stats.kibana.uuid     0b
data-2 kibana_stats.kibana.status   0b

#对某一字段进行查看
GET _cat/fielddata?v&h=node,field,size&fields=kibana_stats.kibana.uuid

node   field                    size
data-2 kibana_stats.kibana.uuid   0b
data-1 kibana_stats.kibana.uuid   0b

/_cat/segments

#返回有关索引分片中Lucene段的底层信息,类似于索引段API。
GET /_cat/segments/<index>
GET /_cat/segments

GET _cat/segments/.kibana?v&format=json&pretty

[
  {
    "index": ".kibana",
    "shard": "0",
    "prirep": "p",
    "ip": "192.168.113.102",
    "segment": "_2",
    "generation": "2",
    "docs.count": "1",
    "docs.deleted": "0",
    "size": "3.7kb",
    "size.memory": "1346",
    "committed": "true",
    "searchable": "true",
    "version": "7.2.1",
    "compound": "true"
  },
  {
    "index": ".kibana",
    "shard": "0",
    "prirep": "r",
    "ip": "192.168.113.103",
    "segment": "_2",
    "generation": "2",
    "docs.count": "1",
    "docs.deleted": "0",
    "size": "3.7kb",
    "size.memory": "1346",
    "committed": "true",
    "searchable": "true",
    "version": "7.2.1",
    "compound": "true"
  }
]

/_cat/nodeattrs

#查看每个节点的自定义属性
GET /_cat/nodeattrs?v

node     host  ip              attr              value
data-2   node3 192.168.113.103 ml.machine_memory 1028517888
data-2   node3 192.168.113.103 ml.max_open_jobs  20
data-2   node3 192.168.113.103 ml.enabled        true
client-1 node4 192.168.113.104 ml.machine_memory 1856888832
client-1 node4 192.168.113.104 ml.max_open_jobs  20
client-1 node4 192.168.113.104 ml.enabled        true
master-1 node1 192.168.113.101 ml.machine_memory 1028517888
master-1 node1 192.168.113.101 ml.max_open_jobs  20
master-1 node1 192.168.113.101 ml.enabled        true
data-1   node2 192.168.113.102 ml.machine_memory 1028517888
data-1   node2 192.168.113.102 ml.max_open_jobs  20
data-1   node2 192.168.113.102 ml.enabled        true

/_cat/recovery/

#索引分片的恢复视图,包括正在进行和先前已完成的恢复
#只要索引分片移动到群集中的其他节点,就会发生恢复事件
GET _cat/recovery/.kibana?v&format=json&pretty

[
  {
    "index" : ".kibana_1",
    "shard" : "0",
    "time" : "38ms",
    "type" : "empty_store",
    "stage" : "done",
    "source_host" : "n/a",
    "source_node" : "n/a",
    "target_host" : "127.0.0.1",
    "target_node" : "master",
    "repository" : "n/a",
    "snapshot" : "n/a",
    "files" : "0",
    "files_recovered" : "0",
    "files_percent" : "0.0%",
    "files_total" : "0",
    "bytes" : "0",
    "bytes_recovered" : "0",
    "bytes_percent" : "0.0%",
    "bytes_total" : "0",
    "translog_ops" : "0",
    "translog_ops_recovered" : "0",
    "translog_ops_percent" : "100.0%"
  }
]

/_cat/snapshots

#可将ES中的一个或多个索引定期备份到如HDFS、S3等更可靠的文件系统,以应对灾难性的故障
#第一次快照是一个完整拷贝,所有后续快照则保留的是已存快照和新数据之间的差异
#当出现灾难性故障时,可基于快照恢复

GET _cat/snapshots/repo1?v

/_cat/repositories

#返回集群的快照存储库。
GET /_cat/repositories?v

id    type
repo1   fs
repo2   s3

/_cat/thread_pool

#查看每个节点bulk线程池的统计信息
# actinve(活跃的),queue(队列中的)和 reject(拒绝的)
GET _cat/thread_pool/bulk?v&format=json&pretty

[
  {
    "node_name": "data-2",
    "name": "bulk",
    "active": "0",
    "queue": "0",
    "rejected": "0"
  },
  {
    "node_name": "client-1",
    "name": "bulk",
    "active": "0",
    "queue": "0",
    "rejected": "0"
  },
  {
    "node_name": "master-1",
    "name": "bulk",
    "active": "0",
    "queue": "0",
    "rejected": "0"
  },
  {
    "node_name": "data-1",
    "name": "bulk",
    "active": "0",
    "queue": "0",
    "rejected": "0"
  }
]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值