Monitoring Dashboard für Proxmox mit InfluxDB und Grafana – Teil 1
Vorraussetzungen:
- Proxmox 7.x
- Server (Debian [bullseye])
Dieser Beitrag behandelt das Aufsetzen einer rudimentären InfluxDB Installation auf einem Debian Server. In diesem Beitrag wurde bewusst auf Techniken wie Docker verzichtet.
Aneignung administrativer Rechte unter Debian
Um unter Debian mit dem eigenen Benutzer administrative Aufgaben erfüllen zu können, muss dieser Benutzer Teil der „sudo“-Gruppe sein und einen Eintrag in der „sudoers“-Datei haben. Dazu wechseln wir den Benutzer-Kontext nach „root“ mit dem Befehl:
|
1 |
su - |
Dann fügen wir unseren Benutzer der Gruppe „sudo“ hinzu:
|
1 |
usermod -aG sudo username |
Im zweiten Schritt sorgen wir für den Eintrag in die Datei „/etc/sudoers“.
|
1 |
nano /etc/sudoers |
Wir fügen ans Ende der Datei folgende Zeile an. Damit erlauben wir die Befehlsausführung für alle Befehle.
|
1 |
alex ALL=(ALL) NOPASSWD:ALL |
Installation und Konfiguration von InfluxDB
Um InfluxDB auf einem Debian System zu installieren, muss zunächst das InfluxDB Repository zu den Paketquellen hinzugefügt werden. Dazu wird im ersten Schritt der Schlüssel des InfluxDB Repository zum eigenen Systemschlüsselbund hinzugefügt. Dies ist wichtig, damit die signierten Pakete von InfluxDB in zukünftigen Update- und Upgradeprozessen verifiziert werden können.
|
1 |
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - |
Im nächsten Schritt muss das Repository zu den Systemrepos hinzugefügt werden (damit wir die Paketquelle mit aptitude verwenden können). Hierzu werden zunächst mit
|
1 |
source /etc/os-release |
die „Betriebssystemidentifizierungsdaten“ (wie es so schön in der manpage heißt) geladen. Anschließend schreiben wir diese (konkret: Distribution-ID, Distribution-Codename) in die Datei „etc/apt/sources.list.d/influxdb.list“.
|
1 |
echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list |
Damit kann aptitude beim nächsten Update diese Quelle laden. Dies erledigen wir ebenfalls umgehend mit dem Befehl:
|
1 |
sudo apt update |
Jetzt können wir InfluxDB installieren. Dies gelingt nun einfach mit dem Befehl:
|
1 |
sudo apt install influxdb |
Nach erfolgreicher Installation müssen wir den InfluxDB Dienst aktivieren.
|
1 |
sudo systemctl unmask influxdb.service |
Anschließend starten wir den Dienst und überprüfen den Status.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
sudo systemctl start influxdb sudo systemctl status influxdb.service ● influxdb.service - InfluxDB is an open-source, distributed, time series datab> Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor pres> Active: active (running) since Fri 2023-02-24 20:39:49 CET; Docs: https://docs.influxdata.com/influxdb/ Process: 324 ExecStart=/usr/lib/influxdb/scripts/influxd-systemd-start.sh (> Main PID: 357 (influxd) Tasks: 11 (limit: 2337) Memory: 253.3M CPU: 22min 15.531s CGroup: /system.slice/influxdb.service └─357 /usr/bin/influxd -config /etc/influxdb/influxdb.conf |
Läuft der Dienst einwandfrei können wir diesen in den Autostart (Systemstart) mit aufnehmen.
|
1 |
sudo systemctl enable influxdb.service |
Nun ist es an der Zeit InfluxDB einzurichten. Hierzu rufen wir InfluxDB mit dem Befehl „influx“ auf.
|
1 |
influx |
Alle weiteren Befehle führen wir nun im Kontext von InfluxDB aus. Im ersten Schritt sichern wir unseren Datenbankserver ab. Dazu erstellen wir einen administrativen Benutzer:
|
1 |
CREATE USER admin WITH PASSWORD 'supergeheim' WITH ALL PRIVILEGES |
Im Weiteren erstellen wir eine neue Datenbank, in der wir unsere Metriken sammeln möchten.
|
1 |
CREATE DATABASE „alexproxmox“ |
Haben wir unsere Datenbank erfolgreich erstellt erstellen wir einen Benutzer und geben diesem Vollzugriff auf unsere Datenbank.
|
1 2 |
CREATE USER „prox“ WITH PASSWORD ‚meinPasswort‘ GRANT ALL ON „alexproxmox“ TO „prox“ |
Unser Werk können wir nun begutachten, in dem wir uns die Rechte für unseren Benutzer ansehen mit dem Befehl:
|
1 |
SHOW GRANTS FOR "alex" |
Wir verlassen indessen die Influx-Umgebung mit dem Befehl „quit“ und bereiten die Konfiguration des Servers für das Empfangen der Proxmox Metriken vor.
|
1 |
quit |
Im Kontext unseres Betriebssystems öffnen wir nun die Konfigurationsdatei von InfluxDB und bearbeiten den Bereich „UDP“, da Proxmox seine Metriken gerne per UDP versenden möchte.
|
1 |
sudo nano /etc/influxdb/influxdb.conf |
Mit Strg+W suchen wir nun den UDP-Abschnitt und bearbeiten diesen wie folgt:
|
1 2 3 4 5 6 |
[[udp]] enabled = true bind-address = "0.0.0.0:8089" database = "alexproxmox" batch-size = 1000 batch-timeout = "1s" |
Anschließend speichern wir die Konfigurationsdatei mit Strg+O und schließen den Editor mit Strg+X. Damit die Änderungen wirksam werden, muss der InfluxDB-Dienst neu gestartet werden.
|
1 |
service influxdb restart |
Konfiguration von Proxmox
Auf der Benutzeroberfläche von Proxmox haben wir auf der Datacenter-Ebene die Möglichkeit externe Metrik-Server zu konfigurieren. Im „Metrik Server“ Kontext klicken wir auf den Button „Add“ und wählen den Typ „InfluxDB“. Der Port und Protokoll müssen natürlich zur Konfiguration in der InfluxDB Konfigurationsdatei passen.

