Skip to content

Elasticsearch and Kibana configuration example

About Elasticsearch

Elasticsearch is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data for lightning fast search, fine‑tuned relevancy, and powerful analytics that scale with ease.

About Kibana

Kibana is a free and open user interface that lets you visualize your Elasticsearch data and navigate the Elastic Stack. Do anything from tracking query load to understanding the way requests flow through your apps.

More information about Elasticsearch & Kibana

How to add Elasticsearch to Qlico?

Add the following YAML to the services section of your docker-compose.yaml file.

  elasticsearch8:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.3.2
    container_name: qlico-core_elasticsearch8
    logging:
      driver: none
    ports:
      - 9208:9200
    volumes:
      - elasticsearch8-data/:/usr/share/elasticsearch/data
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    ulimits:
      memlock:
        soft: -1
        hard: -1
    labels:
      - "traefik.http.routers.elasticsearch8.rule=Host(`elasticsearch8.qlico`)"
      - "traefik.http.services.elasticsearch8.loadbalancer.server.port=9200"
    networks:
      - qlico-core

Add the following YAML to the volumes section of your docker-compose.yaml file.

  elasticsearch8-data:
    name: qlico-core_elasticsearch8-data
    driver: local

How to add Kibana to Qlico?

Add the following YAML to the services section of your docker-compose.yaml file. Make sure you're running Elasticsearch!

  kibana8:
    image: docker.elastic.co/kibana/kibana:8.3.2
    container_name: qlico-core_kibana8
    logging:
      driver: none
    links:
      - elasticsearch8
    environment:
      ELASTICSEARCH_URL: http://elasticsearch8:9200
      ELASTICSEARCH_HOSTS: '["http://elasticsearch8:9200"]'
    labels:
      - "traefik.http.routers.kibana8.rule=Host(`kibana8.qlico`)"
      - "traefik.http.services.kibana8.loadbalancer.server.port=5601"
    networks:
      - qlico-core

Example in a full docker-compose file

This is a large example, so you know where to place the Elasticsearch & Kibana service and volume.

---
# Author: Qlico <hello@qlico.dev>
version: "3.9"
services:
  traefik:
    image: traefik:v2.8
    container_name: qlico-core_traefik
    command: [ '--providers.docker', '--api.insecure' ]
    networks:
      - qlico-core
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    labels:
      - "traefik.http.routers.traefik.rule=Host(`traefik.qlico`)"
      - "traefik.http.services.traefik.loadbalancer.server.port=8080"
  elasticsearch8:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.3.2
    container_name: qlico-core_elasticsearch8
    logging:
      driver: none
    ports:
      - 9208:9200
    volumes:
      - elasticsearch8-data/:/usr/share/elasticsearch/data
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    ulimits:
      memlock:
        soft: -1
        hard: -1
    labels:
      - "traefik.http.routers.elasticsearch8.rule=Host(`elasticsearch8.qlico`)"
      - "traefik.http.services.elasticsearch8.loadbalancer.server.port=9200"
    networks:
      - qlico-core
  kibana8:
    image: docker.elastic.co/kibana/kibana:8.3.2
    container_name: qlico-core_kibana8
    logging:
      driver: none
    links:
      - elasticsearch8
    environment:
      ELASTICSEARCH_URL: http://elasticsearch8:9200
      ELASTICSEARCH_HOSTS: '["http://elasticsearch8:9200"]'
    labels:
      - "traefik.http.routers.kibana8.rule=Host(`kibana8.qlico`)"
      - "traefik.http.services.kibana8.loadbalancer.server.port=5601"
    networks:
      - qlico-core
volumes:
  elasticsearch8-data:
    name: qlico-core_elasticsearch8-data
    driver: local
networks:
  qlico-core:
    driver: bridge
    name: qlico-core