RaspberryPi-Docker-Grafana

Raspberry Pi Docker Grafana

# REF: https://grafana.com/grafana/download/9.3.1?platform=docker <- Latest from December 10, 2022

time docker pull grafana/grafana-enterprise:9.3.1


##################
# Manual testing #
##################
docker run --rm --name=grafana -p 3000:3000 grafana/grafana-enterprise:9.3.1
docker run -d --name=grafana -p 3000:3000 grafana/grafana-enterprise:9.3.1
docker ps
# http://RaspberryPiAddress:3000 <-- admin/admin and set a new password
docker exec -it grafana bash
ls -alF /etc/grafana
ls -alF /var/lib/grafana
#docker stop grafana
#docker rm grafana


####################################################
# Grafana (in a Docker Container) for Raspberry Pi #
#                         REF: https://grafana.com #
####################################################
# First time setup #
####################
# Grafana (stand-alone for Docker Swarm)
# REF: https://hub.docker.com/r/grafana/grafana/
# and http://docs.grafana.org/installation/configuration/

# Create the bind mount directories and copy files to the correct node based on constraints in the docker-compose!
mkdir -p /opt/docker/grafana/etc/grafana
mkdir -p /opt/docker/grafana/var/lib/grafana
chmod a+rw -R /opt/docker/grafana

##########
# Deploy #
##########
# Deploy the stack into a Docker Swarm
docker stack deploy -c docker-compose.yml grafana-stack
#docker stack rm grafana-stack

# Verify
docker service ls | grep grafana-stack
docker service logs -f grafana-stack_grafana
###############################################################################

###############################################################################
# Query examples #
##################

# Guage: Current Solar Flux Index
from(bucket:"db_map")
    |> range(start: -2m, stop: now())
    |> filter(fn: (r) => r._measurement == "telegraf_solar_data" and r._field == "sfi")

# Guage: Current Planetary A
from(bucket:"db_map")
    |> range(start: -2m, stop: now())
    |> filter(fn: (r) => r._measurement == "telegraf_solar_data" and r._field == "a")

# Guage: Current Planetary K
from(bucket:"db_map")
    |> range(start: -2m, stop: now())
    |> filter(fn: (r) => r._measurement == "telegraf_solar_data" and r._field == "k")

# Time series: Solar Flux Index
from(bucket:"db_map")
    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
    |> filter(fn: (r) => r._measurement == "telegraf_solar_data" and r._field == "sfi")
    |> aggregateWindow(every: $__interval, fn: mean)

# Time series: Planetary A
from(bucket:"db_map")
    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
    |> filter(fn: (r) => r._measurement == "telegraf_solar_data" and r._field == "a")
    |> aggregateWindow(every: $__interval, fn: mean)

# Time series: Planetary K
from(bucket:"db_map")
    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
    |> filter(fn: (r) => r._measurement == "telegraf_solar_data" and r._field == "k")
    |> aggregateWindow(every: $__interval, fn: mean)

# Time series: Combined - Solar Flux Index, Planetary A and Planetary K
from(bucket:"db_map")
    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
    |> filter(fn: (r) => r._measurement == "telegraf_solar_data" and r._field == "sfi" or r._field == "k" or r._field == "a")
    |> aggregateWindow(every: $__interval, fn: mean)