Как импортировать панель управления Kibana с помощью файла docker-compose? - PullRequest
0 голосов
/ 08 сентября 2018

Я экспортировал панель мониторинга Kibana с помощью команды cURL:

curl -XGET localhost:5601/api/kibana/dashboards/export?dashboard=[uuid] > my-dashboards.json

Теперь я хочу импортировать эту панель мониторинга, используя docker-compose, но получаю эту ошибку:

test.kibana           | Warning: Couldn't read data from file "my-dashboards.json", this makes an 
test.kibana           | Warning: empty POST.
test.kibana           |   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
test.kibana           |                                  Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (7) Failed connect to 0.0.0.0:5601; Connection refused

Это докерсоставить файл:

version: '2'
services:
  elasticsearch-docker:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.6.3
    container_name: test.elastic
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
  kibana:
    image: docker.elastic.co/kibana/kibana:5.6.3
    container_name: test.kibana
    command: curl -XPOST test.elastic:5601/api/kibana/dashboards/import -H 'kbn-xsrf:true' -H 'Content-type:application/json' -d @my-dashboards.json
    ports:
      - 5601:5601
    depends_on: 
      - elasticsearch-docker
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
      - ./my-dashboards.json:/usr/share/kibana/config/my-dashboards.json

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

После запуска Elasticsearch и Kibana выполните эту команду curl с хоста в каталоге, в котором находится дамп JSON.

Программно сказать, что оба запустились, на удивление сложно. В принципе, вы можете сделать что-то подобное, написав скрипт ENTRYPOINT, который выполняет первоначальную настройку перед запуском фактической службы, но это проще, если конфигурация находится в файловой системе (IIRC Kibana на самом деле хранит такие данные в ES). Если вы прочтете способ, скажем, что официальный образ mysql делает это, он включает в себя запуск службы, ожидание его фактического запуска, инициализацию, а затем остановку еще раз до exec "$@" в конец.

Вы не можете сделать все через Docker Compose, и если ваша первоначальная настройка зависит как от локального файла хоста, так и от фактически работающей службы, вероятно, проще не пытаться подковать это в.

0 голосов
/ 08 сентября 2018

Выполняемая команда curl не может найти my-dashboards.json в рабочем каталоге контейнера. Вы можете перейти к пути /usr/share/kibana/config, установив свойство working_dir внутри файла композиции следующим образом:

 ...
 kibana:
    image: docker.elastic.co/kibana/kibana:5.6.3
    container_name: test.kibana
    working_dir: /usr/share/kibana/config
 ...
...