Proxmox VE Special Agent - Keine Proxmox Services erkannt

Hallo alle zusammen,

ich habe für einen Kundenauftrag Proxmox VE auf einem neu bestellten Server installiert, nun würde ich dieses gerne überwachen.
Auf dem Proxmox VE laufen 2 VMs (1x Windows, 1x Proxmox Backup Server).

Da der Kunde natürlich extern ist und ich somit 3 Hosts zu überwachen habe, musste ich ein wenig mit der Firewall und den CheckMK Ports frickeln.

Hier eine kurze Beschreibung des Setups
CheckMK VM (intern) → Firewall (unsere) ← INTERNET → Firewall (Kunde) → Server (Kunde)

In der Firewall wurden folgende Regeln gesetzt (und so auch in CheckMK):

  • CheckMK Agent Port 6556 → Windows Server (VM)
  • CheckMK Agent Port 6555 → Proxmox Backup Server (VM)
  • CheckMK Agent Port 6554 → Proxmox VE

An sich funktioniert das schon wunderbar, alle notwendigen Services tauchen bei mir auf.
Nun habe ich lediglich das Problem, Proxmox VE mittels des Special Agents zu überwachen.
Der Special Agent wurde soweit korrekt (?) konfiguriert, jedoch gibt mir CheckMK keine Proxmox VE Services aus.

cmk -D pve-KUNDE
pve-KUNDE                                                                     
Addresses:              KUNDE-FIREWALL-WAN-IP
Tags:                   [Cache:cache-none], [SSL:no], [Search-Server:search-no], [address_family:ip-v4-only], [agent:all-agents], [backup-software:none], [check_seo_tags:check_seo_tags_no], [cms:none], [criticality:prod], [database:db-no], [datacycle:dc-no], [docker:docker-no], [ip-v4:ip-v4], [is_vm:is_vm_no], [networking:wan], [piggyback:auto-piggyback], [pm2_process_manager:pm2-no], [remote_mounts:remotemount_no], [site:mysite], [snmp_ds:no-snmp], [ssl_letsencrypt:ssl_letsencrypt_no], [tcp:tcp], [webserver:webserver-no], [website_sendsmails:website_sendsmails_no]
Labels:                 [cmk/os_family:linux], [dashboard:yes], [os:debian]
Parents:                MikroTik-KUNDE
Host groups:            check_mk
Contact groups:         all
Agent mode:             Normal Checkmk agent, all configured special agents
Type of agent:          
  TCP: KUNDE-FIREWALL-WAN-IP:6554
  Program: /omd/sites/mysite/share/check_mk/agents/special/agent_proxmox_ve '-u' 'checkmk@pve' '-p' 'PASSWORD' '--port' 8006 '--no-cert-check' '--timeout' 60 'pve-KUNDE'
  Process piggyback data from /omd/sites/mysite/tmp/check_mk/piggyback/pve-KUNDE

Interessanterweise, wenn ich den Special Agent ausführe genau so wie er mir von CheckMK mittels cmk -D ausgegeben wird, erhalte ich eine korrekte Service Ausgabe:

/omd/sites/mysite/share/check_mk/agents/special/agent_proxmox_ve --verbose --debug '-u' 'checkmk@pve' '-p' 'PASSWORD' '--port' 8006 '--no-cert-check' '--timeout' 60 'pve-KUNDE'
INFO 2021-07-26 11:08:29 root: running file /omd/sites/mysite/lib/python3/cmk/special_agents/utils/agent_common.py
INFO 2021-07-26 11:08:29 root: using Python interpreter v3.8.7.final.0 at /omd/sites/mysite/bin/python3
INFO 2021-07-26 11:08:29 agent_proxmox_ve: Establish connection to Proxmox VE host 'pve-KUNDE'
INFO 2021-07-26 11:08:30 agent_proxmox_ve: Fetch general cluster and node information..
INFO 2021-07-26 11:08:30 agent_proxmox_ve: Fetch and process backup logs..
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.25-23:00:01', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.24-23:00:01', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.23-23:00:01', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.22-23:00:02', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.22-00:00:01', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.21-08:47:47', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.21-00:00:02', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.20-00:00:01', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.19-00:00:02', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.18-00:00:01', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.17-00:00:02', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.16-03:00:02', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: BackupTask('vzdump', t='2021.07.15-20:57:17', vms=('100', '101'))
INFO 2021-07-26 11:08:30 agent_proxmox_ve: all VMs:          ['100', '101', '102']
INFO 2021-07-26 11:08:30 agent_proxmox_ve: expected backups: []
INFO 2021-07-26 11:08:30 agent_proxmox_ve: actual backups:   ['100', '101']
INFO 2021-07-26 11:08:30 agent_proxmox_ve: Write agent output..
<<<<pveKUNDE>>>>
<<<proxmox_ve_node_info:sep(0)>>>
{"lxc": [], "proxmox_ve_version": {"release": "7.0", "repoid": "d2f465d3", "version": "7.0-10"}, "qemu": ["100", "101", "102"], "status": "online", "subscription": {"status": "NotFound"}}
<<<proxmox_ve_mem_usage:sep(0)>>>
{"max_mem": 67082407936, "mem": 45800300544}
<<<uptime>>>
928106
<<<<>>>>
<<<<zysrv>>>>
<<<proxmox_ve_vm_info:sep(0)>>>
{"name": "zysrv", "node": "pveKUNDE", "status": "running", "type": "qemu", "vmid": "100"}
<<<proxmox_ve_mem_usage:sep(0)>>>
{"max_mem": 34359738368, "mem": 9223270400}
<<<proxmox_ve_vm_backup_status:sep(0)>>>
{"last_backup": {"started_time": "2021-07-25 23:00:01", "total_duration": 100, "transfer_size": 28185722880, "transfer_time": 96}}
<<<<>>>>
<<<<checkmk>>>>
<<<proxmox_ve_vm_info:sep(0)>>>
{"name": "checkmk", "node": "pveKUNDE", "status": "stopped", "type": "qemu", "vmid": "101"}
<<<proxmox_ve_mem_usage:sep(0)>>>
{"max_mem": 8589934592, "mem": 0}
<<<proxmox_ve_vm_backup_status:sep(0)>>>
{"last_backup": {"started_time": "2021-07-25 23:01:41", "total_duration": 23, "transfer_size": 34359738368, "transfer_time": 21}}
<<<<>>>>
<<<<pbs>>>>
<<<proxmox_ve_vm_info:sep(0)>>>
{"name": "pbs", "node": "pveKUNDE", "status": "running", "type": "qemu", "vmid": "102"}
<<<proxmox_ve_mem_usage:sep(0)>>>
{"max_mem": 8589934592, "mem": 8083558400}
<<<proxmox_ve_vm_backup_status:sep(0)>>>
{"last_backup": null}
<<<<>>>>

