You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@senssoft.apache.org by po...@apache.org on 2019/01/16 04:36:41 UTC

incubator-senssoft git commit: [PATCH]SENSSOFT-325: Upgraded ELK+Beats to v 6.5.4--resolves security vulnerabilities

Repository: incubator-senssoft
Updated Branches:
  refs/heads/SENSSOFT-325 [created] c6cedd59d


[PATCH]SENSSOFT-325: Upgraded ELK+Beats to v 6.5.4--resolves security vulnerabilities


Project: http://git-wip-us.apache.org/repos/asf/incubator-senssoft/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-senssoft/commit/c6cedd59
Tree: http://git-wip-us.apache.org/repos/asf/incubator-senssoft/tree/c6cedd59
Diff: http://git-wip-us.apache.org/repos/asf/incubator-senssoft/diff/c6cedd59

Branch: refs/heads/SENSSOFT-325
Commit: c6cedd59d08abd79f4013bde8eb339c31b710cae
Parents: f58aff1
Author: poorejc <po...@apache.org>
Authored: Tue Jan 15 23:35:15 2019 -0500
Committer: poorejc <po...@apache.org>
Committed: Tue Jan 15 23:35:15 2019 -0500

----------------------------------------------------------------------
 docker/README.md                                |  19 +-
 docker/docker-compose.single-6.2.2.yml          | 163 +++++++++++++
 docker/docker-compose.yml                       |  12 +-
 docker/elasticsearch/6.5.4/Dockerfile           |  30 +++
 .../6.5.4/config/elasticsearch.yml              |  51 +++++
 .../6.5.4/config/log4j2.properties              |  24 ++
 docker/kibana/6.5.4/Dockerfile                  |  20 ++
 .../Apache SensSoft Page Usage Dashboard.json   |  18 ++
 .../Apache SensSoft User Access Dashboard.json  |  34 +++
 .../Apache SensSoft Visualizations.json         | 226 +++++++++++++++++++
 .../6.5.4/Saved Objects/Drill-Down Search.json  |  22 ++
 docker/kibana/6.5.4/config/kibana.yml           |  18 ++
 docker/logstash/6.5.4/Dockerfile                |  31 +++
 .../6.5.4/pipeline/logstash-userale.conf        |  52 +++++
 docker/logstash/6.5.4/templates/userale.json    | 143 ++++++++++++
 15 files changed, 853 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/README.md
----------------------------------------------------------------------
diff --git a/docker/README.md b/docker/README.md
index 351b53d..7376191 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -1,6 +1,6 @@
 How to Build SensSoft Docker Containers
 =======================================
-*Last Tested (on macOS Mojave) 22 DEC 2018*
+*Last Tested (on macOS Mojave) 15 JAN 2019*
 
 Prerequisites
 -------------
