elastic-docker icon indicating copy to clipboard operation
elastic-docker copied to clipboard

Development setups for Elasticsearch and Kibana with docker-compose

Docker & Elastic

This repository contains a few examples how to run Elasticsearch, Kibana, Beats, and Logstash in Docker using the official images and binding them to the default ports. Tested with the latest version of the Docker daemon.

You connect to Kibana on http://localhost:5601 and Elasticsearch on http://localhost:9200.

Elasticsearch & Kibana

  • Start: $ docker-compose up
  • Remove: $ docker-compose down -v

App Search

Change into the appsearch/ directory. This demo includes Elasticsearch, Kibana, and App Search.

  • Start: $ docker-compose up
  • Remove: $ docker-compose down -v

App Search is running at http://localhost:3002.

Elasticsearch Logs

Change into the elasticsearch_logs/ directory. This demo includes Elasticsearch, Kibana, and Filebeat to collect the Elasticsearch logs with the Elastic Stock. The blog post Filebeat Modules with Docker & Kubernetes is built on top of this setup.

  • Start: $ docker-compose up
  • Remove: $ docker-compose down -v

Full Stack

Change into the full_stack/ directory. This demo includes Elasticsearch, Kibana, Beats, Logstash, nginx, and MySQL and monitors all components with the Elastic Stack.

Note: You will need to increase the memory for all the containers to function correctly. Tested with 4GB instead of the default of 2GB.

  • Start: $ docker-compose up
  • Remove: $ docker-compose down -v

Rolling Upgrade

Change into the rolling_upgrade/ directory. This demo shows a rolling upgrade from 6.x to 7.x. See the details in the readme.

  • Start: $ docker-compose up
  • Remove: $ docker-compose down -v

Machine Learning

Change into the machine_learning/ directory. This demo includes Elasticsearch and Kibana as well as setting up the index patterns and dashboards for Filebeat. It assumes that you have a log.json file in the same directory, which will be imported automatically. Example entry:

{"source.name":"/home/ec2-user/data/production-3/prod3elasticlogs/_logs/access-logs228.log","beat":{"hostname":"ip-172-31-5-206","name":"ip-172-31-5-206","version":"5.4.0"},"@timestamp":"2017-02-28T17:14:26.963Z","read_timestamp":"2017-06-20T08:47:54.189Z","fileset":{"name":"access","module":"nginx"},"nginx":{"access":{"body_sent":{"bytes":"32898"},"url":"/static/img/wrapper-footer.png","geoip":{"continent_name":"North America","city_name":"Chicago","location":{"lat":42.0106,"lon":-87.6686},"region_name":"Illinois","country_iso_code":"US"},"response_code":"404","user_agent":{"device":"Other","os_name":"Other","os":"Other","name":"Other"},"http_version":"1.1","method":"GET","remote_ip":"213.222.148.205"}},"prospector":{"type":"log"}}

Note: You will need to increase the memory for all the containers to function correctly. Tested with 4GB instead of the default of 2GB.

  • Start: $ docker-compose up
  • Remove: $ docker-compose down -v