Zum Inhalt springen

Proxmox Datacenter Manager

Die Konsole, die mehrere Proxmox-VE-Cluster und Proxmox-Backup-Server-Instanzen föderiert: welche Instanzen sie erreicht, der gesamte Bestand auf einen Blick, die Tasks, die irgendwo fehlschlugen, und die eigene Gesundheit der Konsole.

Ein Monitor für den Bestand, oder ein Monitor pro Cluster?

Abschnitt betitelt „Ein Monitor für den Bestand, oder ein Monitor pro Cluster?“

Ein Datacenter-Manager-Monitor ist kein Ersatz für Proxmox-VE- und Proxmox-Backup-Server-Monitore. Er beantwortet eine andere Frage.

Datacenter-Manager-MonitorEin Monitor pro Cluster und pro Backup-Server
Zu erstellende Monitoreeineseines pro Cluster, eines pro Backup-Server
Zu verwaltende Zugangsdatenein Token, auf der Konsoleein Token pro Instanz
Last auf jedem Clusterkeine von uns: Wir lesen den eigenen Cache der Konsoleeine Abfrage pro Intervall, pro Cluster
Was Sie bekommenErreichbarkeit, Version, Gast- und Knotenzahlen, CPU-, Speicher- und Storage-Totals, fehlgeschlagene Tasksall das plus Gäste einzeln, Snapshots, Backup-Jobs, HA, Ceph, Replikation, Platten und SMART, ZFS-Pools, der 30-Tage-Backup-Kalender
Was Sie nicht bekommenPro-Gast-Zeitreihen, Pro-Datastore-Details, Platten, Snapshots, Task-Logsein einziges bestandsweites Total
Hauptfehlerdie Konsole kann eine Instanz nicht erreichender Cluster antwortet uns nicht

Unsere Empfehlung. Fügen Sie den Datacenter-Manager-Monitor hinzu, wenn Sie bereits eine Konsole betreiben und eine Seite wollen, die sagt, ob der Bestand vollständig ist — es ist der günstigste Weg zu bemerken, dass ein entfernter Standort weggefallen ist, und es kostet die Cluster nichts. Fügen Sie einen dedizierten Monitor für jeden Cluster und Backup-Server hinzu, den Sie tatsächlich betreiben: Dort liegt die Tiefe, und das sagt Ihnen, welche VM stoppte oder welches Backup fehlschlug. Die beiden überlappen, ohne zu kollidieren; ein fehlgeschlagenes Backup hebt dann einen Alarm vom PBS-Monitor (mit dem Task-Log) und einen von der Konsole (die die Instanz benennt). Schalten Sie die Task-Regel der Konsole stumm, wenn Sie das redundant finden, oder begrenzen Sie sie auf die Instanzen, für die Sie keinen dedizierten Monitor haben.

Betreiben Sie überhaupt keine Konsole, installieren Sie keine nur zur Überwachung: dedizierte Monitore sehen strikt mehr.

Über die generischen Diagramme hinaus zeigt ein Datacenter-Manager- Monitor drei Panels, aus dem gelesen, was die Abfrage gespeichert hat — das Öffnen der Seite fragt weder die Konsole noch die von ihr verwalteten Cluster ab:

  • Federated instances — ein Streifen mit Bestandstotals (Instanzen, Knoten online, laufende und gestoppte Gäste, Kerne, Speicher, Storage), dann eine Zeile pro föderierter Instanz. Instanzen, die die Konsole nicht erreichen kann, sortieren zuerst, dann die mit fehlgeschlagenen Tasks, dann die mit Versionsrückstand. Jede Zeile gibt das Produkt (Proxmox VE oder Backup Server), die Version, Knoten- und Gastzahlen, Speicher- und Storage-Nutzung, den Abonnementstatus, die konfigurierte Adresse, wann die Konsole zuletzt von ihr sammelte — und, wenn es fehlschlug, die Meldung, die die Konsole selbst empfing. Diese Meldung ist das Einzige, das den Ausfall erklärt, daher wird sie wortgetreu angezeigt.
  • Failures — jeder im Bestand in den letzten 14 Tagen fehlgeschlagene Task, neueste zuerst, mit der Instanz, auf der er lief, der Art des Tasks, wann er begann, wie lange er dauerte und der Fehlermeldung. Das Task-Log selbst bleibt auf der Instanz: Öffnen Sie es dort, oder fügen Sie diesen Cluster als eigenen Monitor hinzu, wo Show log es abruft.
  • Console host — die Maschine, die die Konsole betreibt: CPU, Speicher, Root-Dateisystem, Uptime und Kernel, seine Zertifikate mit den verbleibenden Tagen bis zum Ablauf, die auf ein Update wartenden Pakete, und der Abonnementstatus der verwalteten Knoten. Das ganze Panel ist optional: Ein Token ohne Sys.Audit liest nichts davon, und das Panel sagt das, statt Nullen zu zeigen.

