diff --git a/installer/bin/dump_kibana-objects.sh b/installer/bin/dump_kibana-objects.sh new file mode 100755 index 00000000..7c9c7f19 --- /dev/null +++ b/installer/bin/dump_kibana-objects.sh @@ -0,0 +1,62 @@ +#!/bin/bash +myDATE=$(date +%Y%m%d%H%M) +myES="http://127.0.0.1:64298/" +myINDEXCOUNT=$(curl -s -XGET ''$myES'.kibana/index-pattern/logstash-*' | tr '\\' '\n' | grep "scripted" | wc -w) +myDASHBOARDS=$(curl -s -XGET ''$myES'.kibana/dashboard/_search?filter_path=hits.hits._id&pretty&size=10000' | jq '.hits.hits[] | {_id}' | jq -r '._id') +myVISUALIZATIONS=$(curl -s -XGET ''$myES'.kibana/visualization/_search?filter_path=hits.hits._id&pretty&size=10000' | jq '.hits.hits[] | {_id}' | jq -r '._id') +mySEARCHES=$(curl -s -XGET ''$myES'.kibana/search/_search?filter_path=hits.hits._id&pretty&size=10000' | jq '.hits.hits[] | {_id}' | jq -r '._id') +myCOL1="" +myCOL0="" + +# Export index patterns +mkdir -p patterns +echo $myCOL1"### Now dumping"$myCOL0 $myINDEXCOUNT $myCOL1"index patterns." $myCOL0 +curl -s -XGET ''$myES'.kibana/index-pattern/logstash-*?' | jq '._source' > patterns/index-patterns.json +echo + +# Export dashboards +mkdir -p dashboards +echo $myCOL1"### Now dumping"$myCOL0 $(echo $myDASHBOARDS | wc -w) $myCOL1"dashboards." $myCOL0 +for i in $myDASHBOARDS; + do + echo $myCOL1"###### "$i $myCOL0 + curl -s -XGET ''$myES'.kibana/dashboard/'$i'' | jq '._source' > dashboards/$i.json + done; +echo + +# Export visualizations +mkdir -p visualizations +echo $myCOL1"### Now dumping"$myCOL0 $(echo $myVISUALIZATIONS | wc -w) $myCOL1"visualizations." $myCOL0 +for i in $myVISUALIZATIONS; + do + echo $myCOL1"###### "$i $myCOL0 + curl -s -XGET ''$myES'.kibana/visualization/'$i'' | jq '._source' > visualizations/$i.json + done; +echo + +# Export searches +mkdir -p searches +echo $myCOL1"### Now dumping"$myCOL0 $(echo $mySEARCHES | wc -w) $myCOL1"searches." $myCOL0 +for i in $mySEARCHES; + do + echo $myCOL1"###### "$i $myCOL0 + curl -s -XGET ''$myES'.kibana/search/'$i'' | jq '._source' > searches/$i.json + done; +echo + +# Pack into tar +echo $myCOL1"### Now packing archive"$myCOL0 "kibana-objects_"$myDATE".tgz" +tar cvfz kibana-objects_$myDATE.tgz patterns dashboards visualizations searches > /dev/null + +# Cleanup +rm -rf patterns dashboards visualizations searches + +# Stats +echo +echo $myCOL1"### Statistics" +echo $myCOL1"###### Dumped"$myCOL0 $myINDEXCOUNT $myCOL1"index patterns." $myCOL0 +echo $myCOL1"###### Dumped"$myCOL0 $(echo $myDASHBOARDS | wc -w) $myCOL1"dashboards." $myCOL0 +echo $myCOL1"###### Dumped"$myCOL0 $(echo $myVISUALIZATIONS | wc -w) $myCOL1"visualizations." $myCOL0 +echo $myCOL1"###### Dumped"$myCOL0 $(echo $mySEARCHES | wc -w) $myCOL1"searches." $myCOL0 +echo + diff --git a/installer/bin/restore_elk.sh b/installer/bin/restore_elk.sh index 1a1291bd..ea68c621 100755 --- a/installer/bin/restore_elk.sh +++ b/installer/bin/restore_elk.sh @@ -7,7 +7,7 @@ myCOL0="" # Check if parameter is given and file exists if [ "$myDUMP" = "" ]; then - echo $myCOL1"### Please proive a backup file name."$myCOL0 + echo $myCOL1"### Please provide a backup file name."$myCOL0 echo $myCOL1"### restore-elk.sh "$myCOL0 echo exit diff --git a/installer/bin/restore_kibana-objects.sh b/installer/bin/restore_kibana-objects.sh new file mode 100755 index 00000000..59cfdf6c --- /dev/null +++ b/installer/bin/restore_kibana-objects.sh @@ -0,0 +1,75 @@ +#!/bin/bash +myDUMP=$1 +myES="http://127.0.0.1:64298/" +myCOL1="" +myCOL0="" + +# Check if parameter is given and file exists +if [ "$myDUMP" = "" ]; + then + echo $myCOL1"### Please provide a backup file name."$myCOL0 + echo $myCOL1"### restore-kibana-objects.sh "$myCOL0 + echo + exit +fi +if ! [ -a $myDUMP ]; + then + echo $myCOL1"### File not found."$myCOL0 + exit +fi + +# Unpack tar +tar xvfz $myDUMP > /dev/null + +# Restore index patterns +myINDEXCOUNT=$(cat patterns/index-patterns.json | tr '\\' '\n' | grep "scripted" | wc -w) +echo $myCOL1"### Now restoring"$myCOL0 $myINDEXCOUNT $myCOL1"index patterns." $myCOL0 +curl -s -XDELETE ''$myES'.kibana/index-pattern/logstash-*' > /dev/null +curl -s -XPUT ''$myES'.kibana/index-pattern/logstash-*' -T patterns/index-patterns.json > /dev/null +echo + +# Restore dashboards +myDASHBOARDS=$(basename -s .json -a dashboards/*.json) +echo $myCOL1"### Now restoring "$myCOL0$(echo $myDASHBOARDS | wc -w)$myCOL1 "dashboards." $myCOL0 +for i in $myDASHBOARDS; + do + echo $myCOL1"###### "$i $myCOL0 + curl -s -XDELETE ''$myES'.kibana/dashboard/'$i'' > /dev/null + curl -s -XPUT ''$myES'.kibana/dashboard/'$i'' -T dashboards/$i.json > /dev/null + done; +echo + +# Restore visualizations +myVISUALIZATIONS=$(basename -s .json -a visualizations/*.json) +echo $myCOL1"### Now restoring "$myCOL0$(echo $myVISUALIZATIONS | wc -w)$myCOL1 "visualizations." $myCOL0 +for i in $myVISUALIZATIONS; + do + echo $myCOL1"###### "$i $myCOL0 + curl -s -XDELETE ''$myES'.kibana/visualization/'$i'' > /dev/null + curl -s -XPUT ''$myES'.kibana/visualization/'$i'' -T visualizations/$i.json > /dev/null + done; +echo + +# Restore searches +mySEARCHES=$(basename -s .json -a searches/*.json) +echo $myCOL1"### Now restoring "$myCOL0$(echo $mySEARCHES | wc -w)$myCOL1 "searches." $myCOL0 +for i in $mySEARCHES; + do + echo $myCOL1"###### "$i $myCOL0 + curl -s -XDELETE ''$myES'.kibana/search/'$i'' > /dev/null + curl -s -XPUT ''$myES'.kibana/search/'$i'' -T searches/$i.json > /dev/null + done; +echo + +# Clean up +rm -rf patterns dashboards visualizations searches + +# Stats +echo +echo $myCOL1"### Statistics" +echo $myCOL1"###### Restored"$myCOL0 $myINDEXCOUNT $myCOL1"index patterns." $myCOL0 +echo $myCOL1"###### Restored"$myCOL0 $(echo $myDASHBOARDS | wc -w) $myCOL1"dashboards." $myCOL0 +echo $myCOL1"###### Restored"$myCOL0 $(echo $myVISUALIZATIONS | wc -w) $myCOL1"visualizations." $myCOL0 +echo $myCOL1"###### Restored"$myCOL0 $(echo $mySEARCHES | wc -w) $myCOL1"searches." $myCOL0 +echo + diff --git a/installer/data/kibana-objects.tgz b/installer/data/kibana-objects.tgz new file mode 100644 index 00000000..937bf8b4 Binary files /dev/null and b/installer/data/kibana-objects.tgz differ diff --git a/preseed/tpot.seed b/preseed/tpot.seed index 5bc51361..032bfd20 100755 --- a/preseed/tpot.seed +++ b/preseed/tpot.seed @@ -100,7 +100,7 @@ tasksel tasksel/first multiselect ubuntu-server ######################## ### Package Installation ######################## -d-i pkgsel/include string apache2-utils apparmor apt-transport-https aufs-tools bash-completion build-essential ca-certificates cgroupfs-mount curl dialog dnsutils docker.io dstat ethtool genisoimage git glances html2text htop iptables iw libltdl7 lm-sensors man nginx-extras nodejs npm ntp openssh-server openssl syslinux psmisc pv python-pip vim wireless-tools wpasupplicant +d-i pkgsel/include string apache2-utils apparmor apt-transport-https aufs-tools bash-completion build-essential ca-certificates cgroupfs-mount curl dialog dnsutils docker.io dstat ethtool genisoimage git glances html2text htop iptables iw jq libltdl7 lm-sensors man nginx-extras nodejs npm ntp openssh-server openssl syslinux psmisc pv python-pip vim wireless-tools wpasupplicant ################# ### Update Policy