summaryrefslogtreecommitdiff
path: root/elastic/load.sh
diff options
context:
space:
mode:
Diffstat (limited to 'elastic/load.sh')
-rwxr-xr-xelastic/load.sh145
1 files changed, 145 insertions, 0 deletions
diff --git a/elastic/load.sh b/elastic/load.sh
new file mode 100755
index 0000000..0a82cef
--- /dev/null
+++ b/elastic/load.sh
@@ -0,0 +1,145 @@
+#!/bin/bash
+#
+# from https://raw.githubusercontent.com/elastic/beats-dashboards/master/load.sh
+
+
+# Usage examples:
+# env KIBANA_INDEX='.kibana_env1' ./load.sh
+# ./load.sh -url http://test.com:9200
+# ./load.sh -url http://test.com:9200 -user admin:secret
+# ./load.sh -url http://test.com:9200 -index .kibana-test
+
+# The default value of the variable. Initialize your own variables here
+ELASTICSEARCH=http://localhost:9200
+CURL=curl
+KIBANA_INDEX=".kibana"
+BEAT_CONFIG=".beatconfig"
+
+print_usage() {
+ echo "
+
+Load the dashboards, visualizations and index patterns into the given
+Elasticsearch instance.
+
+Usage:
+ $(basename "$0") -url ${ELASTICSEARCH} -user admin:secret -index ${KIBANA_INDEX}
+
+Options:
+ -h | -help
+ Print the help menu.
+ -l | -url
+ Elasticseacrh URL. By default is ${ELASTICSEARCH}.
+ -u | -user
+ Username and password for authenticating to Elasticsearch using Basic
+ Authentication. The username and password should be separated by a
+ colon (i.e. "admin:secret"). By default no username and password are
+ used.
+ -i | -index
+ Kibana index pattern where to save the dashboards, visualizations,
+ index patterns. By default is ${KIBANA_INDEX}.
+
+" >&2
+}
+
+while [ "$1" != "" ]; do
+case $1 in
+ -l | -url )
+ ELASTICSEARCH=$2
+ if [ "$ELASTICSEARCH" = "" ]; then
+ echo "Error: Missing Elasticsearch URL"
+ print_usage
+ exit 1
+ fi
+ ;;
+
+ -u | -user )
+ USER=$2
+ if [ "$USER" = "" ]; then
+ echo "Error: Missing username"
+ print_usage
+ exit 1
+ fi
+ CURL="${CURL} --user ${USER}"
+ ;;
+
+ -i | -index )
+ KIBANA_INDEX=$2
+ if [ "$KIBANA_INDEX" = "" ]; then
+ echo "Error: Missing Kibana index pattern"
+ print_usage
+ exit 1
+ fi
+ ;;
+
+ -h | -help )
+ print_usage
+ exit 0
+ ;;
+
+ *)
+ echo "Error: Unknown option $2"
+ print_usage
+ exit 1
+ ;;
+
+esac
+shift 2
+done
+
+if [ -f ${BEAT_CONFIG} ]; then
+ for ln in `cat ${BEAT_CONFIG}`; do
+ BUILD_STRING="${BUILD_STRING}s/${ln}/g;"
+ done
+ SED_STRING=`echo ${BUILD_STRING} | sed 's/;$//'`
+fi
+# Failsafe
+if [ -z ${SED_STRING} ]; then
+ SED_STRING="s/packetbeat-/packetbeat-/g;s/filebeat-/filebeat-/g;s/topbeat-/topbeat-/g;s/winlogonbeat-/winlogonbeat-/g"
+fi
+
+DIR=dashboards
+echo "Loading dashboards to ${ELASTICSEARCH} in ${KIBANA_INDEX}"
+
+# Workaround for: https://github.com/elastic/beats-dashboards/issues/94
+${CURL} -XPUT "${ELASTICSEARCH}/${KIBANA_INDEX}"
+${CURL} -XPUT "${ELASTICSEARCH}/${KIBANA_INDEX}/_mapping/search" -d'{"search": {"properties": {"hits": {"type": "integer"}, "version": {"type": "integer"}}}}'
+
+TMP_SED_FILE="${DIR}/search/tmp_search.json"
+for file in ${DIR}/search/*.json
+do
+ NAME=`basename ${file} .json`
+ echo "Loading search ${NAME}:"
+ sed ${SED_STRING} ${file} > ${TMP_SED_FILE}
+ ${CURL} -XPUT ${ELASTICSEARCH}/${KIBANA_INDEX}/search/${NAME} \
+ -d @${TMP_SED_FILE} || exit 1
+ echo
+done
+rm ${TMP_SED_FILE}
+
+for file in ${DIR}/visualization/*.json
+do
+ NAME=`basename ${file} .json`
+ echo "Loading visualization ${NAME}:"
+ ${CURL} -XPUT ${ELASTICSEARCH}/${KIBANA_INDEX}/visualization/${NAME} \
+ -d @${file} || exit 1
+ echo
+done
+
+for file in ${DIR}/dashboard/*.json
+do
+ NAME=`basename ${file} .json`
+ echo "Loading dashboard ${NAME}:"
+ ${CURL} -XPUT ${ELASTICSEARCH}/${KIBANA_INDEX}/dashboard/${NAME} \
+ -d @${file} || exit 1
+ echo
+done
+
+for file in ${DIR}/index-pattern/*.json
+do
+ NAME=`awk '$1 == "\"title\":" {gsub(/[",]/, "", $2); print $2}' ${file}`
+ echo "Loading index pattern ${NAME}:"
+
+ ${CURL} -XPUT ${ELASTICSEARCH}/${KIBANA_INDEX}/index-pattern/${NAME} \
+ -d @${file} || exit 1
+ echo
+done