Why is Proxmox VE Rule a "Special Agent" executed by Checkmk Satellite instead of an Agent Rule?

We tried to monitor Proxmox VE States of several VMs (hosts), so these services get be assigned through piggyback to the according checkmk hosts.

Now the problem:

We set in the “Proxmox VE” rule the “Custom Host” to “localhost”, but found out that the Checkmk Satellite of the site tries connecting the PVE API, instead of the agent itself as we expected it.

I know this is something related to “Special Agents”:

Some systems however allow neither an agent installation, nor do they support SNMP in a usable form. Instead of these they offer application programming interfaces for management, so-called APIs, based on Telnet, SSH or HTTP/XML. Checkmk queries such interfaces via these so-called special agents running on the Checkmk server.

Isn’t it possible to get both:

  • Proxmox VE
  • Proxmox VE Stand-alone (= Special Agent)

or would it be possible to let it be dynamic, so it gets baked in the agent if an agent for the hosts exists and if not, it gets executed on the satellite?

Why we need localhost Support: We do not allow access to the webgui at all.

Theoretically a special agent could be started as agent plugin.
There is currently no infrastructure to do this.

You could take the code from $OMD_ROOT/lib/python3/cmk/special_agents/agent_proxmox_ve.py and remove all site specific cmk imports and then execute it as agent plugin via a wrapper script that sets the correct command line arguments.

What a special agent outputs is also only agent data sections like any other agent plugin.

As you already know a special agent is used when a system provides an API requiring that API be available from the monitoring server. Proxmox is special in this case as the Checkmk agent can be installed on the Proxmox host.