Elasticsearch常用操作:叢集管理篇
[TOC]
0 說明
基於es 5.6,可以參考官方文件:
- cat API:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/cat.html
- Cluster API:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/cluster.html
1 Cat API
1.1 cat aliases
顯示索引的別名資訊、過濾器和路由資訊。
GET _cat/aliases?v
?v是輸出表頭。
返回結果如下:
alias index filter routing.index routing.search e3-commons-es es-java-api - - - goods_index my_index_new - - - alias_test my_index3 - - - alias_test2 my_index3 - - - alias_test my_index2 - - - my_search_indices bank_news_news - - - bank_alias bank - - -
1.2 cat allocation
檢視每個節點的分片數量以及每個節點的磁碟空間使用情況。
GET _cat/allocation?v
返回結果如下:
shards disk.indices disk.used disk.avail disk.total disk.percent host ip node 361 15.1gb 1.6tb 7.3tb 8.9tb 18 172.18.5.206 172.18.5.206 es01 361 15.4gb 1.7tb 7.2tb 8.9tb 19 172.18.5.204 172.18.5.204 es02 361 15gb 1.4tb 7.4tb 8.9tb 16 172.18.5.205 172.18.5.205 es03
1.3 cat count
檢視索引或叢集的文件數量。
GET _cat/count?v
或:
GET _cat/count/books?v
返回結果如下:
epoch timestamp count
1544437087 18:18:07 6754
1.4 cat fielddata
檢視每個資料節點上被fielddata所使用的堆記憶體大小。
GET _cat/fielddata?v
返回結果如下:
id host ip node field size jA22IcavSn6DU9RP3S081g 127.0.0.1 127.0.0.1 jA22Ica _uid 1.6kb jA22IcavSn6DU9RP3S081g 127.0.0.1 127.0.0.1 jA22Ica _parent#rd_center 1.4kb jA22IcavSn6DU9RP3S081g 127.0.0.1 127.0.0.1 jA22Ica _parent#country 1.4kb jA22IcavSn6DU9RP3S081g 127.0.0.1 127.0.0.1 jA22Ica _parent 1.4kb
fielddata的相關原理知識可以自行查詢文件來學習。
1.5 cat health
顯示叢集的健康狀態資訊。
GET _cat/health?v
返回結果如下:
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1544437302 18:21:42 elasticsearch yellow 1 1 186 186 0 0 179 0 - 51.0%
1.6 cat indices
檢視索引資訊,包括:健康狀態、索引開關狀態、分片數、副本數、文件數量、標記為刪除的文件數量、佔用的儲存空間、索引的唯一標識等。
GET _cat/indices?v
或:
GET _cat/indices/forum?v
返回結果如下:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open twitter ih5fzecDRFKHDoKPkAyQTg 5 1 3 0 15kb 15kb
yellow open cat_shop AALA-CWYREaLJUN8sMdbIg 5 1 1 0 5.1kb 5.1kb
yellow open range_index r8nh_ljRST-K4jztd0gHiw 5 1 1 0 4kb 4kb
yellow open myblog ZZEavPu9Q7uOH_QlXEcSQQ 5 1 2 0 7.4kb 7.4kb
yellow open .kibana d189HADjSKCy6fV1ogmRgg 1 1 1 0 3.1kb 3.1kb
yellow open forum JLUjf6LTRPylrayBIJgzbw 5 1 6 0 41.7kb 41.7kb
1.7 cat master
顯示master節點的id、ip和節點名。
GET _cat/master?v
返回結果如下:
id host ip node
-UobleMyQPmJOTAeEtoUdQ 192.168.10.102 192.168.10.102 es02
1.8 cat nodeattrs
返回節點的資訊,但實際上測試並沒有返回結果。
GET _cat/nodeattrs?v
1.9 cat nodes
返回叢集中各節點資訊。
GET _cat/nodes?v
返回結果如下:
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.10.102 7 73 0 0.10 0.03 0.00 mdi * es02
192.168.10.103 10 73 0 0.00 0.00 0.00 mdi - es03
192.168.10.101 3 97 1 0.01 0.01 0.00 mdi - es01
1.10 cat pending tasks
檢視正在執行的任務列表。
GET /_cat/pending_tasks?v
返回結果如下:
GET /_cat/pending_tasks?v
1.11 cat plugins
檢視節點所執行外掛資訊。
GET /_cat/plugins?v
返回結果如下:
name component version
es02 repository-hdfs 5.6.8
es03 repository-hdfs 5.6.8
es01 repository-hdfs 5.6.8
1.12 cat recovery
檢視索引分片恢復進度。
GET /_cat/recovery?v
返回結果如下:
index shard time type stage source_host source_node target_host target_node repository snapshot files files_recovered files_percent files_total bytes bytes_recovered bytes_percent bytes_total translog_ops translog_ops_recovered translog_ops_percent
logs-000001 0 782ms peer done 192.168.10.103 es03 192.168.10.101 es01 n/a n/a 1 1 100.0% 1 162 162 100.0% 162 0 0 100.0%
logs-000001 0 35ms empty_store done n/a n/a 192.168.10.103 es03 n/a n/a 0 0 0.0% 0 0 0 0.0% 0 0 0 100.0%
logs-000001 1 31ms empty_store done n/a n/a 192.168.10.101 es01 n/a n/a 0 0 0.0% 0 0 0 0.0% 0 0 0 100.0%
1.13 cat repositories
檢視叢集中的快照庫。
GET /_cat/repositories?v
返回結果如下:
id type
my_hdfs_repository2 hdfs
快照庫用來做索引備份與恢復。
1.14 cat thread pool
檢視叢集每個節點的執行緒池統計資訊。
GET /_cat/thread_pool?v
返回結果如下:
node_name name active queue rejected
jA22Ica bulk 0 0 0
jA22Ica fetch_shard_started 0 0 0
jA22Ica fetch_shard_store 0 0 0
jA22Ica flush 0 0 0
jA22Ica force_merge 0 0 0
jA22Ica generic 0 0 0
jA22Ica get 0 0 0
jA22Ica index 0 0 0
jA22Ica listener 0 0 0
jA22Ica management 1 0 0
jA22Ica refresh 0 0 0
jA22Ica search 0 0 0
jA22Ica snapshot 0 0 0
jA22Ica warmer 0 0 0
1.15 cat shards
檢視叢集中每個節點的分片資訊,包括分片名稱、編號、是否是主分片、狀態、文件資料、空間大小、所有節點ip、節點名稱。
GET /_cat/shards?v
返回結果如下:
index shard prirep state docs store ip node
my_index 2 r STARTED 1 3.2kb 192.168.10.103 es03
my_index 2 p STARTED 1 3.2kb 192.168.10.102 es02
my_index 1 p STARTED 0 162b 192.168.10.103 es03
my_index 1 r STARTED 0 162b 192.168.10.102 es02
my_index 3 p STARTED 1 3.2kb 192.168.10.101 es01
my_index 3 r STARTED 1 3.2kb 192.168.10.103 es03
my_index 4 r STARTED 0 162b 192.168.10.101 es01
my_index 4 p STARTED 0 162b 192.168.10.103 es03
my_index 0 p STARTED 0 162b 192.168.10.101 es01
my_index 0 r STARTED 0 162b 192.168.10.102 es02
1.16 cat segments
檢視索引的segment資訊,注意,索引資料實際上是以一個個segment的方式進行儲存的。
GET /_cat/segments?v
返回結果如下:
index shard prirep ip segment generation docs.count docs.deleted size size.memory committed searchable version compound
logs-000001 2 p 192.168.10.103 _0 0 1 0 3.1kb 1498 true true 6.6.1 true
logs-000001 2 r 192.168.10.102 _0 0 1 0 3.1kb 1498 true true 6.6.1 true
logs-000001 3 p 192.168.10.101 _0 0 1 0 3.1kb 1498 true true 6.6.1 true
logs-000001 3 r 192.168.10.103 _0 0 1 0 3.1kb 1498 true true 6.6.1 true
logs-000001 4 r 192.168.10.101 _0 0 1 0 3.1kb 1498 true true 6.6.1 true
logs-000001 4 p 192.168.10.102 _0 0 1 0 3.1kb 1498 true true 6.6.1 true
.kibana 0 p 192.168.10.101 _0 0 1 0 2.9kb 1737 true true 6.6.1 true
.kibana 0 r 192.168.10.102 _0 0 1 0 2.9kb 1737 true true 6.6.1 true
my_index 2 r 192.168.10.103 _0 0 1 0 2.9kb 1497 true true 6.6.1 true
my_index 2 p 192.168.10.102 _0 0 1 0 2.9kb 1497 true true 6.6.1 true
my_index 3 p 192.168.10.101 _2 2 1 0 2.9kb 1497 true true 6.6.1 true
my_index 3 r 192.168.10.103 _2 2 1 0 2.9kb 1497 true true 6.6.1 true
1.17 cat templates
檢視叢集中的模板。
GET /_cat/templates?v
返回結果如下:
name template order version
logstash logstash-* 0 50001
search template,可以參考文件:<https://www.elastic.co/guide/en/elasticsearch/reference/5.6/search-template.html>;
2 Cluster API
2.1 Cluster Health
檢視叢集的健康狀態。
GET /_cluster/health
返回結果如下:
{
"cluster_name": "es-prd",
"status": "yellow",
"timed_out": false,
"number_of_nodes": 3,
"number_of_data_nodes": 3,
"active_primary_shards": 20,
"active_shards": 37,
"relocating_shards": 0, // 正在發生遷移的分片
"initializing_shards": 0, // 正在初始化的分片
"unassigned_shards": 6, // 沒有被分配的分片
"delayed_unassigned_shards": 0, // 延遲未被分配的分片
"number_of_pending_tasks": 0, // 節點佇列中的任務數
"number_of_in_flight_fetch": 0, // 正在進行遷移的分片數量
"task_max_waiting_in_queue_millis": 0, // 佇列中任務的最大等待時間
"active_shards_percent_as_number": 86.04651162790698 // 活動分片的百分比
}
另外,關於status的說明如下:
status | 說明 |
---|---|
green | 不是所有索引的primary shard都是active狀態,部分索引有資料丟失了(因為如果只是primary shard不可用了,replica shard會提升,此時說明是有部分資料丟失了) |
yellow | 每個索引的primary shard都是active狀態,但是部分replica shard不是active狀態,處於不可用的狀態 |
red | 每個索引的primary shard和replica shard都是active狀態 |
2.2 Cluster State
返回叢集的完整狀態資訊。
GET /_cluster/state
返回的資料非常多,這裡不進行展示,但是可以只返回部分資料,如:
GET /_cluster/state/version
2.3 Cluster Stats
獲取各種統計資料。包括兩部分資料:
- 索引層面:分片數、儲存大小、記憶體使用等;
- 節點層面:節點數量、節點角色、作業系統、jvm資訊、記憶體、CPU、外掛等;
GET /_cluster/stats
2.4 Pending Cluster Tasks
返回一個正在新增到叢集狀態的任務列表。
GET /_cluster/pending_tasks
返回結果如下:
{
"tasks": []
}
2.5 Cluster Reroute
明確地執行叢集重新路由分配命令。
POST /_cluster/reroute
當然還可以新增其它的可選引數,這個可以自行參考官方文件。
2.6 Cluster Update Settings
更新叢集中的配置,如果是永久配置,需要重啟叢集;臨時配置的訞 不不需要重啟叢集。
PUT /_cluster/settings
{
"persistent": {
"discovery.zen.minimum_master_nodes":1
}
}
如果是臨時修改,則使用transient。
2.7 Nodes Stats
統計叢集中一個或多個節點的統計資訊。
GET /_nodes
或:
GET /_nodes/es01,es02
也可以只返回部分資訊:
GET /_nodes/es01,es02/os,jvm
2.8 Nodes Info
參考2.7.
2.9 Task Management API
獲取叢集中正在節點中執行的任務資訊。
GET /_tasks
2.10 Cluster Allocation Explain API
檢視分片沒有被分配的原因,比如通過GET /_cat/shards?v
看到某個索引沒有被分配,就可以使用下面的命令來檢視沒有被分配的原因。
GET /_cluster/allocation/explain
{
"index":"twitter",
"shard":0,
"primary":true
}