当您的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?v
aliyun_auto_snapshot:快照存储的仓库名称。如果您是通过阿里云Elasticsearch的自动快照备份功能定期对集群数据进行快照备份的,则快照存储的仓库名称为固定的aliyun_auto_snapshot。如果您使用的是手动备份,需要将aliyun_auto_snapshot替换为您的业务仓库名称。
执行成功后,系统会返回仓库中所有快照的详细信息,例如快照
id、
status等。
说明 请记录Kibana异常前最新快照的id,以备后用。
- 快照恢复前,获取备份的快照信息,查看集群中是否存在.kibana_1相关的索引。
GET _snapshot/aliyun_auto_snapshot/<yourSnapshotId>
<yourSnapshotId>:Kibana异常前最新快照的id,填写在步骤3中获取的id。例如es-cn-m7r23wodb006n****_20220303020235。
执行成功后,预期结果如下。只有返回结果中存在
.kibana_1相关的索引,您才可以继续执行下文步骤恢复快照。
- 将.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_开头的索引模式,查看数据是否已恢复。
通过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。