當您的Kibana叢集因異常狀況被重設後,.kibana_{num}({num}為變數,例如.kibana_1、.kibana_2等)索引也會被重設,因此您需要恢複對應索引來恢複相關資料。本文以.kibana_1索引為例,介紹如何通過快照和reindex方式快速恢複.kibana_{num}索引。
背景資訊
.kibana_{num}索引用來儲存Kibana大盤、Kibana Index Patterns等Kibana配置資訊,而Kibana預設通過別名.kibana讀取資料,當系統中存在多個.kibana_{num}索引時,實際上只有一個會使用.kibana別名。
在複雜的業務情境下,例如,.kibana_1索引結構發生損壞或Kibana訪問異常,需要刪除.kibana_1索引重設Kibana叢集,或因定時任務配置異常導致.kibana_1索引被刪除,叢集重啟後Kibana相關資料被重設,.kibana_task_manager_1會自動產生一個綁定.kibana別名的.kibana_1索引,之前在Kibana上配置的Kibana Index Patterns、Dashboards和使用者角色等資訊均會被重設。
您可以通過以下方式恢複.kibana_1索引:
通過快照的方式直接恢複。
將快照資料恢複到備份索引,通過reindex方式將備份索引資料寫入到.kibana_1中。
手動重建Kibana Index Patterns或使用者角色。
前提條件
叢集已開啟自動快照備份或在快照中手動備份過系統索引,且快照中儲存的.kibana_1索引結構正常。
確保叢集中存在.kibana別名,並應用到.kibana_1索引。如果不存在.kibana_1索引,建議重啟Kibana服務,初始化產生.kibana_1索引。
操作步驟
通過快照方式恢複
登入目標Elasticsearch執行個體的Kibana控制台,根據頁面提示進入Kibana首頁。
登入Kibana控制台的具體操作,請參見登入Kibana控制台。
說明本文以Elasticsearch 7.10.0版本為例,其他版本操作可能略有差別,請以實際介面為準。
單擊右上方的Dev tools。
在Console頁簽中,執行以下命令,擷取倉庫中的快照資訊。
GET _cat/snapshots/aliyun_auto_snapshot?valiyun_auto_snapshot:快照儲存的倉庫名稱。如果您是通過Elasticsearch的自動快照備份功能定期對叢集資料進行快照備份的,則快照儲存的倉庫名稱為固定的aliyun_auto_snapshot。如果您使用的是手動備份,需要將aliyun_auto_snapshot替換為您的業務倉庫名稱。
執行成功後,系統會返回倉庫中所有快照的詳細資料,例如快照id、status等。
說明請記錄Kibana異常前最新快照的id,以備後用。
GET _cat/snapshots/aliyun_auto_snapshot?v id status start_epoch start_time end_epoch end_time duration indices successful_shards failed_shards total_shards 1 es-cn-m7r23wodb0xxx 20220303020235 SUCCESS 1646244156 18:02:36 1646244168 18:02:48 12.6s 47 66 0 66 2 es-cn-m7r23wodb0xxx 20220304020204 SUCCESS 1646330525 18:02:05 1646330541 18:02:21 16.2s 47 66 0 66 3 es-cn-m7r23wodb0xxx 20220305020209 SUCCESS 1646416929 18:02:09 1646416946 18:02:26 17s 47 66 0 66 4 es-cn-m7r23wodb0xxx 20220306020206 SUCCESS 1646503327 18:02:07 1646503346 18:02:26 18.8s 47 66 0 66 5 es-cn-m7r23wodb0xxx 20220307020200 SUCCESS 1646589721 18:02:01 1646589743 18:02:23 21.8s 47 66 0 66 6 es-cn-m7r23wodb0xxx 20220308020218 SUCCESS 1646676142 18:02:22 1646676155 18:02:35 13s 47 66 0 66 7 es-cn-m7r23wodb0xxx 20220309020211 SUCCESS 1646762532 18:02:12 1646762539 18:02:19 7s 47 66 0 66 8 es-cn-m7r23wodb0xxx 20220310020210 SUCCESS 1646848931 18:02:11 1646848946 18:02:26 14.6s 47 66 0 66 9 es-cn-m7r23wodb0xxx 20220311020208 SUCCESS 1646935329 18:02:09 1646935342 18:02:22 13.8s 47 66 0 66 10 es-cn-m7r23wodb0xxx 20220312020212 SUCCESS 1647021733 18:02:13 1647021749 18:02:29 16s 47 66 0 66快照恢複前,擷取備份的快照資訊,查看叢集中是否存在.kibana_1相關的索引。
GET _snapshot/aliyun_auto_snapshot/<yourSnapshotId><yourSnapshotId>:Kibana異常前最新快照的id,填寫在步驟3中擷取的id。例如es-cn-m7r23wodb006n****_20220303020235。
執行成功後,預期結果如下。只有返回結果中存在.kibana_1相關的索引,您才可以繼續執行下文步驟恢複快照。
在 Kibana Dev Tools 中執行命令,確認響應結果的
indices列表中包含 .kibana_1 索引,表明該快照可用於恢複 Kibana 資料。GET _cat/snapshots/aliyun_auto_snapshot?v GET _snapshot/aliyun_auto_snapshot/es-cn-m7r23wodbxxx_20220303020235{ "snapshots" : [ { "snapshot" : "es-cn-m7r23woxxx_20220303020235", "uuid" : "AiB8unLlT9aWPoxxx", "version_id" : 7100099, "version" : "7.10.0", "indices" : [ ".kibana-event-log-7.10.0-000009", ".kibana-event-log-7.10.0-000010", "zltest", ".watches", "my-index-000001", ".transform-internal-005", ".async-search", "chinese_news", ".watcher-history-12-2022.03.02", "kibana_sample_data_logs", "zltest14", ".transform-notifications-000002", "zltest17", ".kibana_1", ".security-7", ".kibana-event-log-7.10.0-000012", "zltest16", "ilm-history-3-000010", ".triggered_watches", ".watcher-history-12-2022.02.25", "dest", "my-index-12345e", ".watcher-history-12-2022.02.24", "metrics-endpoint.metadata_current_default", ... ] } ] }將.kibana_1索引的狀態設定為close。
重要如果將.kibana_1索引的狀態設定為close之後,重啟Kibana導致無法登入,需要通過curl命令恢複.kibana_1索引,具體操作請參見常見問題。
POST /.kibana_1/_close執行成功後,預期結果如下。
{ "acknowledged" : true, "shards_acknowledged" : true, "indices" : { ".kibana_1" : { "closed" : true } } }執行快照恢複命令,恢複.kibana_1索引。
POST _snapshot/aliyun_auto_snapshot/<yourSnapshotId>/_restore { "indices": ".kibana_1", "rename_pattern": ".kibana_1", "rename_replacement": ".kibana_1" }參數
說明
<yourSnapshotId>
自動備份的快照id,填寫在步驟3中擷取的id。
indices
需要恢複的索引名稱。
rename_pattern
可選,正則匹配需要恢複的索引名稱。
rename_replacement
可選,為匹配上的索引按規則重新命名。
執行成功後,預期返回
"accepted" : true。重要如果您使用的是非7.10版本的執行個體,在執行快照恢複命令恢複.kibana_1索引時,遇到類似
index_closed_exception index=".kibana_1"的報錯,可參見常見問題進行處理。查看快照恢複結果。
執行以下步驟,查看Kibana相關的Index Patterns是否恢複。如果恢複,說明快照恢複成功。
在Kibana控制台的左上方,單擊
。在展開的左側導覽列中,選擇。
在Kibana地區,單擊Index Patterns。
在Index patterns頁面,單擊以kibana_開頭的索引模式,查看資料是否已恢複。
在 Kibana 的 Index patterns 頁面中,確認以下三個樣本資料索引模式已恢複成功:
kibana_sample_data_ecommerce、kibana_sample_data_flights、kibana_sample_data_logs。
通過reindex方式恢複
在快照恢複前,擷取備份的快照資訊,並查看叢集中是否存在.kibana_1相關的索引。
具體操作,請參見通過快照方式恢複中的步驟1~步驟4。
說明只有叢集中存在.kibana_1相關的索引,您才可以繼續執行下文步驟恢複快照。
執行快照恢複命令,將快照中的.kibana_1索引恢複到備份索引中(本文樣本為kibana123)。
POST _snapshot/aliyun_auto_snapshot/<yourSnapshotId>/_restore { "indices": ".kibana_1", "rename_pattern": ".kibana_1", "rename_replacement": "kibana123" }參數
說明
<yourSnapshotId>
自動備份的快照id,填寫在步驟1中擷取的id。
indices
需要恢複的索引名稱。
rename_pattern
可選,正則匹配需要恢複的索引名稱。
rename_replacement
備份索引名稱。
執行成功後,預期返回
"accepted" : true。執行reindex命令,將備份索引資料寫入到當前.kibana_1索引中。
POST _reindex { "source": { "index": "kibana123" }, "dest": { "index": ".kibana_1" } }執行成功後,預期結果如下。
{ "took" : 731, "timed_out" : false, "total" : 33, "updated" : 33, "created" : 0, "deleted" : 0, "batches" : 1, "version_conflicts" : 0, "noops" : 0, "retries" : { "bulk" : 0, "search" : 0 }, "throttled_millis" : 0, "requests_per_second" : -1.0, "throttled_until_millis" : 0, "failures" : [ ] }刪除備份索引(本文樣本為kibana123)。
DELETE kibana123執行成功後,預期返回
"accepted" : true。查看快照恢複結果。
查看Kibana相關的Index Patterns是否恢複。如果恢複,說明快照恢複成功。具體操作,請參見通過快照方式恢複章節的步驟7。