From 6ce25e00c9598ffbc9cc6a8d9fd943797856cd20 Mon Sep 17 00:00:00 2001 From: AlfonsoRBJ Date: Thu, 21 Mar 2019 16:13:53 +0100 Subject: [PATCH 01/10] merge run.sh in new entrypoint.sh --- logstash/config/{run.sh => entrypoint.sh} | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) rename logstash/config/{run.sh => entrypoint.sh} (55%) diff --git a/logstash/config/run.sh b/logstash/config/entrypoint.sh similarity index 55% rename from logstash/config/run.sh rename to logstash/config/entrypoint.sh index 0ccb2eee..a523ec8f 100644 --- a/logstash/config/run.sh +++ b/logstash/config/entrypoint.sh @@ -1,10 +1,12 @@ -#!/bin/bash +#!/bin/bash -e # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) # # OSSEC container bootstrap. See the README for information of the environment # variables expected by this script. # + + ############################################################################## # Customize logstash output ip ############################################################################## @@ -13,4 +15,17 @@ if [ "$LOGSTASH_OUTPUT" != "" ]; then sed -i "s/elasticsearch:9200/$LOGSTASH_OUTPUT:9200/" /usr/share/logstash/config/logstash.yml fi -/usr/local/bin/docker-entrypoint +# Map environment variables to entries in logstash.yml. +# Note that this will mutate logstash.yml in place if any such settings are found. +# This may be undesirable, especially if logstash.yml is bind-mounted from the +# host system. + +env2yaml /usr/share/logstash/config/logstash.yml + +export LS_JAVA_OPTS="-Dls.cgroup.cpuacct.path.override=/ -Dls.cgroup.cpu.path.override=/ $LS_JAVA_OPTS" + +if [[ -z $1 ]] || [[ ${1:0:1} == '-' ]] ; then + exec logstash "$@" +else + exec "$@" +fi From 3fdba44bfad4c64e24dfb927fb1c78f8e938ded0 Mon Sep 17 00:00:00 2001 From: AlfonsoRBJ Date: Thu, 21 Mar 2019 16:29:48 +0100 Subject: [PATCH 02/10] cond. race for logstash and improve it for kibana --- kibana/config/entrypoint.sh | 6 ++++-- logstash/Dockerfile | 2 +- logstash/config/entrypoint.sh | 24 +++++++++++++++++++++++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/kibana/config/entrypoint.sh b/kibana/config/entrypoint.sh index c38bb1d7..1ba0a44d 100644 --- a/kibana/config/entrypoint.sh +++ b/kibana/config/entrypoint.sh @@ -10,11 +10,13 @@ else fi until curl -XGET $el_url; do - >&2 echo "Elastic is unavailable - sleeping" + >&2 echo "Elastic is unavailable - sleeping." sleep 5 done ->&2 echo "Elastic is up - executing command" +sleep 10 + +>&2 echo "Elasticsearch is up." ./wazuh_app_config.sh diff --git a/logstash/Dockerfile b/logstash/Dockerfile index 00322375..b53d0806 100644 --- a/logstash/Dockerfile +++ b/logstash/Dockerfile @@ -9,4 +9,4 @@ USER root COPY config/run.sh /run.sh RUN chmod +x /run.sh -ENTRYPOINT ["/run.sh"] +ENTRYPOINT /entrypoint.sh diff --git a/logstash/config/entrypoint.sh b/logstash/config/entrypoint.sh index a523ec8f..4eef7fa7 100644 --- a/logstash/config/entrypoint.sh +++ b/logstash/config/entrypoint.sh @@ -1,24 +1,46 @@ -#!/bin/bash -e +#!/bin/bash # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) # # OSSEC container bootstrap. See the README for information of the environment # variables expected by this script. # +set -e +############################################################################## +# Waiting for elasticsearch +############################################################################## + +if [ "x${ELASTICSEARCH_URL}" = "x" ]; then + el_url="http://elasticsearch:9200" +else + el_url="${ELASTICSEARCH_URL}" +fi + +until curl -XGET $el_url; do + >&2 echo "Elastic is unavailable - sleeping." + sleep 5 +done + +sleep 10 + +>&2 echo "Elasticsearch is up." ############################################################################## # Customize logstash output ip ############################################################################## if [ "$LOGSTASH_OUTPUT" != "" ]; then + echo "Customize Logstash ouput ip." sed -i "s/elasticsearch:9200/$LOGSTASH_OUTPUT:9200/" /usr/share/logstash/pipeline/01-wazuh.conf sed -i "s/elasticsearch:9200/$LOGSTASH_OUTPUT:9200/" /usr/share/logstash/config/logstash.yml fi +############################################################################## # Map environment variables to entries in logstash.yml. # Note that this will mutate logstash.yml in place if any such settings are found. # This may be undesirable, especially if logstash.yml is bind-mounted from the # host system. +############################################################################## env2yaml /usr/share/logstash/config/logstash.yml From 580251104c231e9a65716cc635700c0aad52d14c Mon Sep 17 00:00:00 2001 From: AlfonsoRBJ Date: Thu, 21 Mar 2019 16:34:24 +0100 Subject: [PATCH 03/10] add entrypoint to Dockerfile --- logstash/Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/logstash/Dockerfile b/logstash/Dockerfile index b53d0806..3ad72068 100644 --- a/logstash/Dockerfile +++ b/logstash/Dockerfile @@ -1,6 +1,10 @@ # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) FROM docker.elastic.co/logstash/logstash:6.5.4 +COPY config/entrypoint.sh /entrypoint.sh + +RUN chmod 755 /entrypoint.sh + RUN rm -f /usr/share/logstash/pipeline/logstash.conf COPY config/01-wazuh.conf /usr/share/logstash/pipeline/01-wazuh.conf From 48e0c75a26794937d6f752d64a3e5cb6f8572e0e Mon Sep 17 00:00:00 2001 From: AlfonsoRBJ Date: Thu, 21 Mar 2019 16:56:22 +0100 Subject: [PATCH 04/10] remove run.sh execution --- logstash/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logstash/Dockerfile b/logstash/Dockerfile index 3ad72068..fea745a3 100644 --- a/logstash/Dockerfile +++ b/logstash/Dockerfile @@ -1,7 +1,7 @@ # Wazuh App Copyright (C) 2019 Wazuh Inc. (License GPLv2) FROM docker.elastic.co/logstash/logstash:6.5.4 -COPY config/entrypoint.sh /entrypoint.sh +COPY --chown=logstash:logstash config/entrypoint.sh /entrypoint.sh RUN chmod 755 /entrypoint.sh From 727858f74c4308579bd63f89711669941ecc5e56 Mon Sep 17 00:00:00 2001 From: AlfonsoRBJ Date: Thu, 21 Mar 2019 16:56:52 +0100 Subject: [PATCH 05/10] remove run.sh exe --- logstash/Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/logstash/Dockerfile b/logstash/Dockerfile index fea745a3..205937c9 100644 --- a/logstash/Dockerfile +++ b/logstash/Dockerfile @@ -9,8 +9,4 @@ RUN rm -f /usr/share/logstash/pipeline/logstash.conf COPY config/01-wazuh.conf /usr/share/logstash/pipeline/01-wazuh.conf -USER root -COPY config/run.sh /run.sh -RUN chmod +x /run.sh - ENTRYPOINT /entrypoint.sh From b3114e72935a07d2ee03b08a174e698dab7db08e Mon Sep 17 00:00:00 2001 From: AlfonsoRBJ Date: Thu, 21 Mar 2019 18:25:56 +0100 Subject: [PATCH 06/10] add race condition for wazuh alerts template --- kibana/config/entrypoint.sh | 21 +++++++++++++++++++++ logstash/config/entrypoint.sh | 19 ++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/kibana/config/entrypoint.sh b/kibana/config/entrypoint.sh index 1ba0a44d..fc4baf56 100644 --- a/kibana/config/entrypoint.sh +++ b/kibana/config/entrypoint.sh @@ -3,6 +3,10 @@ set -e +############################################################################## +# Waiting for elasticsearch +############################################################################## + if [ "x${ELASTICSEARCH_URL}" = "x" ]; then el_url="http://elasticsearch:9200" else @@ -19,6 +23,23 @@ sleep 10 >&2 echo "Elasticsearch is up." +############################################################################## +# Waiting for wazuh alerts template +############################################################################## + +strlen=0 + +while [[ $strlen -eq 0 ]] +do + template=$(curl $el_url:9200/_cat/templates/wazuh -s) + strlen=${#template} +done + +sleep 10 + +>&2 echo "Wazuh alerts template is load." + + ./wazuh_app_config.sh sleep 5 diff --git a/logstash/config/entrypoint.sh b/logstash/config/entrypoint.sh index 4eef7fa7..32c347ec 100644 --- a/logstash/config/entrypoint.sh +++ b/logstash/config/entrypoint.sh @@ -26,11 +26,28 @@ sleep 10 >&2 echo "Elasticsearch is up." +############################################################################## +# Waiting for wazuh alerts template +############################################################################## + +strlen=0 + +while [[ $strlen -eq 0 ]] +do + template=$(curl $el_url:9200/_cat/templates/wazuh -s) + strlen=${#template} +done + +sleep 10 + +>&2 echo "Wazuh alerts template is load." + ############################################################################## # Customize logstash output ip ############################################################################## + if [ "$LOGSTASH_OUTPUT" != "" ]; then - echo "Customize Logstash ouput ip." + >&2 echo "Customize Logstash ouput ip." sed -i "s/elasticsearch:9200/$LOGSTASH_OUTPUT:9200/" /usr/share/logstash/pipeline/01-wazuh.conf sed -i "s/elasticsearch:9200/$LOGSTASH_OUTPUT:9200/" /usr/share/logstash/config/logstash.yml fi From c6793657e71c08efd42af75c1bbf817bc1fd022e Mon Sep 17 00:00:00 2001 From: AlfonsoRBJ Date: Thu, 21 Mar 2019 18:38:28 +0100 Subject: [PATCH 07/10] improve template check --- kibana/config/entrypoint.sh | 3 ++- logstash/config/entrypoint.sh | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/kibana/config/entrypoint.sh b/kibana/config/entrypoint.sh index fc4baf56..e2d87ace 100644 --- a/kibana/config/entrypoint.sh +++ b/kibana/config/entrypoint.sh @@ -33,11 +33,12 @@ while [[ $strlen -eq 0 ]] do template=$(curl $el_url:9200/_cat/templates/wazuh -s) strlen=${#template} + >&2 echo "Wazuh alerts template not loaded - sleeping." done sleep 10 ->&2 echo "Wazuh alerts template is load." +>&2 echo "Wazuh alerts template is loaded." ./wazuh_app_config.sh diff --git a/logstash/config/entrypoint.sh b/logstash/config/entrypoint.sh index 32c347ec..e394a784 100644 --- a/logstash/config/entrypoint.sh +++ b/logstash/config/entrypoint.sh @@ -36,11 +36,12 @@ while [[ $strlen -eq 0 ]] do template=$(curl $el_url:9200/_cat/templates/wazuh -s) strlen=${#template} + >&2 echo "Wazuh alerts template not loaded - sleeping." done sleep 10 ->&2 echo "Wazuh alerts template is load." +>&2 echo "Wazuh alerts template is loaded." ############################################################################## # Customize logstash output ip From 283ca42d57a84df2b3d43a6bdd0b10fd59d0d6c9 Mon Sep 17 00:00:00 2001 From: AlfonsoRBJ Date: Thu, 21 Mar 2019 19:13:22 +0100 Subject: [PATCH 08/10] reduce sleep times after pass check --- kibana/config/entrypoint.sh | 5 +++-- logstash/config/entrypoint.sh | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/kibana/config/entrypoint.sh b/kibana/config/entrypoint.sh index e2d87ace..a87e0bfc 100644 --- a/kibana/config/entrypoint.sh +++ b/kibana/config/entrypoint.sh @@ -18,7 +18,7 @@ until curl -XGET $el_url; do sleep 5 done -sleep 10 +sleep 2 >&2 echo "Elasticsearch is up." @@ -34,9 +34,10 @@ do template=$(curl $el_url:9200/_cat/templates/wazuh -s) strlen=${#template} >&2 echo "Wazuh alerts template not loaded - sleeping." + sleep 2 done -sleep 10 +sleep 2 >&2 echo "Wazuh alerts template is loaded." diff --git a/logstash/config/entrypoint.sh b/logstash/config/entrypoint.sh index e394a784..f8b88116 100644 --- a/logstash/config/entrypoint.sh +++ b/logstash/config/entrypoint.sh @@ -22,7 +22,7 @@ until curl -XGET $el_url; do sleep 5 done -sleep 10 +sleep 2 >&2 echo "Elasticsearch is up." @@ -37,9 +37,10 @@ do template=$(curl $el_url:9200/_cat/templates/wazuh -s) strlen=${#template} >&2 echo "Wazuh alerts template not loaded - sleeping." + sleep 2 done -sleep 10 +sleep 2 >&2 echo "Wazuh alerts template is loaded." From 6a82a367119783d4c79b988076292d9c5c2f99cf Mon Sep 17 00:00:00 2001 From: AlfonsoRBJ Date: Thu, 21 Mar 2019 19:27:42 +0100 Subject: [PATCH 09/10] fix typo in elasticsearch url --- kibana/config/entrypoint.sh | 2 +- logstash/config/entrypoint.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kibana/config/entrypoint.sh b/kibana/config/entrypoint.sh index a87e0bfc..f7788d29 100644 --- a/kibana/config/entrypoint.sh +++ b/kibana/config/entrypoint.sh @@ -31,7 +31,7 @@ strlen=0 while [[ $strlen -eq 0 ]] do - template=$(curl $el_url:9200/_cat/templates/wazuh -s) + template=$(curl $el_url/_cat/templates/wazuh -s) strlen=${#template} >&2 echo "Wazuh alerts template not loaded - sleeping." sleep 2 diff --git a/logstash/config/entrypoint.sh b/logstash/config/entrypoint.sh index f8b88116..88c3d169 100644 --- a/logstash/config/entrypoint.sh +++ b/logstash/config/entrypoint.sh @@ -34,7 +34,7 @@ strlen=0 while [[ $strlen -eq 0 ]] do - template=$(curl $el_url:9200/_cat/templates/wazuh -s) + template=$(curl $el_url/_cat/templates/wazuh -s) strlen=${#template} >&2 echo "Wazuh alerts template not loaded - sleeping." sleep 2 From fdca63f5922c094fdeab918fa53f2e465b88637a Mon Sep 17 00:00:00 2001 From: AlfonsoRBJ Date: Thu, 21 Mar 2019 19:38:54 +0100 Subject: [PATCH 10/10] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd900438..9df3c64b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. - Adding the option to disable some xpack features. ([#111](https://github.com/wazuh/wazuh-docker/pull/111)) - Wazuh-Kibana customizable at plugin level. ([#117](https://github.com/wazuh/wazuh-docker/pull/117)) - Adding env variables for alerts data flow. ([#118](https://github.com/wazuh/wazuh-docker/pull/118)) +- New Logstash entrypoint added. ([#135](https://github.com/wazuh/wazuh-docker/pull/135/files)) ### Changed