@@ -38,16 +38,16 @@ requires special configuration. Please reach out to us at [our dev list](mailto:
    ```
 
 1. Create externel docker network to enable system monitoring. Only enable if running 
-   the Elasticsearch 6.2.2 configuration (single and cluster mode)
+   the Elasticsearch 6.5.4 configuration (single and cluster mode)
    
    ```bash
    $ docker network create esnet
    ```
 
-1. Start Elasticsearch 5.6.3 or 6.2.2. Give Elasticsearch about 1-2 minutes to start before confirming its state.
+1. Start Elasticsearch 6.2.2 (Deprecated) or 6.5.4 (Recommended) Give Elasticsearch about 1-2 minutes to start before confirming its state.
    
    ```bash
-   $ docker-compose -f docker-compose.single-5.6.3.yml up -d elasticsearch
+   $ docker-compose -f docker-compose.single-6.2.2.yml up -d elasticsearch
    
    or
 
@@ -134,6 +134,16 @@ requires special configuration. Please reach out to us at [our dev list](mailto:
 
    ![alt text][dashboard]
    
+1. To see container health metrics, launch Metricbeat:
+
+   ```bash
+   $ docker-compose up -d metricbeat
+   ```
+   
+   Once the container is running, metricbeat dashboards will automatically load in Kibana. Navigate to the Container `Dashboard`.
+   
+   ![alt text][metrics]
+   
 1. To stop all containers.
     ```bash
     $ docker-compose stop
@@ -279,6 +289,7 @@ Having Issues?
 [confirmation]: ./docs/images/confirmation.png "Confirm index pattern conflicts"
 [dashboard]: ./docs/images/dashboard.png "Apache Senssoft Page Usage Dashboard"
 [management]: ./docs/images/management.png "Kibana management console"
+[metrics]: ./docs/images/DockerBeats_Dashboard.png "Metricbeat Dashboard"
 
 Licensing
 --------------

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/docker-compose.single-6.2.2.yml
----------------------------------------------------------------------
diff --git a/docker/docker-compose.single-6.2.2.yml b/docker/docker-compose.single-6.2.2.yml
new file mode 100644
index 0000000..316b7f5
--- /dev/null
+++ b/docker/docker-compose.single-6.2.2.yml
@@ -0,0 +1,163 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Apache SensSoft Single-Node Build
+
+version: "3"
+services:
+
+  # Startup
+  startup:
+    build: ./startup
+    depends_on:
+      - "elasticsearch"
+    command: bash /opt/entrypoint.sh
+
+  # Site
+  site:
+    build: ./site
+    ports:
+      - 8080:8080
+    depends_on:
+      - "logstash"
+    command: python -m SimpleHTTPServer 8080
+
+  # Elasticsearch
+  elasticsearch:
+    build: ./elasticsearch/6.2.2
+    environment:
+      - NODE_MASTER=true
+      - NUMBER_OF_MASTERS=1
+      - NODE_COORDINATE=true
+      - "DISCOVERY_SERVICE=0.0.0.0"
+      - NODE_DATA=true
+      - NODE_INGEST=true
+      - MAX_LOCAL_STORAGE_NODES=1
+      - NETWORK_HOST=0.0.0.0
+      - HTTP_ENABLE=true
+      - HTTP_CORS_ENABLE=true
+      - HTTP_CORS_ALLOW_ORIGIN=*
+      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+    ulimits:
+      memlock:
+        soft: -1
+        hard: -1
+    healthcheck:
+      test: ["CMD", "curl","-s" ,"-f", "-u", "http://localhost:9200/_cluster/health"]
+    # Mount volumes to backup elasticsearch data
+#    volumes:
+#      - esdata:/usr/share/elasticsaerch/data
+    ports:
+      - "9200:9200"
+    networks:
+      - esnet
+
+  # Kibana
+  kibana:
+    build: ./kibana/6.2.2
+    environment:
+      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+      - "ELASTICSEARCH_URL=http://elasticsearch:9200"
+    ports:
+      - "5601:5601"
+    depends_on:
+      - "elasticsearch"
+    networks:
+      - esnet
+
+  # Logstash
+  logstash:
+    build: ./logstash/6.2.2
+    environment:
+      - "ELASTICSEARCH_URL=elasticsearch:9200"
+    ports:
+      - 8100:8100
+    volumes:
+      - ./logstash/6.2.2/pipeline/logstash-userale.conf:/usr/share/logstash/pipeline/logstash-userale.conf
+      - ./logstash/6.2.2/templates/userale.json:/usr/share/logstash/templates/userale.json
+    depends_on:
+      - "elasticsearch"
+    networks:
+      - esnet
+
+  # Distill
+  distill:
+     build: ./distill
+     ports:
+       - 8090:8090
+     depends_on:
+       - "elasticsearch"
+     networks:
+       - esnet
+
+  # TAP's Database
+  db:
+     build: ./db
+     image: senssoft/postgres:latest
+     ports:
+       - "5432:5432"
+
+  # TAP
+  tap:
+     build: ./tap
+     command: bash -c "/usr/src/app/wait-for-postgres.sh"
+     ports:
+       - "8010:8010"
+     depends_on:
+       - db
+     links:
+       - db:db
+
+  # Specific container and configuration to monitor the HOST (filesystem, memory, processes,...)
+  metricbeat:
+    image: docker.elastic.co/beats/metricbeat:6.2.4
+#    restart: unless-stopped
+    user: root
+    pid: host
+    volumes:
+      #The commented sections below enable Metricbeat to monitor the Docker host
+      #rather than the Metricbeat container. These are used by the system module.
+      - /proc:/hostfs/proc:ro
+      - /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
+      #We mount the host filesystem so we can report on disk usage with the system module
+      - /:/hostfs:ro
+      #Mount the metricbeat configuration so users can make edits
+      - ./beats/metricbeat/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml
+      #Mount the modules.d directory into the container. This allows user to 
+      #potentially make changes to the modules and they will be dynamically loaded.
+      - ./beats/metricbeat/modules.d/:/usr/share/metricbeat/modules.d/
+      #Allows us to report on docker from the hosts information
+      - /var/run/docker.sock:/var/run/docker.sock
+    depends_on:
+      - elasticsearch
+    environment:
+      - ELASTICSEARCH_URL=http://elasticsearch:9200
+      - KIBANA_URL=http://kibana:5601
+      - LOGSTASH_URL=http://logstash:9600
+      - POSTGRESQL_URL="postgresql://db:5432/tapdb?sslmode=disable"
+      - POSTGRESQL_USERNAME=tapuser
+      - POSTGRESQL_PASSWORD="Dr@p3rUs3r"
+    extra_hosts:
+      - "elasticsearch:172.17.0.1" # The IP of docker0 interface to access host from container
+      - "kibana:172.17.0.1" # The IP of docker0 interface to access host from container
+      - "logstash:172.17.0.1"
+      - "db:172.17.0.1"
+    command: metricbeat -e -system.hostfs=/hostfs -strict.perms=false
+    network_mode: host # Mandatory to monitor HOST filesystem, memory, processes,...
+
+networks:
+  esnet:
+    external:
+      name: esnet

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/docker-compose.yml
----------------------------------------------------------------------
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 316b7f5..594e5c4 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -36,7 +36,7 @@ services:
 
   # Elasticsearch
   elasticsearch:
-    build: ./elasticsearch/6.2.2
+    build: ./elasticsearch/6.5.4
     environment:
       - NODE_MASTER=true
       - NUMBER_OF_MASTERS=1
@@ -66,7 +66,7 @@ services:
 
   # Kibana
   kibana:
-    build: ./kibana/6.2.2
+    build: ./kibana/6.5.4
     environment:
       - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
       - "ELASTICSEARCH_URL=http://elasticsearch:9200"
@@ -79,14 +79,14 @@ services:
 
   # Logstash
   logstash:
-    build: ./logstash/6.2.2
+    build: ./logstash/6.5.4
     environment:
       - "ELASTICSEARCH_URL=elasticsearch:9200"
     ports:
       - 8100:8100
     volumes:
-      - ./logstash/6.2.2/pipeline/logstash-userale.conf:/usr/share/logstash/pipeline/logstash-userale.conf
-      - ./logstash/6.2.2/templates/userale.json:/usr/share/logstash/templates/userale.json
+      - ./logstash/6.5.4/pipeline/logstash-userale.conf:/usr/share/logstash/pipeline/logstash-userale.conf
+      - ./logstash/6.5.4/templates/userale.json:/usr/share/logstash/templates/userale.json
     depends_on:
       - "elasticsearch"
     networks:
@@ -122,7 +122,7 @@ services:
 
   # Specific container and configuration to monitor the HOST (filesystem, memory, processes,...)
   metricbeat:
-    image: docker.elastic.co/beats/metricbeat:6.2.4
+    image: docker.elastic.co/beats/metricbeat:6.5.4
 #    restart: unless-stopped
     user: root
     pid: host

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/elasticsearch/6.5.4/Dockerfile
----------------------------------------------------------------------
diff --git a/docker/elasticsearch/6.5.4/Dockerfile b/docker/elasticsearch/6.5.4/Dockerfile
new file mode 100644
index 0000000..dc4ffeb
--- /dev/null
+++ b/docker/elasticsearch/6.5.4/Dockerfile
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM docker.elastic.co/elasticsearch/elasticsearch-oss:6.5.4
+
+MAINTAINER Michelle Beard <ms...@apache.org>
+
+# Override config
+COPY config /usr/share/elasticsearch/config
+RUN chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/config
+
+# Set environment
+ENV CLUSTER_NAME SensSoft
+
+# Kubernetes requires swap is turned off
+ENV MEMORY_LOCK false
+
+EXPOSE 9200
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/elasticsearch/6.5.4/config/elasticsearch.yml
----------------------------------------------------------------------
diff --git a/docker/elasticsearch/6.5.4/config/elasticsearch.yml b/docker/elasticsearch/6.5.4/config/elasticsearch.yml
new file mode 100644
index 0000000..5525441
--- /dev/null
+++ b/docker/elasticsearch/6.5.4/config/elasticsearch.yml
@@ -0,0 +1,51 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Custom config borrowed from Pires: https://github.com/pires/docker-elasticsearch-kubernetes
+
+cluster:
+  name: ${CLUSTER_NAME:SensSoft}
+
+node:
+  master: ${NODE_MASTER:true}
+  data: ${NODE_DATA:true}
+  name: ${NODE_NAME:${HOSTNAME}}
+  ingest: ${NODE_INGEST:true}
+  max_local_storage_nodes: ${MAX_LOCAL_STORAGE_NODES:1}
+
+network.host: ${NETWORK_HOST:0.0.0.0}
+
+search.remote.connect: ${NODE_COORDINATE:true}
+
+path:
+  data: /usr/share/elasticsearch/data
+  logs: /usr/share/elasticsearch/log
+
+bootstrap:
+  memory_lock: ${MEMORY_LOCK}
+
+http:
+  enabled: ${HTTP_ENABLE:true}
+  compression: true
+  cors:
+    enabled: ${HTTP_CORS_ENABLE:true}
+    allow-origin: ${HTTP_CORS_ALLOW_ORIGIN:"*"}
+
+# Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
+discovery:
+  zen:
+    ping.unicast.hosts: ${DISCOVERY_SERVICE:127.0.0.1, [::1]}
+    ping.unicast.hosts.resolve_timeout: ${DISCOVERY_TIMEOUT:5s}
+    minimum_master_nodes: ${NUMBER_OF_MASTERS:1}

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/elasticsearch/6.5.4/config/log4j2.properties
----------------------------------------------------------------------
diff --git a/docker/elasticsearch/6.5.4/config/log4j2.properties b/docker/elasticsearch/6.5.4/config/log4j2.properties
new file mode 100644
index 0000000..51f7e79
--- /dev/null
+++ b/docker/elasticsearch/6.5.4/config/log4j2.properties
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+status = error
+
+appender.console.type = Console
+appender.console.name = console
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%Node_Name] %marker%m%n 
+
+rootLogger.level = info
+rootLogger.appenderRef.console.ref = console
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/kibana/6.5.4/Dockerfile
----------------------------------------------------------------------
diff --git a/docker/kibana/6.5.4/Dockerfile b/docker/kibana/6.5.4/Dockerfile
new file mode 100644
index 0000000..c9e78e2
--- /dev/null
+++ b/docker/kibana/6.5.4/Dockerfile
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM docker.elastic.co/kibana/kibana-oss:6.5.4
+
+MAINTAINER Michelle Beard <ms...@apache.org>
+
+EXPOSE 5601

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/kibana/6.5.4/Saved Objects/Apache SensSoft Page Usage Dashboard.json
----------------------------------------------------------------------
diff --git a/docker/kibana/6.5.4/Saved Objects/Apache SensSoft Page Usage Dashboard.json b/docker/kibana/6.5.4/Saved Objects/Apache SensSoft Page Usage Dashboard.json
new file mode 100644
index 0000000..a7254bc
--- /dev/null
+++ b/docker/kibana/6.5.4/Saved Objects/Apache SensSoft Page Usage Dashboard.json	
@@ -0,0 +1,18 @@
+[
+  {
+    "_id": "3f02bf70-12eb-11e9-a1e0-631cf5fb9335",
+    "_type": "dashboard",
+    "_source": {
+      "title": "Apache SensSoft Page Usage Dashboard",
+      "hits": 0,
+      "description": "Abstracts Multi-User Interaction with Single Pages/Apps",
+      "panelsJSON": "[{\"gridData\":{\"h\":3,\"i\":\"2\",\"w\":8,\"x\":4,\"y\":0},\"id\":\"f7ca4560-be7c-11e7-8adf-fd0a12531eca\",\"panelIndex\":\"2\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 400\":\"rgb(255,245,240)\",\"1,200 - 1,600\":\"rgb(203,24,29)\",\"400 - 800\":\"rgb(252,187,161)\",\"800 - 1,200\":\"rgb(251,106,74)\"},\"legendOpen\":false}},\"gridData\":{\"h\":3,\"i\":\"5\",\"w\":5,\"x\":3,\"y\":3},\"id\":\"429c0940-fce6-11e8-a156-87bcaf41506e\",\"panelIndex\":\"5\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"gridData\":{\"h\":3,\"i\":\"6\",\"w\":3,\"x\":0,\"y\":3},\"id\":\"5b467330-06e2-11e9-8c58-f38cfff498f6\",\"panelIndex\":\"6\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"gridData\":{\"h\":9,\"i\":\"7\",\"w\":12,\"x\":0,\"y\":9},\"id\":\"2bf40010-be7d-11e7-8adf-fd0a12531eca\",\"panelIndex\":\"7\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"gridData\":{\"h\":3,\"i\":\"8\",\"w\":4,
 \"x\":0,\"y\":0},\"id\":\"ba30fd80-12ee-11e9-a1e0-631cf5fb9335\",\"panelIndex\":\"8\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"gridData\":{\"h\":3,\"i\":\"9\",\"w\":6,\"x\":0,\"y\":6},\"id\":\"bcd7c950-be7c-11e7-8adf-fd0a12531eca\",\"panelIndex\":\"9\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"embeddableConfig\":{\"vis\":{\"legendOpen\":false}},\"gridData\":{\"h\":3,\"i\":\"10\",\"w\":4,\"x\":8,\"y\":3},\"id\":\"20b291b0-12f2-11e9-a1e0-631cf5fb9335\",\"panelIndex\":\"10\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"embeddableConfig\":{\"spy\":null},\"gridData\":{\"h\":3,\"i\":\"11\",\"w\":6,\"x\":6,\"y\":6},\"id\":\"bf327a20-12f3-11e9-a1e0-631cf5fb9335\",\"panelIndex\":\"11\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"gridData\":{\"h\":8,\"i\":\"12\",\"w\":12,\"x\":0,\"y\":18},\"id\":\"887fec40-1886-11e9-bdac-e790c2bff4d4\",\"panelIndex\":\"12\",\"type\":\"visualization\",\"version\":\"6.2.2\"}]",
+      "optionsJSON": "{\"darkTheme\":true,\"useMargins\":false}",
+      "version": 1,
+      "timeRestore": false,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"UserID Search\",\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"userId\",\"negate\":false,\"params\":{\"query\":\"nobody\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"nobody\"},\"query\":{\"match\":{\"userId\":{\"query\":\"nobody\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"Host Search\",\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"host\",\"negate\":false,\"params\":{\"query\":\"172.18.0.1\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"172.18.0.1\"},\"query\":{\"match\":{\"host\":{\"query\":\"172.18.0.1\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"Event Type Search\",\"disabled\":false,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"type\",\"negate\":false,\"params\":{\"query\":\"click\",\"type\":\"phrase\"},\"t
 ype\":\"phrase\",\"value\":\"click\"},\"query\":{\"match\":{\"type\":{\"query\":\"click\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"URL Search\",\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"pageUrl\",\"negate\":false,\"params\":{\"query\":\"http://senssoft.incubator.apache.org/\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"http://senssoft.incubator.apache.org/\"},\"query\":{\"match\":{\"pageUrl\":{\"query\":\"http://senssoft.incubator.apache.org/\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"toolName\",\"negate\":false,\"params\":{\"query\":\"MyApp\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"MyApp\"},\"query\":{\"match\":{\"toolName\":{\"query\":\"MyApp\",\"type\":\"phrase\"}}}}],\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"toolNa
 me:Appv1 OR Appv2\"}}"
+      }
+    }
+  }
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/kibana/6.5.4/Saved Objects/Apache SensSoft User Access Dashboard.json
----------------------------------------------------------------------
diff --git a/docker/kibana/6.5.4/Saved Objects/Apache SensSoft User Access Dashboard.json b/docker/kibana/6.5.4/Saved Objects/Apache SensSoft User Access Dashboard.json
new file mode 100644
index 0000000..6bd1441
--- /dev/null
+++ b/docker/kibana/6.5.4/Saved Objects/Apache SensSoft User Access Dashboard.json	
@@ -0,0 +1,34 @@
+[
+  {
+    "_id": "ab9f1f90-fce6-11e8-a156-87bcaf41506e",
+    "_type": "dashboard",
+    "_source": {
+      "title": "Apache SensSoft User Access Dashboard",
+      "hits": 0,
+      "description": "Abstracts Multi-User Utilization of IT Assets (and Web Usage)",
+      "panelsJSON": "[{\"panelIndex\":\"2\",\"gridData\":{\"x\":4,\"y\":0,\"w\":8,\"h\":3,\"i\":\"2\"},\"id\":\"f7ca4560-be7c-11e7-8adf-fd0a12531eca\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"panelIndex\":\"4\",\"gridData\":{\"x\":0,\"y\":0,\"w\":3,\"h\":3,\"i\":\"4\"},\"embeddableConfig\":{\"spy\":null},\"id\":\"e36b1f40-be7c-11e7-8adf-fd0a12531eca\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"panelIndex\":\"5\",\"gridData\":{\"x\":3,\"y\":3,\"w\":9,\"h\":3,\"i\":\"5\"},\"id\":\"429c0940-fce6-11e8-a156-87bcaf41506e\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"panelIndex\":\"6\",\"gridData\":{\"x\":0,\"y\":3,\"w\":3,\"h\":3,\"i\":\"6\"},\"id\":\"5b467330-06e2-11e9-8c58-f38cfff498f6\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"panelIndex\":\"7\",\"gridData\":{\"x\":3,\"y\":9,\"w\":9,\"h\":3,\"i\":\"7\"},\"id\":\"e1b6c290-06e1-11e9-8c58-f38cfff498f6\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"panelIndex\":\"8\",\"gridData\":{\"x\":0,
 \"y\":6,\"w\":12,\"h\":3,\"i\":\"8\"},\"embeddableConfig\":{\"vis\":{\"colors\":{\"0 - 6\":\"#FCE2DE\"},\"defaultColors\":{\"0 - 6\":\"rgb(255,245,240)\",\"11 - 17\":\"rgb(251,106,74)\",\"17 - 22\":\"rgb(203,24,29)\",\"6 - 11\":\"rgb(252,187,161)\"},\"legendOpen\":true}},\"id\":\"d5a95ce0-06e3-11e9-8c58-f38cfff498f6\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"panelIndex\":\"9\",\"gridData\":{\"x\":0,\"y\":9,\"w\":3,\"h\":3,\"i\":\"9\"},\"id\":\"5eeda1e0-06e5-11e9-8c58-f38cfff498f6\",\"type\":\"visualization\",\"version\":\"6.2.2\"}]",
+      "optionsJSON": "{\"darkTheme\":true,\"useMargins\":false}",
+      "version": 1,
+      "timeRestore": false,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"UserID Search\",\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"userId\",\"negate\":false,\"params\":{\"query\":\"nobody\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"nobody\"},\"query\":{\"match\":{\"userId\":{\"query\":\"nobody\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"Host Search\",\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"host\",\"negate\":false,\"params\":{\"query\":\"172.18.0.1\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"172.18.0.1\"},\"query\":{\"match\":{\"host\":{\"query\":\"172.18.0.1\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"Event Type Search\",\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"type\",\"negate\":false,\"params\":{\"query\":\"click\",\"type\":\"phrase\"},\"ty
 pe\":\"phrase\",\"value\":\"click\"},\"query\":{\"match\":{\"type\":{\"query\":\"click\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"URL Search\",\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"pageUrl\",\"negate\":false,\"params\":[\"http://senssoft.incubator.apache.org/\"],\"type\":\"phrases\",\"value\":\"http://senssoft.incubator.apache.org/\"},\"query\":{\"bool\":{\"minimum_should_match\":1,\"should\":[{\"match_phrase\":{\"pageUrl\":\"http://senssoft.incubator.apache.org/\"}}]}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"pageUrl\",\"negate\":false,\"params\":[\"https://github.com/apache/incubator-senssoft\"],\"type\":\"phrases\",\"value\":\"https://github.com/apache/incubator-senssoft\"},\"query\":{\"bool\":{\"minimum_should_match\":1,\"should\":[{\"match_phrase\":{\"pageUrl\":\"https://github.com/apache/incubato
 r-senssoft\"}}]}}}],\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"default_field\":\"*\",\"query\":\"*\"}}}}"
+      }
+    }
+  },
+  {
+    "_id": "3f02bf70-12eb-11e9-a1e0-631cf5fb9335",
+    "_type": "dashboard",
+    "_source": {
+      "title": "Apache SensSoft Page Usage Dashboard",
+      "hits": 0,
+      "description": "Abstracts Multi-User Interaction with Single Pages/Apps",
+      "panelsJSON": "[{\"gridData\":{\"h\":3,\"i\":\"2\",\"w\":8,\"x\":4,\"y\":0},\"id\":\"f7ca4560-be7c-11e7-8adf-fd0a12531eca\",\"panelIndex\":\"2\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 400\":\"rgb(255,245,240)\",\"1,200 - 1,600\":\"rgb(203,24,29)\",\"400 - 800\":\"rgb(252,187,161)\",\"800 - 1,200\":\"rgb(251,106,74)\"},\"legendOpen\":false}},\"gridData\":{\"h\":3,\"i\":\"5\",\"w\":5,\"x\":3,\"y\":3},\"id\":\"429c0940-fce6-11e8-a156-87bcaf41506e\",\"panelIndex\":\"5\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"gridData\":{\"h\":3,\"i\":\"6\",\"w\":3,\"x\":0,\"y\":3},\"id\":\"5b467330-06e2-11e9-8c58-f38cfff498f6\",\"panelIndex\":\"6\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"gridData\":{\"h\":9,\"i\":\"7\",\"w\":12,\"x\":0,\"y\":9},\"id\":\"2bf40010-be7d-11e7-8adf-fd0a12531eca\",\"panelIndex\":\"7\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"gridData\":{\"h\":3,\"i\":\"8\",\"w\":4,
 \"x\":0,\"y\":0},\"id\":\"ba30fd80-12ee-11e9-a1e0-631cf5fb9335\",\"panelIndex\":\"8\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"gridData\":{\"h\":3,\"i\":\"9\",\"w\":6,\"x\":0,\"y\":6},\"id\":\"bcd7c950-be7c-11e7-8adf-fd0a12531eca\",\"panelIndex\":\"9\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"embeddableConfig\":{\"vis\":{\"legendOpen\":false}},\"gridData\":{\"h\":3,\"i\":\"10\",\"w\":4,\"x\":8,\"y\":3},\"id\":\"20b291b0-12f2-11e9-a1e0-631cf5fb9335\",\"panelIndex\":\"10\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"embeddableConfig\":{\"spy\":null},\"gridData\":{\"h\":3,\"i\":\"11\",\"w\":6,\"x\":6,\"y\":6},\"id\":\"bf327a20-12f3-11e9-a1e0-631cf5fb9335\",\"panelIndex\":\"11\",\"type\":\"visualization\",\"version\":\"6.2.2\"},{\"gridData\":{\"h\":8,\"i\":\"12\",\"w\":12,\"x\":0,\"y\":18},\"id\":\"887fec40-1886-11e9-bdac-e790c2bff4d4\",\"panelIndex\":\"12\",\"type\":\"visualization\",\"version\":\"6.2.2\"}]",
+      "optionsJSON": "{\"darkTheme\":true,\"useMargins\":false}",
+      "version": 1,
+      "timeRestore": false,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"UserID Search\",\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"userId\",\"negate\":false,\"params\":{\"query\":\"nobody\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"nobody\"},\"query\":{\"match\":{\"userId\":{\"query\":\"nobody\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"Host Search\",\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"host\",\"negate\":false,\"params\":{\"query\":\"172.18.0.1\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"172.18.0.1\"},\"query\":{\"match\":{\"host\":{\"query\":\"172.18.0.1\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"Event Type Search\",\"disabled\":false,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"type\",\"negate\":false,\"params\":{\"query\":\"click\",\"type\":\"phrase\"},\"t
 ype\":\"phrase\",\"value\":\"click\"},\"query\":{\"match\":{\"type\":{\"query\":\"click\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"URL Search\",\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"pageUrl\",\"negate\":false,\"params\":{\"query\":\"http://senssoft.incubator.apache.org/\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"http://senssoft.incubator.apache.org/\"},\"query\":{\"match\":{\"pageUrl\":{\"query\":\"http://senssoft.incubator.apache.org/\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":true,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"toolName\",\"negate\":false,\"params\":{\"query\":\"MyApp\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"MyApp\"},\"query\":{\"match\":{\"toolName\":{\"query\":\"MyApp\",\"type\":\"phrase\"}}}}],\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"toolNa
 me:Appv1 OR Appv2\"}}"
+      }
+    }
+  }
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/kibana/6.5.4/Saved Objects/Apache SensSoft Visualizations.json
----------------------------------------------------------------------
diff --git a/docker/kibana/6.5.4/Saved Objects/Apache SensSoft Visualizations.json b/docker/kibana/6.5.4/Saved Objects/Apache SensSoft Visualizations.json
new file mode 100644
index 0000000..34ba9f0
--- /dev/null
+++ b/docker/kibana/6.5.4/Saved Objects/Apache SensSoft Visualizations.json	
@@ -0,0 +1,226 @@
+[
+  {
+    "_id": "bcd7c950-be7c-11e7-8adf-fd0a12531eca",
+    "_type": "visualization",
+    "_source": {
+      "title": "Top Event Types",
+      "visState": "{\"title\":\"Top Event Types\",\"type\":\"pie\",\"params\":{\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Top Event Types\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"type\",\"size\":100,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Event types\"}}],\"listeners\":{}}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"query\":{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"language\":\"lucene\"},\"filter\":[]}"
+      }
+    }
+  },
+  {
+    "_id": "e36b1f40-be7c-11e7-8adf-fd0a12531eca",
+    "_type": "visualization",
+    "_source": {
+      "title": "Total Number of Logs",
+      "visState": "{\"title\":\"Total Number of Logs\",\"type\":\"metric\",\"params\":{\"handleNoResults\":true,\"fontSize\":60},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Total number of logs\"}}],\"listeners\":{}}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"query\":{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"language\":\"lucene\"},\"filter\":[]}"
+      }
+    }
+  },
+  {
+    "_id": "2bf40010-be7d-11e7-8adf-fd0a12531eca",
+    "_type": "visualization",
+    "_source": {
+      "title": "Events by Targets",
+      "visState": "{\"title\":\"Events by Targets\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"HTML Tags\"},\"type\":\"category\"}],\"defaultYExtents\":false,\"drawLinesBetweenPoints\":true,\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"interpolate\":\"linear\",\"legendPosition\":\"right\",\"radiusRatio\":9,\"scale\":\"linear\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"stacked\",\"show\":\"true\",\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"setYExtents\":false,\"showCircles\":true,\"times\":[],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxi
 s-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"value\"}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"target\",\"size\":100,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"HTML Tags\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"type\",\"size\":20,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"JS Events\"}}],\"listeners\":{}}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"query\":{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"language\":\"lucene\"},\"filter\":[]}"
+      }
+    }
+  },
+  {
+    "_id": "64045a30-fce4-11e8-a156-87bcaf41506e",
+    "_type": "visualization",
+    "_source": {
+      "title": "Total Logs by Unique Hosts",
+      "visState": "{\"title\":\"Total Logs by Unique Hosts\",\"type\":\"horizontal_bar\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":200},\"position\":\"left\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Total Logs\"},\"drawLinesBetweenPoints\":true,\"mode\":\"normal\",\"show\":true,\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":true,\"rotate\":75,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"bottom\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"te
 xt\":\"Total Logs\"},\"type\":\"value\"}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Total Logs\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"host\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Unique Hosts\"}}]}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"}}"
+      }
+    }
+  },
+  {
+    "_id": "429c0940-fce6-11e8-a156-87bcaf41506e",
+    "_type": "visualization",
+    "_source": {
+      "title": "Host Activity By Day",
+      "visState": "{\"title\":\"Host Activity By Day\",\"type\":\"heatmap\",\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"times\":[],\"colorsNumber\":4,\"colorSchema\":\"Reds\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"color\":\"#555\"}}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Total Logs\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"clientTime\",\"interval\":\"d\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"Days\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"
 host\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":true,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Unique Hosts\"}}]}",
+      "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 500\":\"rgb(255,245,240)\",\"500 - 1,000\":\"rgb(252,187,161)\",\"1,000 - 1,500\":\"rgb(251,106,74)\",\"1,500 - 2,000\":\"rgb(203,24,29)\"}}}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
+      }
+    }
+  },
+  {
+    "_id": "5eeda1e0-06e5-11e9-8c58-f38cfff498f6",
+    "_type": "visualization",
+    "_source": {
+      "title": "Number of Unique Pages Visited",
+      "visState": "{\"title\":\"Number of Unique Pages Visited\",\"type\":\"metric\",\"params\":{\"handleNoResults\":true,\"fontSize\":60,\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"details.url\",\"customLabel\":\"Number of Unique Pages Visited\"}}]}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"query\":{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true,\"default_field\":\"*\"}},\"language\":\"lucene\"},\"filter\":[]}"
+      }
+    }
+  },
+  {
+    "_id": "e1b6c290-06e1-11e9-8c58-f38cfff498f6",
+    "_type": "visualization",
+    "_source": {
+      "title": "Top Pages Visited",
+      "visState": "{\"title\":\"Top Pages Visited\",\"type\":\"pie\",\"params\":{\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"type\":\"pie\",\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Top Event Types\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"details.title\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":100,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Event types\"}}]}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"query\":{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true,\"default_field\":\"*\"}},\"language\":\"lucene\"},\"filter\":[]}"
+      }
+    }
+  },
+  {
+    "_id": "f7ca4560-be7c-11e7-8adf-fd0a12531eca",
+    "_type": "visualization",
+    "_source": {
+      "title": "Time Series",
+      "visState": "{\"title\":\"Time Series\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(*)\",\"interval\":\"auto\"},\"aggs\":[],\"listeners\":{}}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"query\":{\"query\":{\"query_string\":{\"query\":\"*\"}},\"language\":\"lucene\"},\"filter\":[]}"
+      }
+    }
+  },
+  {
+    "_id": "b7324e60-12ec-11e9-a1e0-631cf5fb9335",
+    "_type": "visualization",
+    "_source": {
+      "title": "Top URL Visits By Day",
+      "visState": "{\"title\":\"Top URL Visits By Day\",\"type\":\"heatmap\",\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"times\":[],\"colorsNumber\":4,\"colorSchema\":\"Reds\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"color\":\"#555\"}}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Total Logs\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"clientTime\",\"interval\":\"d\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"Days\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\
 "pageUrl\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Unique URLs\"}}]}",
+      "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 400\":\"rgb(255,245,240)\",\"400 - 800\":\"rgb(252,187,161)\",\"800 - 1,200\":\"rgb(251,106,74)\",\"1,200 - 1,600\":\"rgb(203,24,29)\"}}}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
+      }
+    }
+  },
+  {
+    "_id": "d5a95ce0-06e3-11e9-8c58-f38cfff498f6",
+    "_type": "visualization",
+    "_source": {
+      "title": "Top Page Visits By Day",
+      "visState": "{\"title\":\"Top Page Visits By Day\",\"type\":\"heatmap\",\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"times\":[],\"colorsNumber\":4,\"colorSchema\":\"Reds\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"color\":\"#555\"}}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Total Logs\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"clientTime\",\"interval\":\"d\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"Days\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":
 \"details.title\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":8,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"Unique Pages\"}}]}",
+      "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 7\":\"rgb(255,245,240)\",\"7 - 13\":\"rgb(252,187,161)\",\"13 - 20\":\"rgb(251,106,74)\",\"20 - 26\":\"rgb(203,24,29)\"}}}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
+      }
+    }
+  },
+  {
+    "_id": "f7c690a0-12ef-11e9-a1e0-631cf5fb9335",
+    "_type": "visualization",
+    "_source": {
+      "title": "Top UI Elements Used",
+      "visState": "{\"title\":\"Top UI Elements Used\",\"type\":\"pie\",\"params\":{\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"type\":\"pie\",\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Element Interactions\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"target\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":25,\"order\":\"desc\",\"orderBy\":\"_term\",\"customLabel\":\"UI Elements\"}}]}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"query\":{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true,\"default_field\":\"*\"}},\"language\":\"lucene\"},\"filter\":[]}"
+      }
+    }
+  },
+  {
+    "_id": "5b467330-06e2-11e9-8c58-f38cfff498f6",
+    "_type": "visualization",
+    "_source": {
+      "title": "Number of Unique Hosts",
+      "visState": "{\"title\":\"Number of Unique Hosts\",\"type\":\"metric\",\"params\":{\"handleNoResults\":true,\"fontSize\":60,\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"host\",\"customLabel\":\"Number of Unique Hosts\"}}]}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"query\":{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true,\"default_field\":\"*\"}},\"language\":\"lucene\"},\"filter\":[]}"
+      }
+    }
+  },
+  {
+    "_id": "ba30fd80-12ee-11e9-a1e0-631cf5fb9335",
+    "_type": "visualization",
+    "_source": {
+      "title": "Number of User Events",
+      "visState": "{\"title\":\"Number of User Events\",\"type\":\"metric\",\"params\":{\"handleNoResults\":true,\"fontSize\":60,\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Number of User Events\"}}]}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"query\":{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true,\"default_field\":\"*\"}},\"language\":\"lucene\"},\"filter\":[]}"
+      }
+    }
+  },
+  {
+    "_id": "20b291b0-12f2-11e9-a1e0-631cf5fb9335",
+    "_type": "visualization",
+    "_source": {
+      "title": "Most Active Users by Host",
+      "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{\"customLabel\":\"Number of User Events\"},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"customLabel\":\"Host\",\"field\":\"host\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"_term\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":200},\"position\":\"left\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Number of User Events\"},\"drawLinesBetweenPoints\":true,\"mode\":\"normal\",\"sho
 w\":true,\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":true,\"rotate\":75,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"bottom\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Number of User Events\"},\"type\":\"value\"}]},\"title\":\"Most Active Users by Host\",\"type\":\"horizontal_bar\"}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"}}"
+      }
+    }
+  },
+  {
+    "_id": "bf327a20-12f3-11e9-a1e0-631cf5fb9335",
+    "_type": "visualization",
+    "_source": {
+      "title": "Top Target UI Element Cloud",
+      "visState": "{\"title\":\"Top Target UI Element Cloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":8,\"maxFontSize\":29,\"hideLabel\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Count of User Events\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"target\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":8,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"UI Elements\"}}]}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"
+      }
+    }
+  },
+  {
+    "_id": "887fec40-1886-11e9-bdac-e790c2bff4d4",
+    "_type": "visualization",
+    "_source": {
+      "title": "A/B Test",
+      "visState": "{\"title\":\"A/B Test\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"HTML Tags\"},\"type\":\"category\"}],\"defaultYExtents\":false,\"drawLinesBetweenPoints\":true,\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"interpolate\":\"linear\",\"legendPosition\":\"right\",\"radiusRatio\":9,\"scale\":\"linear\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"stacked\",\"show\":\"true\",\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"setYExtents\":false,\"showCircles\":true,\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"na
 me\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"target\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":100,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"HTML Tags\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"toolVersion\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":20,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"JS Events\"}}]}",
+      "uiStateJSON": "{}",
+      "description": "",
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"query\":{\"language\":\"lucene\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"default_field\":\"*\",\"query\":\"*\"}}},\"filter\":[]}"
+      }
+    }
+  }
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/kibana/6.5.4/Saved Objects/Drill-Down Search.json
----------------------------------------------------------------------
diff --git a/docker/kibana/6.5.4/Saved Objects/Drill-Down Search.json b/docker/kibana/6.5.4/Saved Objects/Drill-Down Search.json
new file mode 100644
index 0000000..749609b
--- /dev/null
+++ b/docker/kibana/6.5.4/Saved Objects/Drill-Down Search.json	
@@ -0,0 +1,22 @@
+[
+  {
+    "_id": "67105880-06e6-11e9-8c58-f38cfff498f6",
+    "_type": "search",
+    "_source": {
+      "title": "Drill-Down Search",
+      "description": "",
+      "hits": 0,
+      "columns": [
+        "_source"
+      ],
+      "sort": [
+        "clientTime",
+        "desc"
+      ],
+      "version": 1,
+      "kibanaSavedObjectMeta": {
+        "searchSourceJSON": "{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"URL Search\",\"disabled\":false,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"pageUrl\",\"negate\":false,\"params\":{\"query\":\"http://senssoft.incubator.apache.org/\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"http://senssoft.incubator.apache.org/\"},\"query\":{\"match\":{\"pageUrl\":{\"query\":\"http://senssoft.incubator.apache.org/\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"UserID Search\",\"disabled\":false,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"userId\",\"negate\":false,\"params\":{\"query\":\"nobody\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"nobody\"},\"query\":{\"match\":{\"userId\":{\"query\":\"nobody\",\"type\":\"phrase\"}}}},{\"$state\
 ":{\"store\":\"appState\"},\"meta\":{\"alias\":\"Host Search\",\"disabled\":false,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"host\",\"negate\":false,\"params\":{\"query\":\"172.18.0.1\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"172.18.0.1\"},\"query\":{\"match\":{\"host\":{\"query\":\"172.18.0.1\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"Event Type Search\",\"disabled\":false,\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"key\":\"type\",\"negate\":false,\"params\":{\"query\":\"click\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"click\"},\"query\":{\"match\":{\"type\":{\"query\":\"click\",\"type\":\"phrase\"}}}},{\"meta\":{\"index\":\"bdce0520-06df-11e9-8c58-f38cfff498f6\",\"negate\":false,\"disabled\":false,\"alias\":\"AppSearch\",\"type\":\"phrase\",\"key\":\"toolName\",\"value\":\"MyApp\",\"params\":{\"query\":\"MyApp\",\"type\":\"phrase\"}},\"query\":{\"match\":{\"toolName\":{\"query\":\"MyApp\"
 ,\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}]}"
+      }
+    }
+  }
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/kibana/6.5.4/config/kibana.yml
----------------------------------------------------------------------
diff --git a/docker/kibana/6.5.4/config/kibana.yml b/docker/kibana/6.5.4/config/kibana.yml
new file mode 100644
index 0000000..cc93fed
--- /dev/null
+++ b/docker/kibana/6.5.4/config/kibana.yml
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+server.name: kibana
+server.host: "0"
+elasticsearch.url: http://localhost:9200

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/logstash/6.5.4/Dockerfile
----------------------------------------------------------------------
diff --git a/docker/logstash/6.5.4/Dockerfile b/docker/logstash/6.5.4/Dockerfile
new file mode 100644
index 0000000..876184c
--- /dev/null
+++ b/docker/logstash/6.5.4/Dockerfile
@@ -0,0 +1,31 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM docker.elastic.co/logstash/logstash-oss:6.5.4
+MAINTAINER Michelle Beard <ms...@apache.org>
+
+# Ensure default logstash configuration is removed
+RUN rm -f /usr/share/logstash/pipeline/logstash.conf
+
+# Copy Pipeline files over
+ADD pipeline/ /usr/share/logstash/pipeline/
+
+# Copy templates over
+RUN mkdir /usr/share/logstash/templates
+COPY templates/userale.json /usr/share/logstash/templates/userale.json
+
+EXPOSE 8100
+
+CMD ["logstash"]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/logstash/6.5.4/pipeline/logstash-userale.conf
----------------------------------------------------------------------
diff --git a/docker/logstash/6.5.4/pipeline/logstash-userale.conf b/docker/logstash/6.5.4/pipeline/logstash-userale.conf
new file mode 100644
index 0000000..8b4313f
--- /dev/null
+++ b/docker/logstash/6.5.4/pipeline/logstash-userale.conf
@@ -0,0 +1,52 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+input {
+	http {
+		codec => "json"
+		port => 8100
+		response_headers => { 
+			"Access-Control-Allow-Origin" => "*" 
+            "Access-Control-Allow-Headers" => "Origin, X-Requested-With, Content-Type, Accept"
+        }
+	}
+}
+
+## Add your filters / logstash plugins configuration here
+filter {
+	mutate {
+		remove_field => [ "message", "@version", "headers"]
+	}
+
+	grok {
+    	match => [ "useraleVersion", "(?<major_ver>\d+).(?<minor_ver>\d+)(.(?<patch_ver>\d+))?" ]
+    	match => [ "toolVersion", "(?<tool_major_ver>\d+).(?<tool_minor_ver>\d+)(.(?<tool_patch_ver>\d+))?" ]
+  }
+}
+
+output {
+	# Output data to Elasticsearch instance
+	elasticsearch {
+		hosts => "${ELASTICSEARCH_URL}"
+		index => "userale"
+		manage_template => true
+		template_overwrite => true
+		template => "/usr/share/logstash/templates/userale.json"
+		template_name => "userale"
+	}
+
+	# Debug
+	stdout { codec => rubydebug }
+}

http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/c6cedd59/docker/logstash/6.5.4/templates/userale.json
----------------------------------------------------------------------
diff --git a/docker/logstash/6.5.4/templates/userale.json b/docker/logstash/6.5.4/templates/userale.json
new file mode 100644
index 0000000..5aa92d0
--- /dev/null
+++ b/docker/logstash/6.5.4/templates/userale.json
@@ -0,0 +1,143 @@
+{
+    "index_patterns": "userale",
+    "order": 1,
+    "settings":
+    {
+        "number_of_shards": 1,
+        "number_of_replicas": 0,
+        "index.refresh_interval": "5s",
+        "analysis": {
+            "analyzer": {
+                "my_analyzer": {
+                    "tokenizer": "my_tokenizer"
+                }
+            },
+            "tokenizer": {
+                "my_tokenizer": {
+                    "type": "path_hierarchy"
+                }
+            }
+        }
+    },
+    "mappings":
+    {
+        "doc":
+        {
+        "dynamic_templates": [
+                {
+                  "strings_as_keywords": {
+                    "match_mapping_type": "string",
+                    "mapping": {
+                      "type": "keyword"
+                    }
+                  }
+                }
+            ],
+            "dynamic": "true",
+            "properties":
+            {
+                "userAction":
+                {
+                    "type": "boolean"
+                },
+                "clientTime":
+                {
+                    "type": "date",
+                    "format": "strict_date_optional_time||epoch_millis"
+                },
+                "count":
+                {
+                    "type": "integer"
+                },
+                "targetChange": 
+                {
+                    "type": "boolean"
+                },
+                "typeChange": 
+                {
+                    "type": "boolean"
+                },
+                "details":
+                {
+                    "properties":
+                    {
+                        "alt":
+                        {
+                            "type": "boolean"
+                        },
+                        "clicks":
+                        {
+                            "type": "integer"
+                        },
+                        "ctrl": 
+                        {
+                            "type": "boolean"
+                        },
+                        "meta": 
+                        {
+                            "type": "boolean"
+                        },
+                        "shift": 
+                        {
+                            "type": "boolean"
+                        },
+                        "window":
+                        {
+                            "type": "boolean"
+                        },
+                        "x":
+                        {
+                            "type": "integer"
+                        },
+                        "y":
+                        {
+                            "type": "integer"
+                        },
+                        "z":
+                        {
+                            "type": "integer"
+                        }
+                    }
+                },
+                "location":
+                {
+                    "properties":
+                    {
+                        "x":
+                        {
+                            "type": "integer"
+                        },
+                        "y":
+                        {
+                            "type": "integer"
+                        }
+                    }
+                },
+                "major_ver":
+                {
+                    "type": "integer"
+                },
+                "minor_ver":
+                {
+                    "type": "integer"
+                },
+                "patch_ver":
+                {
+                    "type": "integer"
+                },
+                "tool_major_ver":
+                {
+                    "type": "integer"
+                },
+                "tool_minor_ver":
+                {
+                    "type": "integer"
+                },
+                "tool_patch_ver":
+                {
+                    "type": "integer"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file