ecb*_*die 26 elasticsearch kibana
我知道保存的Kibana仪表板(即仪表板的JSON文件)保存在与特定ElasticSearch实例关联的OR中.如果我在连接到托管ElasticSearch的一台服务器时保存我的Kibana实例,并且我将我的ElasticSearch服务器切换到另一个地址,我将丢失我保存的仪表板.但是,如果我要切换回原始服务器地址,我将恢复保存的仪表板.
因此,我的问题是elasticsearch安装目录中保存的仪表板的确切位置.我宁愿能够运行脚本来自动加载我预先创建的Kibana仪表板,而不是每次启动新的ElasticSearch实例时都强制通过Web控制台复制/粘贴JSON.
感谢您的帮助.
根据此Google网上论坛帖子,仪表板会保存到kibana-int
_index中,其中包含_type dashboard
和_id.因此,要将我的仪表板保存到新的ElasticSearch实例中,我是否只需要通过CURL对此_index执行PUT?有一个更好的方法吗?
Pig*_*ras 20
是的,Kibana仪表板正在kibana-int
索引下保存在Elasticsearch中(默认情况下,您可以覆盖config.js
文件中的那个).如果要将Kibana仪表板移动到另一个ES群集,您有两种选择:
编辑:对于第二个选项,您可以使用Python elasticsearch库及其助手reindex
,如果你觉得与Python更舒适:https://elasticsearch-py.readthedocs.org/en/latest/helpers.html#elasticsearch.helpers.重新索引
小智 6
其实非常简单,复制两个文件夹:
1) .\elasticsearch\data\nodes\0\indices\.kibana
2) .\elasticsearch\data\nodes\0\indices\kibana-int
Run Code Online (Sandbox Code Playgroud)
粘贴在新的弹性搜索中.
这是一个独立的Python脚本,可以将Kibana仪表板从elasticsearch主机复制到另一个主机。
#!/bin/env python
"""Migrate all the kibana dashboard from SOURCE_HOST to DEST_HOST.
This script may be run repeatedly, but any dashboard changes on
DEST_HOST will be overwritten if so.
"""
import urllib2, urllib, json
SOURCE_HOST = "your-old-es-host"
DEST_HOST = "your-new-es-host"
def http_post(url, data):
request = urllib2.Request(url, data)
return urllib2.urlopen(request).read()
def http_put(url, data):
opener = urllib2.build_opener(urllib2.HTTPHandler)
request = urllib2.Request(url, data)
request.get_method = lambda: 'PUT'
return opener.open(request).read()
if __name__ == '__main__':
old_dashboards_url = "http://%s:9200/kibana-int/_search" % SOURCE_HOST
# All the dashboards (assuming we have less than 9999) from
# kibana, ignoring those with _type: temp.
old_dashboards_query = """{
size: 9999,
query: { filtered: { filter: { type: { value: "dashboard" } } } } }
}"""
old_dashboards_results = json.loads(http_post(old_dashboards_url, old_dashboards_query))
old_dashboards_raw = old_dashboards_results['hits']['hits']
old_dashboards = {}
for doc in old_dashboards_raw:
old_dashboards[doc['_id']] = doc['_source']
for id, dashboard in old_dashboards.iteritems():
put_url = "http://%s:9200/kibana-int/dashboard/%s" % (DEST_HOST, urllib.quote(id))
print http_put(put_url, json.dumps(dashboard))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
41372 次 |
最近记录: |