Die Task-Historie wird in SQLite gehalten (pdm_task_history, 19 Tage, höchstens 5000 Tasks pro Monitor), sodass die Fehlerliste Neustarts überlebt, obwohl jede Abfrage nur das Task-Fenster betrachtet.

Alle Metriken haben das Präfix dumbmonit_pdm_.

FamilieMetrikenLabels
Bestandremotes_total, remotes_failed, nodes_online, nodes_offline, cpu_used_cores, cpu_total_cores, memory_used_bytes, memory_total_bytes, memory_used_percent, storage_used_bytes, storage_total_bytes, storage_used_percent, datastores_total
Bestandsgästeguests_running, guests_stoppedguest_type (qemu, lxc)
Instanzenremote_reachable (1: die Konsole erhielt eine Antwort, 0: nicht), remote_version_info (Vorhandensein-Zeitreihe, Label version), remote_version_behind, remote_nodes_online, remote_nodes_offline, remote_guests_running, remote_guests_stopped, remote_cpu_used_cores, remote_cpu_total_cores, remote_cpu_used_percent, remote_memory_used_bytes, remote_memory_total_bytes, remote_memory_used_percent, remote_storage_used_bytes, remote_storage_total_bytes, remote_storage_used_percent, remote_datastores, remote_subscription_active, remote_updates_pending, remote_last_collection_age_seconds, remote_tasks_failedremote, type (pve, pbs)
Tasks im Fenstertasks_total, tasks_failed, tasks_running
Console hostnode_cpu_percent, node_cpu_count, node_iowait_percent, node_load1, node_memory_used_bytes, node_memory_total_bytes, node_memory_used_percent, node_swap_used_bytes, node_swap_total_bytes, node_rootfs_used_bytes, node_rootfs_total_bytes, node_rootfs_percent, node_uptime_seconds, node_kernel_info, node_updates_pending, version_info
Konsolen-Zertifikatenode_certificate_expiry_days (negativ nach Ablauf)file (proxy.pem)
Abonnementsubscription_active (Label status), subscription_active_nodes, subscription_total_nodes
Sammlungup, scrape_errors, scrape_duration_seconds

Ein Task, der mit WARNINGS: n endet, zählt als erfolgreich. Nur ein fehlschlagendes GET /version verurteilt die gesamte Abfrage; jeder andere fehlschlagende Aufruf wird in scrape_errors gezählt, und eine von der Konsole nicht erreichbare Instanz ist eine Messung (remote_reachable = 0), kein Sammlungsfehler.

remote_version_behind vergleicht die föderierten Instanzen miteinander, Produkt für Produkt: Es ist 1, wenn ein anderer Proxmox-VE-Cluster — oder ein anderer Backup-Server — im selben Bestand eine neuere Version läuft. Es ist kein Vergleich mit dem, was Proxmox veröffentlicht; eine Abfrage hat keinen Grund, ins Internet zu greifen. Die Zeitreihe existiert nur für eine Instanz, deren Version gelesen wurde, daher gilt eine nicht erreichbare Instanz nie als aktuell.

Storage-Totals zählen jeden Storage-Namen einmal pro Instanz: Ein von fünf Knoten eines Clusters geteilter Storage wird einmal gezählt, nicht fünfmal.

Geltende eingebaute Regeln: Monitor unreachable, Federated instance unreachable, Federated instance behind, Task failed on a federated instance, Datacenter console disk almost full, Datacenter console certificate expiring, Datacenter console updates pending. Benachrichtigungen benennen die betroffene Instanz.

Was in Proxmox Datacenter Manager vorzubereiten ist

Abschnitt betitelt „Was in Proxmox Datacenter Manager vorzubereiten ist“

