diff --git a/.env b/.env new file mode 100644 index 0000000..40a76c5 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +ELK_VERSION=5.6.3 diff --git a/README.md b/README.md index 0e80f28..0233e27 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,8 @@ Based on the official Docker images: 6. [JVM tuning](#jvm-tuning) * [How can I specify the amount of memory used by a service?](#how-can-i-specify-the-amount-of-memory-used-by-a-service) * [How can I enable a remote JMX connection to a service?](#how-can-i-enable-a-remote-jmx-connection-to-a-service) +7. [Updates](#updates) + * [Using a newer stack version](#using-a-newer-stack-version) ## Requirements @@ -57,7 +59,7 @@ On distributions which have SELinux enabled out-of-the-box you will need to eith into Permissive mode in order for docker-elk to start properly. For example on Redhat and CentOS, the following will apply the proper context: -```bash +```console $ chcon -R system_u:object_r:admin_home_t:s0 docker-elk/ ``` @@ -67,13 +69,13 @@ $ chcon -R system_u:object_r:admin_home_t:s0 docker-elk/ Start the ELK stack using `docker-compose`: -```bash +```console $ docker-compose up ``` You can also choose to run it in background (detached mode): -```bash +```console $ docker-compose up -d ``` @@ -94,7 +96,7 @@ By default, the stack exposes the following ports: Now that the stack is running, you will want to inject some log entries. The shipped Logstash configuration allows you to send content via TCP: -```bash +```console $ nc localhost 5000 < /path/to/logfile.log ``` @@ -117,7 +119,7 @@ about the index pattern configuration. Run this command to create a Logstash index pattern: -```bash +```console $ curl -XPUT -D- 'http://localhost:9200/.kibana/index-pattern/logstash-*' \ -H 'Content-Type: application/json' \ -d '{"title" : "logstash-*", "timeFieldName": "@timestamp", "notExpandable": true}' @@ -125,8 +127,8 @@ $ curl -XPUT -D- 'http://localhost:9200/.kibana/index-pattern/logstash-*' \ This command will mark the Logstash index pattern as the default index pattern: -```bash -$ curl -XPUT -D- 'http://localhost:9200/.kibana/config/5.6.2' \ +```console +$ curl -XPUT -D- 'http://localhost:9200/.kibana/config/5.6.3' \ -H 'Content-Type: application/json' \ -d '{"defaultIndex": "logstash-*"}' ``` @@ -259,3 +261,18 @@ logstash: environment: LS_JAVA_OPTS: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=18080 -Dcom.sun.management.jmxremote.rmi.port=18080 -Djava.rmi.server.hostname=DOCKER_HOST_IP -Dcom.sun.management.jmxremote.local.only=false" ``` + +## Updates + +### Using a newer stack version + +To use a different Elastic Stack version than the one currently available in the repository, simply change the version +number inside the `.env` file, and rebuild the stack with: + +```console +$ docker-compose build +$ docker-compose up +``` + +**NOTE**: Always pay attention to the [upgrade instructions](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) +for each individual component before performing a stack upgrade. diff --git a/docker-compose.yml b/docker-compose.yml index 2cd71fd..c923261 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,10 @@ version: '2' services: elasticsearch: - build: elasticsearch/ + build: + context: elasticsearch/ + args: + ELK_VERSION: $ELK_VERSION volumes: - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml ports: @@ -15,7 +18,10 @@ services: - elk logstash: - build: logstash/ + build: + context: logstash/ + args: + ELK_VERSION: $ELK_VERSION volumes: - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml - ./logstash/pipeline:/usr/share/logstash/pipeline @@ -29,7 +35,10 @@ services: - elasticsearch kibana: - build: kibana/ + build: + context: kibana/ + args: + ELK_VERSION: $ELK_VERSION volumes: - ./kibana/config/:/usr/share/kibana/config ports: diff --git a/elasticsearch/Dockerfile b/elasticsearch/Dockerfile index 9ac95bc..24278f8 100644 --- a/elasticsearch/Dockerfile +++ b/elasticsearch/Dockerfile @@ -1,5 +1,7 @@ +ARG ELK_VERSION + # https://github.com/elastic/elasticsearch-docker -FROM docker.elastic.co/elasticsearch/elasticsearch:5.6.3 +FROM docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION} # Add your elasticsearch plugins setup here # Example: RUN elasticsearch-plugin install analysis-icu diff --git a/kibana/Dockerfile b/kibana/Dockerfile index e855104..202855c 100644 --- a/kibana/Dockerfile +++ b/kibana/Dockerfile @@ -1,5 +1,7 @@ +ARG ELK_VERSION + # https://github.com/elastic/kibana-docker -FROM docker.elastic.co/kibana/kibana:5.6.3 +FROM docker.elastic.co/kibana/kibana:${ELK_VERSION} # Add your kibana plugins setup here # Example: RUN kibana-plugin install diff --git a/logstash/Dockerfile b/logstash/Dockerfile index d004b75..6cc8637 100644 --- a/logstash/Dockerfile +++ b/logstash/Dockerfile @@ -1,5 +1,7 @@ +ARG ELK_VERSION + # https://github.com/elastic/logstash-docker -FROM docker.elastic.co/logstash/logstash:5.6.3 +FROM docker.elastic.co/logstash/logstash:${ELK_VERSION} # Add your logstash plugins setup here # Example: RUN logstash-plugin install logstash-filter-json