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。
我会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。