当您的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。