Dear Zabbix team,
in the "Proxmox VE by HTTP" template (8.0.0rc1), the item prototype Node [{#NODE.NAME}]: Disk [{#DISK.NAME}]: Get info has a hard-coded update interval of 10m and a timeout of 10s. The existing macro {$PVE.PARAMS.INTERVAL.DISK} (1h) is only used by the Disks discovery rule, not by this prototype.
Every disk gets its own item that requests the same URL, /nodes/{#NODE.NAME}/disks/list, and extracts its own entry by JSONPath. On a node with 58 disks, that is 58 identical requests every 10 minutes. On my node a single pvesh get /nodes/<node>/disks/list takes 14s (about 5.6s CPU), so every request runs into the 10s timeout, and the dependent items (Model, Serial, Type, Vendor) go unsupported. In addition, the constant stream of these requests keeps the node busy permanently. The discovery rule and SMART status also use the hard-coded timeout of 10s.
Suggestions:
A) Quick fix: change the hard-coded values to {$PVE.PARAMS.INTERVAL.DISK} (1h) and a timeout of 60s. Static data like model and serial does not need a 10m interval, and it matches the SMART interval.
B) Add macros for the interval and the timeout (e.g. {$PVE.TIMEOUT.DISK}), so they can be adjusted per host without cloning the template.
C) Cleaner: let the discovery rule (which already fetches /disks/list) or one master item per node fetch the list once, and make the per-disk items dependent items with JSONPath. That replaces N redundant requests with one and avoids the timeout problem entirely.
Happy to test any of these on my setup. Keen to hear your thoughts.
Best regards,
Bernhard
in the "Proxmox VE by HTTP" template (8.0.0rc1), the item prototype Node [{#NODE.NAME}]: Disk [{#DISK.NAME}]: Get info has a hard-coded update interval of 10m and a timeout of 10s. The existing macro {$PVE.PARAMS.INTERVAL.DISK} (1h) is only used by the Disks discovery rule, not by this prototype.
Every disk gets its own item that requests the same URL, /nodes/{#NODE.NAME}/disks/list, and extracts its own entry by JSONPath. On a node with 58 disks, that is 58 identical requests every 10 minutes. On my node a single pvesh get /nodes/<node>/disks/list takes 14s (about 5.6s CPU), so every request runs into the 10s timeout, and the dependent items (Model, Serial, Type, Vendor) go unsupported. In addition, the constant stream of these requests keeps the node busy permanently. The discovery rule and SMART status also use the hard-coded timeout of 10s.
Suggestions:
A) Quick fix: change the hard-coded values to {$PVE.PARAMS.INTERVAL.DISK} (1h) and a timeout of 60s. Static data like model and serial does not need a 10m interval, and it matches the SMART interval.
B) Add macros for the interval and the timeout (e.g. {$PVE.TIMEOUT.DISK}), so they can be adjusted per host without cloning the template.
C) Cleaner: let the discovery rule (which already fetches /disks/list) or one master item per node fetch the list once, and make the per-disk items dependent items with JSONPath. That replaces N redundant requests with one and avoids the timeout problem entirely.
Happy to test any of these on my setup. Keen to hear your thoughts.
Best regards,
Bernhard