通過Kibana的Dev Tools控制台執行營運命令,可以查看叢集健康狀態、節點負載、分區分配、索引資訊等,用於日常巡檢和故障排查。
前提條件
已建立阿里雲ES執行個體,建立方法請參見建立Elasticsearch執行個體。
操作步驟
登入目標阿里雲ES執行個體的Kibana控制台。
具體操作請參見登入Kibana控制台。以下所有命令均可在Kibana的Dev Tools控制台中執行。
在左側導覽列,單擊Dev Tools(開發工具)。
在Console中,執行以下命令查看叢集的健康狀態。
GET /_cluster/health正常情況下,返回如下結果。
{ "cluster_name" : "es-cn-45xxxxxxxxxxxxk1q", "status" : "green", "timed_out" : false, "number_of_nodes" : 2, "number_of_data_nodes" : 2, "active_primary_shards" : 18, "active_shards" : 36, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "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" : 100.0 }status表示叢集的健康狀態,取值為green、yellow或red。叢集健康狀態
狀態
說明
red
不是所有的主要分區都可用。
表示該叢集中存在停用主分區。可以理解為某個或者某幾個索引存在主分區丟失的情況。
yellow
所有主要分區可用,但不是所有副本分區都可用。
表示該叢集中某個或者某幾個索引存在副本分區存在丟失的情況。
green
所有主要分區和副本分區都可用。
表示叢集中所有的索引都很健康,不存在丟失的分區。
叢集處於
yellow狀態時,密碼修改、叢集升配等變更操作耗時會顯著增加。建議先修複叢集狀態為green再進行變更。常見原因是索引複本數超過節點數減1,修複步驟如下:尋找狀態為
yellow的索引:curl -u <使用者名稱>:<密碼> http://<host>:9200/_cat/indices調整問題索引的副本數(設定為節點數減1):
curl -XPUT -u <使用者名稱>:<密碼> http://<host>:9200/<有問題的索引名稱>/_settings -H 'Content-Type: application/json' -d '{"index":{"number_of_replicas":(<當前節點數-1>)}'說明執行個體重啟或擴容後,需根據最新節點數量重新調整索引複本數。
叢集命令
命令 | 說明 |
GET /_cat/health?v | 查看叢集的健康狀態。叢集狀態包括green、red、yellow,各狀態的詳細說明請參見上方操作步驟。 |
GET /_cluster/health?pretty=true | 查看叢集的健康狀態。
|
GET /_cluster/stats | 查看叢集的系統資訊,包括CPU、JVM等資訊。 |
GET /_cluster/state | 查看叢集的詳細資料,包括節點、分區等資訊。 |
GET /_cluster/pending_tasks | 查看叢集中堆積的任務。 |
GET /_cluster/settings | 查看叢集設定。 |
節點命令
命令 | 說明 |
GET /_cat/master?v | 查看叢集中Master節點的資訊。 |
GET /_cat/nodes?v | 查看叢集中各個節點的目前狀態,包括節點CPU使用率、HeapMemory使用率、負載情況等。 |
GET /_cat/nodeattrs?v | 查看單節點的自訂屬性。 |
GET /_nodes/stats?pretty=true | 查看節點狀態。 |
GET /_nodes/process | 查看節點的進程資訊。 |
GET /_nodes/hot_threads | 查看高消耗的線程所執行的任務。常用於定位叢集高 CPU 原因,通過分析返回結果中的線程堆棧(如 Lucene Merge Thread)和 CPU 佔用率,可識別導致高負載的具體任務或操作。 |
GET /_nodes/<nodeip>/jvm,process,os | 查看指定節點的JVM、進程和作業系統資訊。 |
GET /_cat/plugins?v | 查看各節點的外掛程式資訊。 |
GET /_cat/thread_pool?v | 查看各節點的線程池統計資訊,包括線程池的類型、活躍線程數、任務隊列大小等。 |
分區命令
命令 | 說明 |
GET /_cat/shards?v | 查看叢集中各分區的詳細情況,包括索引名稱、分區編號、是主分區還是副分區、分區的目前狀態(對於分配失敗的分區會有失敗原因)、doc數量、磁碟佔用情況等。也可以指定index查看分區資訊( |
GET /_cat/allocation?v | 查看叢集中每個節點的分區分配情況。 |
GET /_cat/recovery?v | 查看叢集中每個分區的恢複過程。 |
Segments命令
GET /_cat/segments?v查看叢集中各索引的segment資訊,包括segment名稱、所屬shard、記憶體或磁碟佔用大小、是否刷盤等。也可以指定index查看segment資訊(GET _cat/segments/<index>?v)。
索引命令
命令 | 說明 |
GET /_cat/indices?v | 查看叢集中所有索引的詳細資料,包括索引的健康度、狀態、分區數和副本數、包含的文檔數等。也可以查看指定索引的資訊( |
GET /_cat/aliases?v | 查看叢集中所有aliases(索引別名)的資訊,包括aliases對應的索引、路由配置等。 |
Mapping命令
命令 | 說明 |
GET /_mapping | 查看叢集中所有索引的Mapping。 |
GET /<index>/_mapping | 查看指定索引的Mapping。 |
文檔命令
命令 | 說明 |
GET /_cat/count?v | 查看叢集中的文檔數量。也可以指定index查看文檔數量( |
GET /<index>/_doc/<id> | 查看文檔中的資料。 |
快照命令
命令 | 說明 |
GET _snapshot/_all | 查看所有快照。 |
GET _snapshot/<snapshot_name>/_status | 查看指定快照的進度。 |
常見問題
如何查看 Elasticsearch 中所有正在執行的搜尋任務?
在 Kibana 的Dev Tools控制台中執行以下命令,可查詢當前節點上所有正在啟動並執行 search 類型任務及其詳細資料。
GET /_tasks?actions=indices:data/read/search*&detailed=true&nodes=_local該命令適用於排查搜尋延遲、確認搜尋任務執行情況等情境。
Elasticsearch 搜尋請求返回 503 Service Unavailable 如何排查?
503 錯誤通常由叢集負載過高或磁碟使用率過高導致。排查步驟如下:
執行
GET /_cluster/health查看叢集健康狀態,確認是否存在 red/yellow 狀態或未分配分區。結合
GET /_cat/nodes?v檢查節點 CPU、HeapMemory 及磁碟使用率。若叢集狀態異常,優先處理分區分配或資源瓶頸問題後再重試搜尋請求。