
Im letzen Beitrag habe ich beschreiben, wie man Grafana mit mit Redis als Remote cache verwendet. Jetzt geht es darum, wie man die SQLite im Grafana gegen eine PostgreSQL-Datenbank tauscht.
Disclaimer:
Ich habe hier alles in Dockercontainern laufen und verwende Docker-compose. Wer z.B. alles direkt installiert muss die entsprechenen Parameter (z.B.: IP-Addressen anpassen) und kann die docker-spezifischen Sachen nicht nutzen. Wer schon MySQL am laufen hat kann die Datenbank auch verwenden, darauf werde ich hier aber nicht weiter eingehen.
Wichtig
Man sollte die Dashboards voher sichern, indem man bei jedem Dashboard auf das Teilen-symbol klickt auf export geht und Save-to-file auswählt.
Alle User gehen Dabei verloren und müssen danach neu angelegt werden.
Wir beginnen damit ein Netzwerk in docker zu erstellen. Dafür fügt man folgendes ganz unten in der Docker-compose Datei ein:
networks:
postgres:
ipam:
driver: default
config:
- subnet: 172.30.11.8/29
gateway: 172.30.11.9
Wer schon Netzwerke in der Docker-compose Datei hat lässt das networks: einfach weg.
Als nächtes fügt man folgendes in die Docker-compose Datei ein (und ändert eventuell die Pfade):
postgres:
image: postgres
container_name: postgres
restart: always
#network_mode: host
ports:
- "5432:5432"
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
- POSTGRES_DB=admin
- PGPASSWORD=admin
volumes:
- /data/docker/postgres:/var/lib/postgresql/data
# - /etc/localtime:/etc/localtime:ro
networks:
- postgres
Alles anzeigen
Danach führt man docker-compose up -d aus, um die Datenbank herunterzuladen un zu starten.
Folgend installiert man den PostgresSQL-client unter Ubuntu/Debian geht das mit sudo apt-get install postgresql-client. Unter ArchLinux geht das mit sudo pacman -S postgresql-libs.
Als nächtes meldet man sich auf der Datenbank mit psql -h <IP-von-dem-Rechner-auf-dem-die-Datenbank-laeuft> -p 5432 -U admin -W an und erstellt einen neuen user und eine Datenbank mit dem Namen grafana: CREATE USER grafana WITH PASSWORD 'passwort' CREATEDB; (Das Passwort sollte man ändern.). Verlassen tut man das Tool mit \q.
Als nächstes muss man Grafana noch das passende Netzwerk zuweisen und dafür sorgen, dass Grafana erst startet, wenn Postgre läuft. Dafür setzt man folgenden Abschnitt noch in den Block der Configuration von Grafana:
Nun öffnet man die Configurationsdatei von Grafana und sucht den Abschnitt database. Jetzt tauscht man type = sqlite3 gegen type = postgres. Folgend setzt folgendes darunter
host = postgres:5432
name = grafana
user = grafana
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = passwort
und passt die Parameter an.
Als letztes führt man wieder [docker-compose up -d] in dem Ordner, indem die Docker-compose Datei liegt aus und legt die User wieder an und lädt die gesicherten Dashboards hoch.
Docker-compose.yaml mit Redis:
version: '3'
services:
redis:
container_name: redis
restart: always
image: redis:alpine
#network_mode: host
command:
- --loglevel warning
volumes:
- /data/docker/redis:/var/lib/redis:Z
networks:
- redis
postgres:
image: postgres
container_name: postgres
restart: always
#network_mode: host
ports:
- "5432:5432"
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
- POSTGRES_DB=admin
- PGPASSWORD=admin
volumes:
- /data/docker/postgres:/var/lib/postgresql/data
# - /etc/localtime:/etc/localtime:ro
networks:
- postgres
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: always
ports:
- "3000:3000"
volumes:
- /data/docker/grafana/config:/etc/grafana:rw
links:
- redis
- postgres
depends_on:
- redis
- postgres
networks:
- redis
- postgres
# Networks
networks:
redis:
ipam:
driver: default
config:
- subnet: 172.30.11.0/29
gateway: 172.30.11.1
postgres:
ipam:
driver: default
config:
- subnet: 172.30.11.8/29
gateway: 172.30.11.9
Alles anzeigen
docker-compose.yaml ohne Redis
version: '3'
services:
postgres:
image: postgres
container_name: postgres
restart: always
#network_mode: host
ports:
- "5432:5432"
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
- POSTGRES_DB=admin
- PGPASSWORD=admin
volumes:
- /data/docker/postgres:/var/lib/postgresql/data
# - /etc/localtime:/etc/localtime:ro
networks:
- postgres
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: always
ports:
- "3000:3000"
volumes:
- /data/docker/grafana/config:/etc/grafana:rw
links:
- postgres
depends_on:
- postgres
networks:
- postgres
# Networks
networks:
postgres:
ipam:
driver: default
config:
- subnet: 172.30.11.8/29
gateway: 172.30.11.9
Alles anzeigen
Quellen:
https://help.ubuntu.com/community/PostgreSQL