GitHub 项目 elastic/beats-dashboards 包含一个 Python script 用于转储 Kibana 定义(到 JSON,每个定义一个文件),以及一个 shell script 用于将这些导出的定义加载到 Elasticsearch 实例中。
Python 脚本转储了所有 Kibana 定义,就我而言,这超出了我的预期。
我只想分发一些定义:具体来说,一些仪表板(及其可视化和搜索)的定义,而不是我的 Elasticsearch 实例上的所有仪表板。
我考虑了各种选项,包括编写脚本以获取特定的仪表板定义,然后解析该定义,并获取引用的可视化和搜索定义,但现在,我采用了以下解决方案(不优雅但实用) .
在 Kibana 中,我编辑了每个定义,并在描述字段中插入了一个字符串,该字符串将定义标识为我要导出的定义。例如,"#exportme"。
在转储定义的 Python 脚本(来自 beats-dashboards)中,我在搜索函数调用中引入了一个查询参数,将其限制为具有该标识字符串的定义。例如:
res = es.search(
index='.kibana',
doc_type=doc_type,
size=1000,
q='description:"#exportme"')
(实际上,与其硬编码“主题标签”,不如通过命令行参数指定它。)
我特别喜欢 elastic/beats-dashboards 提供的 dump'n'load 脚本的一个方面是它们的粒度:每个定义一个 JSON 文件。我发现这对版本控制很有用。