Skip to content

Install cv4pve-diag and check a Proxmox VE cluster

cv4pve-diag runs outside the cluster (on your workstation, a management VM or a scheduled job) and talks only to the Proxmox VE REST API on port 8006. Nothing is installed on the nodes.

  1. Install cv4pve-diag

    arch=$(uname -m | sed 's/x86_64/x64/;s/aarch64/arm64/;s/armv7l/arm/')
    wget https://github.com/Corsinvest/cv4pve-diag/releases/latest/download/cv4pve-diag-linux-$arch.zip
    unzip cv4pve-diag-linux-$arch.zip
    chmod +x cv4pve-diag

    All files are on the latest release page.

  2. Create an API token

    Create a dedicated user and an API token in Proxmox VE, with the privileges the tool needs: see Permissions.

  3. Run cv4pve-diag execute

    Point the tool at any node:

    cv4pve-diag --host=pve01 --api-token='diag@pve!audit=<uuid>' execute

    Several nodes, username and password, certificates and options in a file for scheduled runs: see Connection.

  4. Read the report

    The report lists one finding per row, with a code, a severity and the resource it concerns: Reading the report explains every column and the output formats.

cv4pve-diag has three commands:

Command What it does
execute Analyses the cluster and prints the report. --fast and --full choose the profile.
create-settings Writes settings.json with the default thresholds (or those of --fast / --full), to edit and pass with --settings-file: see Settings.
create-ignored-issues Writes ignored-issues.json with an example rule, to edit and pass with --ignored-issues-file: see Ignore rules.

The two create- commands need no connection to the cluster.

cv4pve-diag --host=pve01 --api-token='diag@pve!audit=<uuid>' execute # standard profile
cv4pve-diag --host=pve01 --api-token='diag@pve!audit=<uuid>' execute --fast # quick scan of a large cluster
cv4pve-diag --host=pve01 --api-token='diag@pve!audit=<uuid>' execute --full # everything, for audits
# Your own thresholds and accepted findings
cv4pve-diag create-settings # then edit settings.json
cv4pve-diag create-ignored-issues # then edit ignored-issues.json
cv4pve-diag --host=pve01 --api-token='diag@pve!audit=<uuid>' \
--settings-file=settings.json --ignored-issues-file=ignored-issues.json execute

--fast and --full go after the command. A settings file always wins over them.