Skip to content

Commit ef8fd7e

Browse files
committed
add demo script
1 parent 1eca1a1 commit ef8fd7e

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

setup-demo-environment.sh

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#!/usr/bin/env bash
2+
3+
set -e -o pipefail
4+
5+
6+
readonly CONTAINER_NAME="grafana-netdata-plugin-demo"
7+
readonly CONTAINER_PORT=3000
8+
readonly GRAFANA_DOCKER_IMAGE="grafana/grafana:9.1.6"
9+
readonly NETDATA_PLUGIN_REPO="netdata/netdata-grafana-datasource-plugin"
10+
readonly PROGNAME=$(basename $0)
11+
readonly ARG=$1
12+
13+
function pre_check() {
14+
docker version &>/dev/null || echo "Problems with docker! Check if docker is installed or/and docker daemon is running."
15+
if [ "$(docker ps --filter name=$CONTAINER_NAME | wc -l)" -eq 2 ]; then
16+
echo "Docker container $CONTAINER_NAME is already running!"
17+
exit 1
18+
fi
19+
command -v jq &>/dev/null || ( echo "no jq"; exit 1;)
20+
command -v curl &>/dev/null || ( echo "no curl"; exit 1;)
21+
}
22+
23+
function get_latest_plugin() {
24+
curl -s https://api.github.com/repos/${NETDATA_PLUGIN_REPO}/releases/latest \
25+
| jq -r '.assets[] | select(.name|match("zip$")) | .browser_download_url'
26+
}
27+
28+
function run() {
29+
echo "get the latest netdata plugin"
30+
declare plugin_url
31+
plugin_url="$(get_latest_plugin)"
32+
set -x
33+
docker run -d -p 127.0.0.1::$CONTAINER_PORT -e GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=netdata-datasource \
34+
--name $CONTAINER_NAME --entrypoint /bin/sleep $GRAFANA_DOCKER_IMAGE inf
35+
docker exec -it $CONTAINER_NAME \
36+
bash -c "cd /var/lib/grafana/plugins && wget $plugin_url && unzip *.zip"
37+
docker exec -d $CONTAINER_NAME bash -c "/run.sh"
38+
set +x
39+
}
40+
41+
function grafana_url() {
42+
endpoint=$(docker ps --filter "name=$CONTAINER_NAME" --format '{{ index (split .Ports "-") 0 }}')
43+
echo "Grafana with netdata plugin is available under: http://${endpoint} use admin/admin credentials to get access."
44+
}
45+
46+
function remove() {
47+
set -x
48+
docker rm -f $CONTAINER_NAME
49+
set +x
50+
}
51+
52+
53+
function usage() {
54+
cat <<-EOF
55+
usage: $PROGNAME options
56+
57+
$PROGNAME spin up Grafana instance with netdata datasource plugin.
58+
59+
OPTIONS
60+
run run grafana docker container with netdata datasource plugin
61+
remove remove docker container
62+
EOF
63+
}
64+
65+
if [ "$ARG" == "run" ]; then
66+
pre_check
67+
run
68+
grafana_url
69+
elif [ "$ARG" == "remove" ]; then
70+
remove
71+
else
72+
usage
73+
fi

0 commit comments

Comments
 (0)