Die Schritte unten sind die, die der Hinweis neben dem Formular zeigt. Das Prinzip: ein für die Überwachung reservierter Benutzer, ein Token mit einer nur-lesenden Rolle — nie das Konto, mit dem Sie sich einloggen.

  1. Öffnen Sie in der Konsole Configuration → Access Control → Users und klicken Sie auf Add. Benennen Sie das Konto wie folgt und lassen Sie das Passwort leer: Das Token ist, was sich einloggt.

    dumbmonit@pdm
  2. Öffnen Sie weiterhin unter Access Control API Tokens → Add, wählen Sie diesen Benutzer und benennen Sie das Token “monitor”. Die Konsole zeigt das Secret einmal: Kopieren Sie es jetzt.

    dumbmonit@pdm!monitor
  3. Geben Sie sowohl dem Benutzer als auch dem Token die Rolle Auditor auf / (die Spitze des Baums, also der gesamte Bestand). Auditor trägt System.Audit, Resource.Audit und Access.Audit, und kann nichts ändern. Ein Token hat nie mehr Rechte als sein Benutzer, daher wird die Berechtigung zweimal gewährt: Permissions → Add → User Permission, dann erneut mit API Token Permission.

  4. Fügen Sie die Token-ID in DumbMonits Feld Token ID ein und das Secret in sein Feld Secret.

  5. Geben Sie in DumbMonit die Konsolenadresse ein, zum Beispiel “dc.lan” oder “dc.lan:8443”.

Bevorzugen Sie die Kommandozeile? proxmox-datacenter-manager-admin verwaltet Remotes, keine Benutzer; erstellen Sie das Konto, das Token und die zwei Berechtigungen in der Web-Oberfläche.

CredentialFelder
API-Token (empfohlen)Token ID: Benutzer, Realm und Token-Name, wie die Konsole sie zeigt, dumbmonit@pdm!monitor. Secret: die einmal beim Erstellen des Tokens gezeigte UUID. DumbMonit sendet sie als den von der Konsole erwarteten Header PDMAPIToken=user@pdm!name:secret.

Es gibt keine Benutzername-/Passwort-Option, und das ist Absicht: Seit ihrer ersten Version gibt die Konsole ihr Session-Ticket nur in einem HttpOnly-Cookie zurück — der JSON-Body trägt ein unbrauchbares ticket-info. Ein Login würde gegenüber einem Token nichts gewinnen, während er bei jeder Abfrage eine eingeloggte Sitzung öffnet. Tokens sind ohnehin, was Proxmox für Automatisierung empfiehlt.

Rechte, nur-lesend. Am einfachsten und ausreichend: die eingebaute Rolle Auditor auf /, dem Benutzer und dem Token gewährt. Pro Endpunkt:

EndpunktBraucht
GET /versionjeder authentifizierte Benutzer
GET /remotes/remotegibt die Instanzen zurück, die der Aufrufer auditieren darf
GET /remotes/remote/{id}/versionResource.Audit auf /resource/{id}
GET /resources/status, GET /resources/listResource.Audit auf /resource
GET /resources/subscriptionResource.Audit auf /resource
GET /remotes/tasks/listResource.Audit auf /resource/{remote}, pro Instanz
GET /nodes/{node}/statusSystem.Audit auf /system/status
GET /nodes/{node}/certificates/info, GET /nodes/{node}/subscriptionjeder authentifizierte Benutzer
GET /nodes/{node}/apt/updateSystem.Audit; ein 403 wird toleriert: keine node_updates_pending-Zeitreihe, kein Scrape-Fehler
GET /remotes/metric-collection/statusmehr als Auditor; ein 403 wird toleriert: keine remote_last_collection_age_seconds-Zeitreihe, kein Scrape-Fehler
GET /remotes/updates/summaryResource.Modify — ein Schreibrecht. Deshalb standardmäßig aus (remote_updates)

Beachten Sie, dass die Konsole die für ihre Instanzen gehaltenen Access-Tokens zensiert (GET /remotes/remote gibt ein leeres token zurück), und DumbMonit liest dieses Feld ohnehin nie: Kein Instanz-Secret durchläuft je den Collector, die gespeicherte Ansicht oder die API.

Adresse: 10.0.0.40, dc.lan, dc.lan:8443, [fd00::2] oder eine vollständige URL. Das Schema https und Port 8443 werden hinzugefügt, falls fehlend.