Sind alle Einstellungen korrekt, sollten jetzt Metriken in unsere InfluxDB fließen. Dies können wir überprüfen, in dem wir auf unserem InfluxDB Server den influx Befehl ausführen und uns im Kontext von influx und unserer Datenbank die Messwerte ausgeben lassen:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ influx Connected to http://localhost:8086 version 1.8.10 InfluxDB shell version: 1.8.10 > USE alexproxmox Using database alexproxmox > SHOW MEASUREMENTS name: measurements name ---- ballooninfo blockstat cpustat memory nics proxmox-support system |
Installation und Konfiguration von Grafana
Um Grafana zu installieren, müssen zunächst die Pakete „apt-transport-https“ und „software-properties-common“ sowie „wget“ installiert werden.
|
1 2 |
sudo apt-get install -y apt-transport-https sudo apt-get install -y software-properties-common wget |
Haben wir diese drei Applikationen installiert, müssen wir ebenfalls wieder den Grafana Schlüssel zu unserem Schlüsselbund hinzufügen, um die signierten aptitude Pakete am Ende verifizieren zu können.
|
1 |
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key |
Anschließend wird ebenfalls wieder das Grafana Repository zu den Paketquellen hinzugefügt:
|
1 |
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list |
Damit diese Anpassungen greifen aktualisieren wir die Paketquellen mit
|
1 |
sudo apt update |
Wir installieren das neueste Open-Source-Softwarerelease von Grafana mit
|
1 |
sudo apt-get install grafana |
Ist Grafana erfolgreich installiert, veranlassen wir systemd dazu, alle Konfigurationsdateien neu zu laden und Units neu zu starten.
|
1 |
sudo systemctl daemon-reload |
Damit haben wir sichergestellt, dass die Grafana Dienste dem System bekannt sind. Wir können diese nun über systemctl starten.
|
1 |
sudo systemctl start grafana-server |
Überprüfen ob Grafana nun läuft können wir mit
|
1 2 3 4 5 6 7 8 9 10 11 |
sudo systemctl status grafana-server ● grafana-server.service - Grafana instance Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled; vendo> Active: active (running) since Fri 2023-02-24 20:39:43 CET; Docs: http://docs.grafana.org Main PID: 323 (grafana-server) Tasks: 13 (limit: 2337) Memory: 153.8M CPU: 6min 3.752s CGroup: /system.slice/grafana-server.service └─323 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini -> |
Wie bereits zuvor mit InfluxDB fügen wir dem Server Grafana in den Autostart hinzu:
|
1 |
sudo systemctl enable grafana-server.service |
Damit läuft Grafana und kann nun verwendet werden. Wir greifen auf das Webinterface über Port 3000 zu. Bei der ersten Anmeldung über das Webinterface (Benutzername und Passwort jeweils „admin“) nötigt uns Grafana dazu, das Passwort des Administrators zu ändern. Anschließend können wir mit dem Design eines ersten Dashboards beginnen.
Quellen
https://docs.influxdata.com/influxdb/v1.8/administration/authentication_and_authorization/
https://linuxize.com/post/how-to-add-user-to-sudoers-in-debian/
https://docs.influxdata.com/influxdb/v1.7/introduction/installation/
https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/