Kibana和Docker-Compose:自动加载保存的对象

目标 :在从Docker-Compose启动Elastic Stack时加载Kibana保存的对象。

我有一个来自Kibana的“export.json”对象,包含我的默认索引,10+可视化和仪表板设置。 我能够成功地从Docker-Compose启动Elastic Stack并手动加载对象,但是它不会在容器启动时自动加载它。

我需要find一种方法来以编程方式加载这个对象,因为我将有多个对象,可以部署取决于容器运行。 换句话说(使用伪configuration):

test1 container a # code to run container b # code send metrics test1_export.json # display metrics test2 container c # code to run container d # code send metrics test2_export.json # display metrics 

使用这些定义:

  > run test1 

将执行两个Docker-Compose文件,一个运行代码,另一个运行Elastic Stack。 后者也需要加载到export.json对象中。

我到目前为止所尝试的

这个方法从这个configuration文件逃避了:

Kibana在Elasticsearch中使用索引来存储保存的search,可视化和仪表板。 如果索引不存在,Kibana会创build一个新的索引。

也从这里 :

Kibana在Elasticsearch中保留所有的状态,特别是在.kibana索引中。 Kibana容器的本地文件系统不需要保存任何状态。

但是,每当我重新启动我的容器时,Kibana就会从头开始。

直接从这个Kibana用户指南,我试图存储容器内的kibana.ymlconfiguration文件。 但是,这个语法在开始时会打破Kibana。 这是两个文件:

kibana.yml

 kibana.index: ".kibana" 

泊坞窗,compose.yml

 version: '2' services: elasticsearch: container_name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:5.5.1 ports: - "9200:9200" expose: - 9200 restart: unless-stopped environment: - "transport.host=127.0.0.1" - "xpack.security.enabled=false" volumes: - "./elasticsearch/data/:/usr/share/elasticsearch/data" logstash: container_name: logstash build: ../../modules/logstash image: logstash:5.5.1 kibana: container_name: kibana image: docker.elastic.co/kibana/kibana:5.5.1 restart: unless-stopped ports: - "5601:5601" depends_on: - elasticsearch environment: - "ELASTICSEARCH_URL: http://elasticsearch:9200" expose: - 5601 volumes: - "./kibana.yml:/usr/share/kibana/config/kibana.yml" 

我的问题:

  • 我现在在做什么不正确(只保留Kibana)?
  • 如何使用Docker-Compose加载“export.json”文件? 理想情况下,我希望能够在Docker-Compose中将一个卷定义到Kibana查找对象的path。

我的环境是Linux / Centos7。

– > https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04

我会build议以本网站的ELK为指导。 我已经安装了这个网站,我非常满意。

这是Docker的一个常见问题。 一个解决scheme是短期容器,以一切方式configuration你想要的; 例如运行一个shell脚本。

看看Elastic的堆栈演示,他们正在使用这种方法 。

docker-compose.yml

  # Run a short-lived container to set up Logstash. setup_logstash: image: centos:7 volumes: ['./scripts/setup-logstash.sh:/usr/local/bin/setup-logstash.sh:ro'] # The script may have CR/LF line endings if using Docker for Windows, so # make sure that they don't confuse Bash. command: ['/bin/bash', '-c', 'cat /usr/local/bin/setup-logstash.sh | tr -d "\r" | bash'] environment: ['ELASTIC_PASSWORD=${ELASTIC_PASSWORD}'] networks: ['stack'] depends_on: ['elasticsearch'] 

setup-logstash.sh

 #!/bin/bash set -euo pipefail es_url=http://elastic:${ELASTIC_PASSWORD}@elasticsearch:9200 # Wait for Elasticsearch to start up before doing anything. until curl -s $es_url -o /dev/null; do sleep 1 done # Set the password for the logstash_system user. # REF: https://www.elastic.co/guide/en/x-pack/6.0/setting-up-authentication.html#set-built-in-user-passwords until curl -s -H 'Content-Type:application/json' \ -XPUT $es_url/_xpack/security/user/logstash_system/_password \ -d "{\"password\": \"${ELASTIC_PASSWORD}\"}" do sleep 2 echo Retrying... done 

运行你需要的任何cURL命令来configurationKibana。