Mit Proxmox lassen sich virtuelle Maschinen und LXC Container sehr einfach betreiben. Egal ob es das kleine Homelab oder eine Enterprise Umgebung ist. Es ist sowohl der standalone Betrieb mit einem einzigen Server als auch ein Cluster mit beliebig vielen Servern für Lastverteilung und Hochverfügbarkeit machbar. Um einen guten Überblick zu haben, was auf der Infrastruktur alles passiert, ist ein Proxmox Monitoring Pflicht. Dazu wird durch Proxmox selbst schon eine gute Basis direkt bereitgestellt. Es besteht die Möglichkeit, die vorhandenen Metriken direkt in eine InfluxDB zu schreiben.
Dafür gibt es direkt auf der Ebene „Datacenter“ den Menüpunkt „Metric Server“. Hier lässt sich die Verbindung zu einer vorhandenen InfluxDB definieren.

Hierbei gibt es aber aktuell (PVE Version 9.2) noch ein kleines Problem. Die Integration ist für InfluxDB in den Versionen 1 und 2. Wer jedoch InfluxDB in der aktuellen Version v3 einsetzt, wird nicht alle Metriken erhalten, da teilweise Informationen über das vorhandene Storage im „falschen“ Datenformat gesendet werden und von der InfluxDB nicht angenommen werden. Im System Log des Proxmox Servers tauchen dann auch entsprechende Fehler auf.
metrics send error 'InfluxDBv3': 400 Bad Request
Es ist somit also nicht direkt möglich, alle vorhandenen Metriken auszuwerten. Im Proxmox Forum wird das Problem auch ausführlicher behandelt. Hier wird durch einen User auch eine Lösung beschrieben. Die Daten sollen nicht direkt an eine InfluxDB v3 gesendet werden, sondern erst an einen Telegraf Agent, der die Datentypen anpasst und diese dann an die InfluxDB v3 weiterleitet.
Die Lösung klingt erstmal schlüssig und hat auch durchaus Vorteile, da der Telegraf Agent bei Bedarf auch noch weitere Anpassungen an den Daten vornehmen kann. Allerdings hat die beschriebene Lösung bei mir nicht funktioniert. Die Datentypen sorgten weiter für Probleme. Durch eine kleine Anpassung an der Telegraf Konfiguration konnte ich das Problem jedoch selbst lösen und habe nun alle verfügbaren Daten in meiner InfluxDB v3.
Der Telegraf Agent sollte auf einem eigenen System und nicht direkt auf dem Proxmox Server installiert werden. Die offizielle Dokumentation hierfür ist ausreichend.
Folgende Telegraf Konfiguration löst für mich das Problem. In der Sektion „inputs.influxdb_v2_listener“ muss ein Token für die Authentifizierung angegeben werden. Dies muss in diesem Fall kein offizieller InfluxDB Token sein. Wichtig ist nur, dass dieser Token auch in der Konfiguration des Metric Server eingetragen wird. In der Sektion „outputs.influxdb_v3“ muss der korrekte InfluxDB v3 Server, die zu verwendende Datenbank und der korrekte Token angegeben werden.
[agent]
interval = "10s"
flush_interval = "5s"
###########################################################################
# HTTP INPUT (Influx Line Protocol over HTTP)
###########################################################################
[[inputs.influxdb_v2_listener]]
service_address = ":8086"
token = "XXX"
###########################################################################
# PROCESSORS: InfluxDB v2 Compatibility (field and tag with same name)
###########################################################################
#[[processors.rename]]
# [[processors.rename.replace]]
# field = "type"
# dest = "type_field"
# Tags in Fields konvertieren
[[processors.converter]]
[processors.converter.tags]
string = ["type"]
###########################################################################
# OUTPUT: InfluxDB v3
###########################################################################
[[outputs.influxdb_v3]]
urls = ["http://10.20.10.200:8181"]
token = "XXX"
database = "proxmox"
convert_uint_to_int = true
Sobald die Anpassungen erledigt sind, kann Telegraf gestartet werden.
sudo systemctl start telegraf.service
Jetzt werden die Proxmox Monitoring Metriken direkt an den Telegraf Agent gesendet, dieser verarbeitet die Daten und schickt diese passend an die InfluxDB v3. Wer bisher allerdings ein Grafana Dashboard für Proxmox und InfluxDB verwendet, wird dieses vermutlich nicht mehr ohne Anpassungen nutzen können, da InfluxDB v3 auf SQL und nicht mehr auf Flux setzt. Die Abfragesprache ist also eine andere und daher muss auch das Dashboard angepasst werden. Ich habe dafür bisher das sehr schöne vorgefertigte Dashboard verwendet. Dieses habe ich komplett von Flux auf SQL geändert.

Sobald alle Panels von Flux auf SQL geändert wurden, stehen wieder alle Informationen zu Verfügung und das Dashboard ist komplett auf InfluxDB v3 umgestellt.

Um also ein schönes Proxmox Monitoring mit einer aktuellen InfluxDB v3 zu haben, ist derzeit ein kleiner Zwischenschritt mit Telegraf erforderlich, um die Daten anzupassen. Wer ein bereits vorhandenes Dashboard verwenden möchte, muss dies entweder auf die SQL Abfragesprache anpassen oder direkt ein neues Dashboard erstellen. Der Aufwand lohnt sich auf alle Fälle, um seine Proxmox Infrastruktur im Blick zu haben und dabei auch einen aktuellen Technologie Stack zu verwenden. Bei Bedarf helfe ich gerne weiter.