So, gerade beim Kontrollieren des Outputs, bevor ich das hier reinstelle, bin ich auf den Fehler gekommen.

Der Server heißt in CheckMK pve-KUNDE (mit -).

Vergleich Eingabe Befehl:

/omd/sites/mysite/share/check_mk/agents/special/agent_proxmox_ve --verbose --debug '-u' 'checkmk@pve' '-p' 'PASSWORD' '--port' 8006 '--no-cert-check' '--timeout' 60 'pve-KUNDE'

mit Ausgabe der Services:

<<<<pveKUNDE>>>>

Lösung
Umbenennen des Hosts in CheckMK, sodass er mit dem Hostname des Servers übereinstimmt.

1 Like

Danke für den Hinweis.
Dies sollte unbedingt dokumentiert werden, da Hostnamen in CheckMK nicht unebdingt dem Endpunkt Hostnamen entsprechen müssen. Da sucht man sich einen Wolf und fragt sich warum es nicht tut.

Es tut aber leider immer noch nicht so richtig.

PVE 6 verwenden wir für Tests aktuell. PVE7 steht auch bald an.

  • Des Weiteren scheint der PVE Special Agent die IPv4 Adresse für die Verbindung nicht zu nutzen, wenn separat angegeben.
  • Ich musste den Host in CheckMK umbenennen, damit dieser mit dem PVE Hostnamen überein stimmt. Das ist aber problematisch, da bei einzelnen Kundenservern die Server alle z.B. “pve1” heißen. Denselben Hostnamen kann man aber nur 1x in diversen Special Agent Konfigs referenzieren und außerdem gibt es dann Namenskonflikte (Aliase hin oder her).
  • Da einzelne Hosts via SSH abgefragt werden, und es keinen öffentlichen DNS Eintrag (aus gutem Grund) für den jeweiligen PVE Node gibt, kann der Special Agent den Host nicht erreichen.
  • Mir ist schleierhaft warum der Special Agent nur auf den Hostnamen als Zieladresse schaut und dies dann auch zwingend als PVE hostnamen verwendet um Daten angeben zu können.
  • Damit die Abfrage funktioniert, musste ich einen Eintrag in /etc/hosts hinterlegen, damit CheckMK den Server auch findet. Die funktioniert aber auch nur, weil wir für das Test Kundennetzwerk eine VPN Verbindung haben.
  • Der Backup Status kann weiterhin nicht im UI angezeigt werden (per CLI erscheint dieser)

Lösungsvorschlag @checkmk Team :

  • IP Adresse und oder zusätzliche IP für Verbindungsversuche zum jeweiligen PVE Node heranziehen
  • Einstellmöglichkeit beim Special Agent welches Feld (Hostname, IP Adresse, Zusätzliche Adresse) für die Verbindungsversuche herangezogen werden soll
  • Einstellmöglichkeit ob Hostname oder Alias als PVE Nodename verwendet werden soll
  • GGF. die Daten vom jeweiligen Host einfach dem Device zuweisen, unabhängig davon ob der PVE Name mit dem Hostnamen übereinstimmt. Könnte eine Override funktion sein, welche insbesondere für einzelne Hosts vorteilhaft wäre.
  • Einen lokalen Agent zur Verfügung stellen, welcher einfach vom CheckMK Agent ausgeführt wird und welcher dann so die PVE Node Infos über einen lokalen Check ausliefert.
  • Sinnvoll könnte es auch sein wenn man für den PVE Cluster Check den Zugangspunkt angeben kann, da die API auch hinter einem LB liegen kann und Abfragen somit für Cluster weite Infos zentral abgefragt werden können.

Genau dieses Problem haben wir hier auch. War jetzt auch erst mal eine ganze Weile am Suchen bis ich das Problem verstanden hatte…

Bitteschön: Der Piggyback-Mechanismus

Danke für den Link. Wenn man viele einzelne/weniger Server verwaltet die überwacht werden sollen, darf man also für jeden Hostnamen eine Regel anlegen.
Warum kann das System nicht einfach die IP oder den Alias nutzen, welche man mit angibt? Regeln sind ja generell hilfreich, aber manchmal halt zu viel Konfig für einfache Aufgaben.

Scheinbar kann der PVE Special Check auch nicht fesstellen ob das letzte Backup einer VM erfolgreich war, wenn mehrere Backup Speicher / Storage Pools mit freigeschalteter Backup Funktionalität vorhanden sind. So ist der Check leider unbrauchbar. Vielleicht kann das CheckMK Team dafür eine Lösung finden. Danke

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed. Contact an admin if you think this should be re-opened.