Grafana und Postgres

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:

Code
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):

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:

Code
    links:
      - postgres
    depends_on:
      - postgres
    networks:
      - postgres


Nun öffnet man die Configurationsdatei von Grafana und sucht den Abschnitt database. Jetzt tauscht man type = sqlite3 gegen type = postgres. Folgend setzt folgendes darunter

Code
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:


docker-compose.yaml ohne Redis

Quellen:

https://help.ubuntu.com/community/PostgreSQL

https://bbs.archlinux.org/viewtopic.php?id=113139

https://www.postgresql.org/docs/8.0/sql-createuser.html