SchlüsselLabelStandardHilfe
portAPI port8443Genutzt, falls die Adresse keinen Port angibt.
insecure_tlsAccept an unverifiable certificatefalseProxmox Datacenter Manager liefert standardmäßig ein selbstsigniertes Zertifikat: aktivieren Sie das, wenn die Verbindung deshalb abgelehnt wird.
request_timeout_secondsTimeout per request (seconds)20Erlaubte Zeit für jeden API-Aufruf, von 1 bis 120. Die Konsole leitet Aufrufe an jede föderierte Instanz weiter, daher hält ein langsamer Standort die gesamte Antwort auf.
nodeConsole node namelocalhostName des die Konsole betreibenden Knotens. Ein Datacenter Manager hat einen einzigen Knoten und nennt ihn “localhost”.
task_lookback_hoursTask window (hours)24Ältere Tasks werden nicht unter den Fehlschlägen gezählt, von 1 bis 8760.
max_age_secondsAccepted cache age (seconds)60Wie veraltet das eigene Inventar der Konsole sein darf, bevor sie die föderierten Instanzen erneut abfragt, von 0 bis 3600. Null fragt bei jeder Abfrage nach frischen Daten, was jeden Cluster wieder auf die Leitung bringt.
remotesMonitored instances(leer)Namen der zu überwachenden föderierten Instanzen, kommagetrennt. Leer: jede Instanz.
max_remotesInstance version limit100Maximale Anzahl Instanzen, nach deren Version bei jeder Abfrage gefragt wird, von 1 bis 1000.
versionsRead each instance versiontrueEin Aufruf pro föderierter Instanz, um ihre Version zu melden und die hinter ihren Peers zurückgebliebenen zu markieren. Eine nicht antwortende Instanz zählt als nicht erreichbar.
tasksWatch tasks across instancestrueLiest die Task-Liste jeder föderierten Instanz, um die Fehlschläge zu melden.
node_statusWatch the console hosttrueLiest CPU, Speicher, Root-Dateisystem, Uptime, Zertifikate und Abonnement der die Konsole betreibenden Maschine.
updatesCount pending updatestrueListet die auf ein Update wartenden Pakete der Konsole selbst.
remote_updatesCount updates on each instancefalseLiest die Update-Zusammenfassung der Konsole für die föderierten Instanzen. Standardmäßig aus: Die Konsole schützt diesen Pfad mit Resource.Modify, einem Schreibrecht, das ein Monitoring-Konto keinen Grund hat zu halten.

max_age_seconds ist das, was es zu verstehen lohnt. Die Konsole hält ihr eigenes Inventar, von ihrer eigenen Sammelschleife aktualisiert. Bei jeder Abfrage nach frischen Daten zu fragen lässt die Konsole jeden Cluster erneut aufrufen, zusätzlich zu ihrem normalen Rhythmus — genau die Last, die ein einziges Konsolen-Monitor vermeiden soll. Sechzig Sekunden sind immer noch frischer als das Standard-Abfrageintervall.

SymptomWahrscheinliche Ursache
ZertifikatsfehlerSelbstsigniertes Zertifikat: installieren Sie ein vertrauenswürdiges (ACME ist in die Konsole eingebaut) oder aktivieren Sie insecure_tls.
AuthentifizierungsfehlerSecret in Token ID eingefügt (oder umgekehrt), oder die Berechtigung wurde dem Benutzer gewährt, aber nicht dem Token — ein Token hat nie mehr Rechte als sein Benutzer, und die zwei ACLs sind getrennte Einträge.
Jede Instanz zeigt sich als nicht erreichbar, aber die eigene Seite der Konsole ist in OrdnungDas Token hat Auditor am Benutzer, aber nicht am Token, oder nur auf /system: Resource.Audit auf /resource ist, was die Konsole für ihre Instanzen antworten lässt.
Eine Instanz ist nicht erreichbar, und die Meldung erwähnt einen FingerprintDie Konsole verifiziert das Zertifikat jeder von ihr verwalteten Instanz; beheben Sie es in der Konsole (Remotes → die Instanz), nicht hier.
Keine remote_last_collection_age_seconds-ZeitreiheGET /remotes/metric-collection/status braucht mehr als Auditor und wird still übersprungen. Nichts sonst ist betroffen.
Keine remote_updates_pending-Zeitreiheremote_updates ist standardmäßig aus, weil dieser Pfad Resource.Modify braucht. Schalten Sie es nur ein, wenn Sie bereit sind, ein Schreibrecht zu gewähren.
Kein Console-Host-PanelDem Token fehlt System.Audit auf /system/status, oder node_status ist aus.
“Federated instance behind” feuert nieEs vergleicht Instanzen desselben Produkts miteinander. Eine Konsole, die einen einzigen Proxmox-VE-Cluster föderiert, hat nichts, womit sie ihn vergleichen könnte.
Bestandstotals sind alle GedankenstricheDie Konsole antwortete, zählte aber nichts — meist weil jede Instanz nicht erreichbar ist. Die Instanzzeilen sagen warum.