elasticsearch ElasticSearch中自定义Kibana仪表板的位置,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch ElasticSearch中自定义Kibana仪表板的位置,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch ElasticSearch中自定义Kibana仪表板的位置

elasticsearch ElasticSearch中自定义Kibana仪表板的位置,elasticsearch,kibana,elasticsearch,Kibana,我知道,保存的Kibana仪表板(即仪表板的JSON文件)保存在特定的ElasticSearch实例中或与之关联。如果我在连接到一个承载ElasticSearch的服务器时保存我的Kibana实例,并将我的ElasticSearch服务器切换到另一个地址,我将丢失保存的仪表板。但是,如果我要切换回原始服务器地址,我将恢复保存的仪表板 因此,我的问题是,仪表盘在elasticsearch安装目录中的确切位置。我宁愿能够运行一个脚本来自动加载我预先创建的Kibana仪表盘,而不是每次启动新的Elas

我知道,保存的Kibana仪表板(即仪表板的JSON文件)保存在特定的ElasticSearch实例中或与之关联。如果我在连接到一个承载ElasticSearch的服务器时保存我的Kibana实例,并将我的ElasticSearch服务器切换到另一个地址,我将丢失保存的仪表板。但是,如果我要切换回原始服务器地址,我将恢复保存的仪表板

因此,我的问题是,仪表盘在elasticsearch安装目录中的确切位置。我宁愿能够运行一个脚本来自动加载我预先创建的Kibana仪表盘,而不是每次启动新的ElasticSearch实例时都被迫通过web控制台复制/粘贴JSON

谢谢你的帮助

更新
据此,仪表盘被保存到
kibana int
\索引中,其类型为
dashboard
,id为我命名的。所以,为了将我的仪表盘保存到新的ElasticSearch实例中,我是否只需要通过CURL执行一个PUT-into-this _索引?有更好的方法吗?

是的,Kibana仪表盘保存在Elasticsearch中的
Kibana int
索引下(默认情况下,您可以在
config.js
文件中覆盖)。如果要将Kibana仪表盘移动到另一个ES群集,有两个选项:

  • 手动导出仪表板。单击保存->高级->导出模式。您必须保存文件,然后在新的Kibana中,您必须导入单击“过载->高级->选择文件”并选择已选择的文件。这是一种痛苦,因为您必须对要迁移的每个仪表板执行此操作
  • 可以使用实用程序将ES索引从一个ES群集迁移到另一个ES群集。已经有一些实用程序可以执行此操作。在SO中搜索,我发现建议您使用(Perl:S)来完成这项工作。可能还有更多类似的实用程序,但我不认为编写一个脚本将索引迁移到另一个集群是一项如此困难的任务

  • 编辑:对于第二个选项,您可以使用python elasticsearch库及其助手
    reindex
    ,如果您觉得与python更为兼容:

    在elasticsearch的1.0.0+版本中,快照和还原API已提供:


    这使您能够快速备份(快照)和恢复任何给定集群上的每个或任何索引。因此,您可能需要考虑升级到该版本,因为这将为您提供一个简单的API调用,以获取“kibana int”索引的快照,并将该索引恢复到任何其他集群。

    这里有一个独立的Python脚本,可以将kibana仪表盘从elasticsearch主机复制到另一个主机

    #/bin/env python
    “”“将所有kibana仪表板从源主机迁移到目标主机。”。
    此脚本可能会重复运行,但上的任何仪表板都会发生更改
    如果是,DEST_主机将被覆盖。
    """
    导入urllib2、urllib、json
    SOURCE\u HOST=“您的旧es主机”
    DEST_HOST=“您的新es主机”
    def http_post(url、数据):
    request=urllib2.request(url,数据)
    返回urlib2.urlopen(request.read())
    def http_put(url、数据):
    opener=urlib2.build\u opener(urlib2.HTTPHandler)
    request=urllib2.request(url,数据)
    request.get_method=lambda:'PUT'
    返回opener.open(请求).read()
    如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
    旧的仪表盘\u url=“http://%s:9200/kibana int/\u搜索”%SOURCE\u主机
    #来自的所有仪表盘(假设少于9999)
    #kibana,忽略那些类型为temp的。
    旧的仪表盘\u查询=“”{
    尺码:9999,
    查询:{筛选:{筛选:{类型:{值:“仪表板”}}
    }"""
    old_dashboards_results=json.loads(http_post(old_dashboards_url,old_dashboards_query))
    old_dashboards_raw=old_dashboards_结果['hits']['hits']
    旧仪表盘={}
    对于旧仪表板中的文档:
    旧仪表盘[doc[''u id']=doc[''u source']
    对于id,旧仪表板中的仪表板。iteritems():
    put_url=“http://%s:9200/kibana int/dashboard/%s”%(DEST_HOST,urllib.quote(id))
    打印http_put(put_url,json.dumps(仪表板))
    
    对于kibana 4,我在config/kibana.yml文件中找到了默认索引值,它是“.kibana”

    以下是kibana配置文件中的一行

    kibana_索引:“.kibana”

    这是向我显示所需结果的查询


    curl-XGEThttp://localhost:9200/.kibana/_search?type=dashboard&pretty=1

    正如其他人所说,您可以在elasticsearch中找到Kibana保存在.Kibana索引中的所有对象


    Kibana4的最新版本包括一个导出和导入功能,可以很容易地将对象从一个安装移动到另一个安装。您可以通过单击“设置”和“对象”选项卡来找到此功能。

    一个独立的Ruby脚本,可以将单个仪表板、其可视化效果及其存储的搜索从一个集群复制到另一个集群。它太大了一点,不能粘贴到这个盒子里。

    事实上,很容易, 复制两个文件夹:

    1) .\elasticsearch\data\nodes\0\indices\.kibana 
    2) .\elasticsearch\data\nodes\0\indices\kibana-int
    

    粘贴新的elasticsearch。

    在kibana 4中,它似乎存储在索引
    下。kibana
    此脚本帮助我开始了解kibana对象如何存储在ES中,但除了复制仪表板文档外,还需要复制可视化和保存的搜索,如果有的话。如果我们能用Kibana4和Kibana5更新这个脚本,那就太好了