7.4a571c0d144b14fd4a87a9d9b2aa9fcd6Templates/Applicationsfbb1d6c3478a48f48914375827c987ceProxmox VE by HTTP mbuzProxmox VE by HTTP mbuzGenerated by official Zabbix template tool "Templator" 2.0.0Templates/Applications- a6342669ea654b238af9bd3e3b42006aProxmox: API service statusSCRIPTproxmox.api.available5m7dtry {
var params = JSON.parse(value);
var req = new HttpRequest();
req.addHeader('Authorization: PVEAPIToken=' + params.token + '=' + params.secret);
req.get(encodeURI('https://' + params.url + ':' + params.port + '/api2/json/version'));
} catch (error) {
Zabbix.log(3, "Proxmox API failed: " + params.url + " Error: " + error);
if (!Number.isInteger(error))
return 520;
}
return req.getStatus();Get API service status.HTTP response status codeDISCARD_UNCHANGED_HEARTBEAT12h10sport{$PVE.URL.PORT}secret{$PVE.TOKEN.SECRET}token{$PVE.TOKEN.ID}url{HOST.CONN}componentsystemb4768922fd9d42e0baab93a53c1f62e2last(/Proxmox VE by HTTP mbuz/proxmox.api.available) <> 200Proxmox: API service not availableCurrent value: {ITEM.LASTVALUE1}HIGHThe API service is not available. Check your network and authorization settings.scopeavailability
- a9cb76300bf4469d983b3e80c7ecd671Proxmox: Get cluster resourcesHTTP_AGENTproxmox.cluster.resources5m0TEXTResources index.CHECK_NOT_SUPPORTED-1CUSTOM_VALUEError getting data3shttps://{HOST.CONN}:{$PVE.URL.PORT}/api2/json/cluster/resourcesAuthorizationPVEAPIToken={$PVE.TOKEN.ID}={$PVE.TOKEN.SECRET}componentraw
- c31c0359a934474d8658487aa8b9db2dProxmox: Get cluster statusHTTP_AGENTproxmox.cluster.status5m0TEXTGet cluster status information.CHECK_NOT_SUPPORTED-1CUSTOM_VALUEError getting data3shttps://{HOST.CONN}:{$PVE.URL.PORT}/api2/json/cluster/statusAuthorizationPVEAPIToken={$PVE.TOKEN.ID}={$PVE.TOKEN.SECRET}componentraw
5159bc915fba4375affae401bbe64622Cluster discoveryDEPENDENTproxmox.cluster.discoveryAND{#RESOURCE.TYPE}^cluster$1dDISABLE_AFTER1hb5ed5ebdbc1b42a4b0a77a165bbc1ce3Proxmox: Cluster [{#RESOURCE.NAME}]: QuorateDEPENDENTproxmox.cluster.quorate[{#RESOURCE.NAME}]7dIndicates if there is a majority of nodes online to make decisions.Cluster quorateJSONPATH$.data.[?(@.name == '{#RESOURCE.NAME}' && @.type == 'cluster')].quorate.first()DISCARD_UNCHANGED_HEARTBEAT10mproxmox.cluster.statuscluster{#RESOURCE.NAME}componentsystem874e0012c1444d1487e8957c0500ab8alast(/Proxmox VE by HTTP mbuz/proxmox.cluster.quorate[{#RESOURCE.NAME}]) <> 1Proxmox: Cluster [{#RESOURCE.NAME}] not quorumCurrent value: {ITEM.LASTVALUE}HIGHProxmox VE use a quorum-based technique to provide a consistent state among all cluster nodes.scopeavailabilityproxmox.cluster.status{#RESOURCE.NAME}$.name{#RESOURCE.TYPE}$.typeDISCARD_UNCHANGED_HEARTBEAT12h2ddd8762c828461dac7090d3bbb9cd1cLXC discoveryDEPENDENTproxmox.lxc.discoveryAND{#RESOURCE.TYPE}^lxc${#TAGS}{$PVE.TAGS.MATCHES}1dDISABLE_AFTER1h1f1e25d74d1744b897352ba907837552LXC {#LXC.NAME} [{#NODE.NAME}]: CPU usageDEPENDENTproxmox.lxc.cpu[{#LXC.ID}]7dFLOAT%CPU load.JSONPATH$.data.cpuMULTIPLIER100proxmox.lxc.status[{#LXC.ID}]componentcpulxc{#LXC.ID}name{#LXC.NAME}node{#NODE.NAME}dd453388a4af4bac88d16534e460660bmin(/Proxmox VE by HTTP mbuz/proxmox.lxc.cpu[{#LXC.ID}],5m) > {$PVE.LXC.CPU.PUSE.MAX.WARN:"{#LXC.ID}"}LXC {#LXC.NAME} [{#NODE.NAME}]: high CPU usageLXC {#LXC.NAME} [{#NODE.NAME}]: high CPU usage (over {$PVE.LXC.CPU.PUSE.MAX.WARN:"{#LXC.ID}"}% use)Current use: {ITEM.LASTVALUE1}WARNINGCPU usage.scopeperformance826691918d994d93915d0b3bded95855LXC {#LXC.NAME} [{#NODE.NAME}]: Disk read, rateDEPENDENTproxmox.lxc.diskread[{#LXC.ID}]7dFLOATBpsDisk read.JSONPATH$.data.diskreadCHANGE_PER_SECONDproxmox.lxc.status[{#LXC.ID}]componentstoragelxc{#LXC.ID}name{#LXC.NAME}node{#NODE.NAME}cee465895da8411dbcad9daf64c7e731LXC {#LXC.NAME} [{#NODE.NAME}]: Disk write, rateDEPENDENTproxmox.lxc.diskwrite[{#LXC.ID}]7dFLOATBpsDisk write.JSONPATH$.data.diskwriteCHANGE_PER_SECONDproxmox.lxc.status[{#LXC.ID}]componentstoragelxc{#LXC.ID}name{#LXC.NAME}node{#NODE.NAME}c6aef57772634bfe9ffd05fc5d20883bLXC {#LXC.NAME} [{#NODE.NAME}]: Memory totalDEPENDENTproxmox.lxc.maxmem[{#LXC.ID}]7dFLOATBThe total memory expressed in bytes.JSONPATH$.data.maxmemDISCARD_UNCHANGED_HEARTBEAT10mproxmox.lxc.status[{#LXC.ID}]componentmemorylxc{#LXC.ID}name{#LXC.NAME}node{#NODE.NAME}d8eb0a79110e47ea879ecc4c588da3a7LXC {#LXC.NAME} [{#NODE.NAME}]: Memory utilizationCALCULATEDproxmox.lxc.memutil[{#LXC.ID}]7dFLOAT%(last(//proxmox.lxc.mem[{#LXC.ID}])/last(//proxmox.lxc.maxmem[{#LXC.ID}]))*100Utilization of memory in %componentmemorylxc{#LXC.ID}name{#LXC.NAME}node{#NODE.NAME}88ccddbdf4494b22b75e8120fba6e55cLXC {#LXC.NAME} [{#NODE.NAME}]: Memory usageDEPENDENTproxmox.lxc.mem[{#LXC.ID}]7dFLOATBUsed memory in bytes.JSONPATH$.data.memproxmox.lxc.status[{#LXC.ID}]componentmemorylxc{#LXC.ID}name{#LXC.NAME}node{#NODE.NAME}acd05d95f8f44a28b1eb965be436338fLXC {#LXC.NAME} [{#NODE.NAME}]: Incoming data, rateDEPENDENTproxmox.lxc.netin[{#LXC.ID}]7dFLOATbpsIncoming data rate.JSONPATH$.data.netinCHANGE_PER_SECONDMULTIPLIER8proxmox.lxc.status[{#LXC.ID}]componentnetworklxc{#LXC.ID}name{#LXC.NAME}node{#NODE.NAME}8036834290714f0d9580fdd39e01bc7fLXC {#LXC.NAME} [{#NODE.NAME}]: Outgoing data, rateDEPENDENTproxmox.lxc.netout[{#LXC.ID}]7dFLOATbpsOutgoing data rate.JSONPATH$.data.netoutCHANGE_PER_SECONDMULTIPLIER8proxmox.lxc.status[{#LXC.ID}]componentnetworklxc{#LXC.ID}name{#LXC.NAME}node{#NODE.NAME}7b1140324ae243db9339b55e172a174fLXC {#LXC.NAME} [{#NODE.NAME}]: StatusHTTP_AGENTproxmox.lxc.status[{#LXC.ID}]0TEXTRead LXC status.3shttps://{HOST.CONN}:{$PVE.URL.PORT}/api2/json/nodes/{#NODE.NAME}/{#LXC.ID}/status/currentAuthorizationPVEAPIToken={$PVE.TOKEN.ID}={$PVE.TOKEN.SECRET}componentraw0e54f1288c7348688236d8c46de73eadLXC {#LXC.NAME} [{#NODE.NAME}]: UptimeDEPENDENTproxmox.lxc.uptime[{#LXC.ID}]2w0uptimeThe system uptime expressed in the following format: "N days, hh:mm:ss".JSONPATH$.data.uptimeproxmox.lxc.status[{#LXC.ID}]componentsystem04ad38e0d1934979909425386f55736flast(/Proxmox VE by HTTP mbuz/proxmox.lxc.uptime[{#LXC.ID}])<10mLXC {#LXC.NAME} [{#NODE.NAME}]: has been restartedLXC {#LXC.NAME} [{#NODE.NAME}]: has been restarted (uptime < 10m)INFOUptime is less than 10 minutes.YESLXC {#LXC.NAME} [{#NODE.NAME}]: Not runninglast(/Proxmox VE by HTTP mbuz/proxmox.lxc.vmstatus[{#LXC.ID}])<>"running"scopenotice2c4a8961f23a474f98c988d4526c7c8aLXC {#LXC.NAME} [{#NODE.NAME}]: StatusDEPENDENTproxmox.lxc.vmstatus[{#LXC.ID}]7dCHARJSONPATH$.data.statusproxmox.lxc.status[{#LXC.ID}]componentsystem8f121cba667f4b2591c34cc928e21b75last(/Proxmox VE by HTTP mbuz/proxmox.lxc.vmstatus[{#LXC.ID}])<>"running"LXC {#LXC.NAME} [{#NODE.NAME}]: Not runningCurrent value: {ITEM.LASTVALUE1}AVERAGELXC state is not "running".scopenotice19ed7a6785f24bb4b656748cf7e2c1f4min(/Proxmox VE by HTTP mbuz/proxmox.lxc.mem[{#LXC.ID}],5m) / last(/Proxmox VE by HTTP mbuz/proxmox.lxc.maxmem[{#LXC.ID}]) * 100 >{$PVE.LXC.MEMORY.PUSE.MAX.WARN:"{#LXC.ID}"}LXC {#LXC.NAME} [{#NODE.NAME}]: high memory usageLXC {#LXC.NAME} [{#NODE.NAME}]: high memory usage (over {$PVE.LXC.MEMORY.PUSE.MAX.WARN:"{#LXC.ID}"}% use)Current use: {ITEM.LASTVALUE1} of {ITEM.LASTVALUE2}WARNINGMemory usage.scopeperformance6601319296904dfa96c3c227766614a5Proxmox: LXC [{#NODE.NAME}/{#LXC.NAME} ({#LXC.ID})]: CPU usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.lxc.cpu[{#LXC.ID}]
682ec7aab5ba4ba4842a8eac53e65fe9Proxmox: LXC [{#NODE.NAME}/{#LXC.NAME} ({#LXC.ID})]: Disk usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.lxc.diskwrite[{#LXC.ID}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.lxc.diskread[{#LXC.ID}]
0a68b91055884dc1b3ecb5f61319de4eProxmox: LXC [{#NODE.NAME}/{#LXC.NAME} ({#LXC.ID})]: Memory usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.lxc.mem[{#LXC.ID}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.lxc.maxmem[{#LXC.ID}]
2952e309a97a441783fee14b99c969daProxmox: LXC [{#NODE.NAME}/{#LXC.NAME} ({#LXC.ID})]: Network usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.lxc.netin[{#LXC.ID}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.lxc.netout[{#LXC.ID}]
proxmox.cluster.resources{#LXC.ID}$.id{#LXC.NAME}$.name{#NODE.NAME}$.node{#RESOURCE.TYPE}$.type{#TAGS}$.tagsDISCARD_UNCHANGED_HEARTBEAT12hJAVASCRIPTtry {
// Attempt to parse the incoming value as JSON.
var response = JSON.parse(value);
var items_array = null;
// Check if the JSON is an object containing a 'data' array.
if (response && Array.isArray(response.data)) {
items_array = response.data;
}
// Otherwise, check if the JSON itself is an array.
else if (Array.isArray(response)) {
items_array = response;
}
// If we successfully found an array of items, process it.
if (items_array) {
items_array.forEach(function(item) {
// Ensure the item is an object and add 'tags' if it's missing.
if (typeof item === 'object' && item !== null && !item.hasOwnProperty('tags')) {
item.tags = "";
}
});
}
// Return the full, potentially modified, original structure.
return JSON.stringify(response);
} catch (e) {
// If any error occurs (e.g., invalid JSON), return the original value untouched.
// This allows Zabbix to report the root problem instead of a script failure.
return value;
}f05876c1190b46e8b614a1e7e55e704cNode discoveryDEPENDENTproxmox.node.discoveryAND{#RESOURCE.TYPE}^node$1dDISABLE_AFTER1hf9df6a6e290b4b9cbaa2a81e90e7ffe4Proxmox: Node [{#NODE.NAME}]: CPU, usageDEPENDENTproxmox.node.cpu[{#NODE.NAME}]7dFLOATNO_DISCOVER%CPU usage.JSONPATH$.cpuMULTIPLIER100DISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentcpunode{#NODE.NAME}71ae018d6af3402fbca158825e1689cdmin(/Proxmox VE by HTTP mbuz/proxmox.node.cpu[{#NODE.NAME}],5m) > {$PVE.CPU.PUSE.MAX.WARN:"{#NODE.NAME}"}Proxmox: Node [{#NODE.NAME}] high CPU usageProxmox: Node [{#NODE.NAME}] high CPU usage (over {$PVE.CPU.PUSE.MAX.WARN:"{#NODE.NAME}"}% use)Current use: {ITEM.LASTVALUE1}WARNINGCPU usage.scopeperformance1e3c6f5b1e3e4969a9598febaba9d951Proxmox: Node [{#NODE.NAME}]: CPU, iowaitDEPENDENTproxmox.node.iowait[{#NODE.NAME}]7dFLOATNO_DISCOVER%CPU iowait time.JSONPATH$.iowaitMULTIPLIER100DISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentcpunode{#NODE.NAME}94ba5792f8234ca0962be34f6ffdf1ccProxmox: Node [{#NODE.NAME}]: Kernel versionDEPENDENTproxmox.node.kernelversion[{#NODE.NAME}]2wCHARKernel version info.JSONPATH$.data.kversionDISCARD_UNCHANGED_HEARTBEAT1dproxmox.node.status[{#NODE.NAME}]componentsystemb233cbd597b748699577dab49ecf9146last(/Proxmox VE by HTTP mbuz/proxmox.node.kernelversion[{#NODE.NAME}],#1)<>last(/Proxmox VE by HTTP mbuz/proxmox.node.kernelversion[{#NODE.NAME}],#2) and length(last(/Proxmox VE by HTTP mbuz/proxmox.node.kernelversion[{#NODE.NAME}]))>0Proxmox: Node [{#NODE.NAME}]: Kernel version has changedCurrent value: {ITEM.LASTVALUE1}INFOFirmware version has changed. Acknowledge to close the problem manually.YESscopenotice3a2b126d8acf4f91a0c1f00744fb00b9Proxmox: Node [{#NODE.NAME}]: CPU, loadavgDEPENDENTproxmox.node.loadavg[{#NODE.NAME}]7dFLOATNO_DISCOVER%CPU average load.JSONPATH$.loadavgMULTIPLIER100DISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentcpunode{#NODE.NAME}12a74f3dcc1a4846803c2861a8828acaProxmox: Node [{#NODE.NAME}]: LocaltimeDEPENDENTproxmox.node.localtime[{#NODE.NAME}]7dunixtimeSeconds since 1970-01-01 00:00:00 (local time).JSONPATH$.data.localtimeproxmox.node.time[{#NODE.NAME}]componentsystemnode{#NODE.NAME}d404b4c3352d4cc7ba69592c96ceacd0Proxmox: Node [{#NODE.NAME}]: Memory, totalDEPENDENTproxmox.node.memtotal[{#NODE.NAME}]7dFLOATNO_DISCOVERBMemory total.JSONPATH$.memtotalDISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentmemorynode{#NODE.NAME}630672dde4224ea0a5ce47f45e4a0c9cProxmox: Node [{#NODE.NAME}]: Memory, usedDEPENDENTproxmox.node.memused[{#NODE.NAME}]7dFLOATNO_DISCOVERBMemory usage.JSONPATH$.memusedDISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentmemorynode{#NODE.NAME}423d54e9b9a34b189ebbb7db7d21ddc4Proxmox: Node [{#NODE.NAME}]: Incoming data, rateDEPENDENTproxmox.node.netin[{#NODE.NAME}]7dFLOATbpsNetwork usage.JSONPATH$.netinMULTIPLIER8DISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentnetworknode{#NODE.NAME}e804895d278d446cb369902659a91633Proxmox: Node [{#NODE.NAME}]: Outgoing data, rateDEPENDENTproxmox.node.netout[{#NODE.NAME}]7dFLOATbpsNetwork usage.JSONPATH$.netoutMULTIPLIER8DISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentnetworknode{#NODE.NAME}7ae6031d80cf489289060087eda0c795Proxmox: Node [{#NODE.NAME}]: StatusDEPENDENTproxmox.node.online[{#NODE.NAME}]7dIndicates if the node is online or offline.Node onlineJSONPATH$.data.[?(@.name == '{#NODE.NAME}' && @.type == 'node')].online.first()DISCARD_UNCHANGED_HEARTBEAT10mproxmox.cluster.statuscomponentclusternode{#NODE.NAME}a885a4e481fe4dcebad9c9dae5ed017clast(/Proxmox VE by HTTP mbuz/proxmox.node.online[{#NODE.NAME}]) <> 1Proxmox: Node [{#NODE.NAME}] offlineCurrent value: {ITEM.LASTVALUE}HIGHNode offline.scopeavailabilityb01cf767e19d4cf48f92794a8f637460Proxmox: Node [{#NODE.NAME}]: PVE versionDEPENDENTproxmox.node.pveversion[{#NODE.NAME}]2wCHARPVE manager version.JSONPATH$.data.pveversionDISCARD_UNCHANGED_HEARTBEAT1dproxmox.node.status[{#NODE.NAME}]componentsystem534f125e68f74c3ba752948175b581d6last(/Proxmox VE by HTTP mbuz/proxmox.node.pveversion[{#NODE.NAME}],#1)<>last(/Proxmox VE by HTTP mbuz/proxmox.node.pveversion[{#NODE.NAME}],#2) and length(last(/Proxmox VE by HTTP mbuz/proxmox.node.pveversion[{#NODE.NAME}]))>0Proxmox: Node [{#NODE.NAME}]: PVE manager has changedCurrent value: {ITEM.LASTVALUE1}INFOFirmware version has changed. Acknowledge to close the problem manually.YESscopenotice27966fd01765425aa9d9d480f42a4567Proxmox: Node [{#NODE.NAME}]: Root filesystem, totalDEPENDENTproxmox.node.roottotal[{#NODE.NAME}]7dFLOATNO_DISCOVERBRoot filesystem total.JSONPATH$.roottotalDISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentstoragenode{#NODE.NAME}ab1c9eefea774a1b96ff2e20f87b3139Proxmox: Node [{#NODE.NAME}]: Root filesystem, usedDEPENDENTproxmox.node.rootused[{#NODE.NAME}]7dFLOATNO_DISCOVERBRoot filesystem usage.JSONPATH$.rootusedDISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentstoragenode{#NODE.NAME}ae18995e15ac4b4c9bb5146943fe25fbProxmox: Node [{#NODE.NAME}]: RRD statisticsHTTP_AGENTproxmox.node.rrd[{#NODE.NAME}]0TEXTRead node RRD statistics.JAVASCRIPTvar rrd_data = JSON.parse(value).data;
return JSON.stringify(rrd_data[rrd_data.length - 2])3shttps://{HOST.CONN}:{$PVE.URL.PORT}/api2/json/nodes/{#NODE.NAME}/rrddatatimeframehourcfAVERAGEAuthorizationPVEAPIToken={$PVE.TOKEN.ID}={$PVE.TOKEN.SECRET}componentraw6bcc407823d44a9fafca30b0ecbf8419Proxmox: Node [{#NODE.NAME}]: StatusHTTP_AGENTproxmox.node.status[{#NODE.NAME}]0TEXTRead node status.3shttps://{HOST.CONN}:{$PVE.URL.PORT}/api2/json/nodes/{#NODE.NAME}/statusAuthorizationPVEAPIToken={$PVE.TOKEN.ID}={$PVE.TOKEN.SECRET}componentrawdc3b33a3e57446cc9a1c5a3ad0c80f38Proxmox: Node [{#NODE.NAME}]: Swap filesystem, totalDEPENDENTproxmox.node.swaptotal[{#NODE.NAME}]7dFLOATBSwap total.JSONPATH$.swaptotalDISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentstoragenode{#NODE.NAME}bb981c15bc944c84b9cc96857f7f4464Proxmox: Node [{#NODE.NAME}]: Swap filesystem, usedDEPENDENTproxmox.node.swapused[{#NODE.NAME}]7dFLOATBSwap used.JSONPATH$.swapusedDISCARD_UNCHANGED_HEARTBEAT10mproxmox.node.rrd[{#NODE.NAME}]componentstoragenode{#NODE.NAME}ad3875dd697641afae1c7daa47cb575dProxmox: Node [{#NODE.NAME}]: Time zoneDEPENDENTproxmox.node.timezone[{#NODE.NAME}]7dCHARTime zone.JSONPATH$.data.timezoneDISCARD_UNCHANGED_HEARTBEAT12hproxmox.node.time[{#NODE.NAME}]componentsystemnode{#NODE.NAME}35f2be8b0dcf4522a3571d4e7d42ef10Proxmox: Node [{#NODE.NAME}]: TimeHTTP_AGENTproxmox.node.time[{#NODE.NAME}]0TEXTRead server time and time zone settings.3shttps://{HOST.CONN}:{$PVE.URL.PORT}/api2/json/nodes/{#NODE.NAME}/timeAuthorizationPVEAPIToken={$PVE.TOKEN.ID}={$PVE.TOKEN.SECRET}componentrawb845fe4328874854a3d5b16bf3038d15Proxmox: Node [{#NODE.NAME}]: UptimeDEPENDENTproxmox.node.uptime[{#NODE.NAME}]2w0NO_DISCOVERuptimeThe system uptime expressed in the following format: "N days, hh:mm:ss".JSONPATH$.data.uptimeproxmox.node.status[{#NODE.NAME}]componentsystem0731e8f671fe4aeba1caf0808515ddf3last(/Proxmox VE by HTTP mbuz/proxmox.node.uptime[{#NODE.NAME}])<10mProxmox: Node [{#NODE.NAME}]: has been restartedProxmox: Node [{#NODE.NAME}]: has been restarted (uptime < 10m)INFOUptime is less than 10 minutes.YESProxmox: Node [{#NODE.NAME}] offlinelast(/Proxmox VE by HTTP mbuz/proxmox.node.online[{#NODE.NAME}]) <> 1scopenotice080f3009de8e4e8fa294af8b32667517Proxmox: Node [{#NODE.NAME}]: TimeDEPENDENTproxmox.node.utctime[{#NODE.NAME}]7dunixtimeSeconds since 1970-01-01 00:00:00 UTC.JSONPATH$.data.timeproxmox.node.time[{#NODE.NAME}]componentsystemnode{#NODE.NAME}9f2967a8562c41e483d58a9aa405f996min(/Proxmox VE by HTTP mbuz/proxmox.node.memused[{#NODE.NAME}],5m) / last(/Proxmox VE by HTTP mbuz/proxmox.node.memtotal[{#NODE.NAME}]) * 100 >{$PVE.MEMORY.PUSE.MAX.WARN:"{#NODE.NAME}"}Proxmox: Node [{#NODE.NAME}] high memory usageProxmox: Node [{#NODE.NAME}] high memory usage (over {$PVE.MEMORY.PUSE.MAX.WARN:"{#NODE.NAME}"}% use)Current use: {ITEM.LASTVALUE1} of {ITEM.LASTVALUE2}WARNINGMemory usage.scopeperformance9963001ef5c347b09f4a8cd31010c0bdmin(/Proxmox VE by HTTP mbuz/proxmox.node.rootused[{#NODE.NAME}],5m) / last(/Proxmox VE by HTTP mbuz/proxmox.node.roottotal[{#NODE.NAME}]) * 100 >{$PVE.ROOT.PUSE.MAX.WARN:"{#NODE.NAME}"}Proxmox: Node [{#NODE.NAME}] high root filesystem space usageProxmox: Node [{#NODE.NAME}] high root filesystem space usage (over {$PVE.ROOT.PUSE.MAX.WARN:"{#NODE.NAME}"}% use)Current use: {ITEM.LASTVALUE1} of {ITEM.LASTVALUE2}WARNINGRoot filesystem space usage.scopecapacity5d7fb3d3d4184c469298ba8aebe75515min(/Proxmox VE by HTTP mbuz/proxmox.node.swapused[{#NODE.NAME}],5m) / last(/Proxmox VE by HTTP mbuz/proxmox.node.swaptotal[{#NODE.NAME}]) * 100 > {$PVE.SWAP.PUSE.MAX.WARN:"{#NODE.NAME}"} and last(/Proxmox VE by HTTP mbuz/proxmox.node.swaptotal[{#NODE.NAME}]) > 0Proxmox: Node [{#NODE.NAME}] high swap usageProxmox: Node [{#NODE.NAME}] high swap usage (over {$PVE.SWAP.PUSE.MAX.WARN:"{#NODE.NAME}"}% use)Current use: {ITEM.LASTVALUE1} of {ITEM.LASTVALUE2}WARNINGIf there is no swap configured, this trigger is ignored.scopecapacity7a793c0d363741dc85e1acd7e1a3963cProxmox: Node [{#NODE.NAME}]: CPU usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.node.cpu[{#NODE.NAME}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.node.iowait[{#NODE.NAME}]
2GRADIENT_LINE00611C- Proxmox VE by HTTP mbuzproxmox.node.loadavg[{#NODE.NAME}]
e4053c8c005347259af4c8ca483220bbProxmox: Node [{#NODE.NAME}]: Memory usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.node.memused[{#NODE.NAME}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.node.memtotal[{#NODE.NAME}]
989db90c70704ffb839dc9cff32aa45bProxmox: Node [{#NODE.NAME}]: Network usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.node.netin[{#NODE.NAME}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.node.netout[{#NODE.NAME}]
ca3502c1e8ec4ac2ac86057d1b5e6843Proxmox: Node [{#NODE.NAME}]: Root filesystem usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.node.rootused[{#NODE.NAME}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.node.roottotal[{#NODE.NAME}]
ffab7f5306f447a1bd4086cfa2463631Proxmox: Node [{#NODE.NAME}]: Swap usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.node.swapused[{#NODE.NAME}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.node.swaptotal[{#NODE.NAME}]
proxmox.cluster.resources{#NODE.NAME}$.node{#RESOURCE.TYPE}$.typeDISCARD_UNCHANGED_HEARTBEAT12he1d67aeb29ef4b5ca1f03036d86f6bb1QEMU discoveryDEPENDENTproxmox.qemu.discoveryAND{#RESOURCE.TYPE}^qemu${#TAGS}{$PVE.TAGS.MATCHES}1dDISABLE_AFTER1h4018d4d217f64f3fb6c3f2cff79ce594VM {#QEMU.NAME} [{#NODE.NAME}]: CPU usageDEPENDENTproxmox.qemu.cpu[{#QEMU.ID}]7d%CPU load.JSONPATH$.data.cpuMULTIPLIER100proxmox.qemu.status[{#QEMU.ID}]componentcpuname{#QEMU.NAME}node{#NODE.NAME}vm{#QEMU.ID}73c29459f12e4e4d9aee5c4855c67804min(/Proxmox VE by HTTP mbuz/proxmox.qemu.cpu[{#QEMU.ID}],5m) > {$PVE.VM.CPU.PUSE.MAX.WARN:"{#QEMU.ID}"}VM {#QEMU.NAME} [{#NODE.NAME}]: high CPU usageVM {#QEMU.NAME} [{#NODE.NAME}]: high CPU usage (over {$PVE.VM.CPU.PUSE.MAX.WARN:"{#QEMU.ID}"}% use)Current use: {ITEM.LASTVALUE1}WARNINGCPU usage.scopeperformanceeb361be566424090bf65bc3ff1e0bd43VM {#QEMU.NAME} [{#NODE.NAME}]: Disk read, rateDEPENDENTproxmox.qemu.diskread[{#QEMU.ID}]7dBpsDisk read.JSONPATH$.data.diskreadCHANGE_PER_SECONDproxmox.qemu.status[{#QEMU.ID}]componentstoragename{#QEMU.NAME}node{#NODE.NAME}vm{#QEMU.ID}b60b94c552e04c8db0d558c1e4d34a4cVM {#QEMU.NAME} [{#NODE.NAME}]: Disk write, rateDEPENDENTproxmox.qemu.diskwrite[{#QEMU.ID}]7dBpsDisk write.JSONPATH$.data.diskwriteCHANGE_PER_SECONDproxmox.qemu.status[{#QEMU.ID}]componentstoragename{#QEMU.NAME}node{#NODE.NAME}vm{#QEMU.ID}896fea12a92644c0801f89bf21b89959VM {#QEMU.NAME} [{#NODE.NAME}]: Memory totalDEPENDENTproxmox.qemu.maxmem[{#QEMU.ID}]7dBThe total memory expressed in bytes.JSONPATH$.data.maxmemproxmox.qemu.status[{#QEMU.ID}]componentmemoryname{#QEMU.NAME}node{#NODE.NAME}vm{#QEMU.ID}667e0522d98f466f9056bf4e91ae88aeVM {#QEMU.NAME} [{#NODE.NAME}]: Memory utilizationCALCULATEDproxmox.qemu.memutil[{#QEMU.ID}]7d%(last(//proxmox.qemu.mem[{#QEMU.ID}])/last(//proxmox.qemu.maxmem[{#QEMU.ID}]))*100Memory utilization in %componentmemoryname{#QEMU.NAME}node{#NODE.NAME}vm{#QEMU.ID}d17e4429d0c644ee823197bf6fbfb18aVM {#QEMU.NAME} [{#NODE.NAME}]: Memory usageDEPENDENTproxmox.qemu.mem[{#QEMU.ID}]7dBUsed memory in bytes.JSONPATH$.data.memproxmox.qemu.status[{#QEMU.ID}]componentmemoryname{#QEMU.NAME}node{#NODE.NAME}vm{#QEMU.ID}29204a7d73e84513b016247468501e3dVM {#QEMU.NAME} [{#NODE.NAME}]: Incoming data, rateDEPENDENTproxmox.qemu.netin[{#QEMU.ID}]7dbpsIncoming data rate.JSONPATH$.data.netinCHANGE_PER_SECONDMULTIPLIER8proxmox.qemu.status[{#QEMU.ID}]componentnetworkname{#QEMU.NAME}node{#NODE.NAME}vm{#QEMU.ID}adf5594718324a51a3b49bacf1c04ce1VM {#QEMU.NAME} [{#NODE.NAME}]: Outgoing data, rateDEPENDENTproxmox.qemu.netout[{#QEMU.ID}]7dbpsOutgoing data rate.JSONPATH$.data.netoutCHANGE_PER_SECONDMULTIPLIER8proxmox.qemu.status[{#QEMU.ID}]componentnetworkname{#QEMU.NAME}node{#NODE.NAME}vm{#QEMU.ID}079629d0f97a45dbae46aa6b389b544eVM {#QEMU.NAME} [{#NODE.NAME}]: StatusHTTP_AGENTproxmox.qemu.status[{#QEMU.ID}]0TEXTRead VM status.3shttps://{HOST.CONN}:{$PVE.URL.PORT}/api2/json/nodes/{#NODE.NAME}/{#QEMU.ID}/status/currentAuthorizationPVEAPIToken={$PVE.TOKEN.ID}={$PVE.TOKEN.SECRET}componentrawvm{#QEMU.ID}bc9f464d5c1c4ff0990e602f6a7b93bfVM {#QEMU.NAME} [{#NODE.NAME}]: UptimeDEPENDENTproxmox.qemu.uptime[{#QEMU.ID}]2w0uptimeThe system uptime expressed in the following format: "N days, hh:mm:ss".JSONPATH$.data.uptimeproxmox.qemu.status[{#QEMU.ID}]componentsystemvm{#QEMU.ID}d2d9c798f4354667aa72ff3e9559f43flast(/Proxmox VE by HTTP mbuz/proxmox.qemu.uptime[{#QEMU.ID}])<10mVM {#QEMU.NAME} [{#NODE.NAME}]: has been restartedVM {#QEMU.NAME} [{#NODE.NAME}]: has been restarted (uptime < 10m)INFOUptime is less than 10 minutes.YESVM {#QEMU.NAME} [{#NODE.NAME}]: Not runninglast(/Proxmox VE by HTTP mbuz/proxmox.qemu.vmstatus[{#QEMU.ID}])<>"running"scopenotice5e224a5a38ae464f973285a21936118fVM {#QEMU.NAME} [{#NODE.NAME}]: StatusDEPENDENTproxmox.qemu.vmstatus[{#QEMU.ID}]7dCHARJSONPATH$.data.statusproxmox.qemu.status[{#QEMU.ID}]componentsystemvm{#QEMU.ID}ad9ec9afc6ce44a59591a6b3b718266alast(/Proxmox VE by HTTP mbuz/proxmox.qemu.vmstatus[{#QEMU.ID}])<>"running"VM {#QEMU.NAME} [{#NODE.NAME}]: Not runningCurrent value: {ITEM.LASTVALUE1}AVERAGEVM state is not "running".scopenotice06c79a4051c84923b8d141715fd65f95min(/Proxmox VE by HTTP mbuz/proxmox.qemu.mem[{#QEMU.ID}],5m) / last(/Proxmox VE by HTTP mbuz/proxmox.qemu.maxmem[{#QEMU.ID}]) * 100 >{$PVE.VM.MEMORY.PUSE.MAX.WARN:"{#QEMU.ID}"}VM {#QEMU.NAME} [{#NODE.NAME}]: high memory usageVM {#QEMU.NAME} [{#NODE.NAME}]: high memory usage (over {$PVE.VM.MEMORY.PUSE.MAX.WARN:"{#QEMU.ID}"}% use)Current use: {ITEM.LASTVALUE1} of {ITEM.LASTVALUE2}WARNINGMemory usage.YESscopeperformance81dcde5931714c9db136dfc8b9d83de1Proxmox: VM [{#NODE.NAME}/{#QEMU.NAME} ({#QEMU.ID})]: CPU usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.qemu.cpu[{#QEMU.ID}]
c93fd1b43a9542b18ffadfb30f989b5bProxmox: VM [{#NODE.NAME}/{#QEMU.NAME} ({#QEMU.ID})]: Disk usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.qemu.diskwrite[{#QEMU.ID}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.qemu.diskread[{#QEMU.ID}]
33645b268c8f4bd193c929f5f21e4ad9Proxmox: VM [{#NODE.NAME}/{#QEMU.NAME} ({#QEMU.ID})]: Memory usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.qemu.mem[{#QEMU.ID}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.qemu.maxmem[{#QEMU.ID}]
10437b74f59248c9a8a463dde0a22e84Proxmox: VM [{#NODE.NAME}/{#QEMU.NAME} ({#QEMU.ID})]: Network usageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.qemu.netin[{#QEMU.ID}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.qemu.netout[{#QEMU.ID}]
proxmox.cluster.resources{#NODE.NAME}$.node{#QEMU.ID}$.id{#QEMU.NAME}$.name{#RESOURCE.TYPE}$.type{#TAGS}$.tagsDISCARD_UNCHANGED_HEARTBEAT12hJAVASCRIPTtry {
// Attempt to parse the incoming value as JSON.
var response = JSON.parse(value);
var items_array = null;
// Check if the JSON is an object containing a 'data' array.
if (response && Array.isArray(response.data)) {
items_array = response.data;
}
// Otherwise, check if the JSON itself is an array.
else if (Array.isArray(response)) {
items_array = response;
}
// If we successfully found an array of items, process it.
if (items_array) {
items_array.forEach(function(item) {
// Ensure the item is an object and add 'tags' if it's missing.
if (typeof item === 'object' && item !== null && !item.hasOwnProperty('tags')) {
item.tags = "";
}
});
}
// Return the full, potentially modified, original structure.
return JSON.stringify(response);
} catch (e) {
// If any error occurs (e.g., invalid JSON), return the original value untouched.
// This allows Zabbix to report the root problem instead of a script failure.
return value;
}9b99f9cc37024dc49c836e467d8f23ddStorage discoveryDEPENDENTproxmox.storage.discoveryAND{#RESOURCE.TYPE}^storage${#STORAGE.NAME}{$PVE.STORAGE.NOT.MATCH}NOT_MATCHES_REGEX1dDISABLE_AFTER1h795b6965ba33419c979d114094bf0f7bStorage {#STORAGE.NAME} [{#NODE.NAME}]: ContentDEPENDENTproxmox.node.content[{#NODE.NAME},{#STORAGE.NAME}]7dCHARAllowed storage content types.JSONPATH$.data[?(@.id == "storage/{#NODE.NAME}/{#STORAGE.NAME}")].content.first()DISCARD_UNCHANGED_HEARTBEAT12hproxmox.cluster.resourcescomponentstoragename{#STORAGE.NAME}node{#NODE.NAME}5d9fcea842cd4ce1a774c40e71113363Storage {#STORAGE.NAME} [{#NODE.NAME}]: FreeCALCULATEDproxmox.node.diskfree[{#NODE.NAME},{#STORAGE.NAME}]7dBlast(//proxmox.node.maxdisk[{#NODE.NAME},{#STORAGE.NAME}])-last(//proxmox.node.disk[{#NODE.NAME},{#STORAGE.NAME}])Used disk space in bytes.DISCARD_UNCHANGED_HEARTBEAT10mcomponentstoragename{#STORAGE.NAME}node{#NODE.NAME}7b11841645514560a6dfc9b96261a310Proxmox: Storage [{#NODE.NAME}/{#STORAGE.NAME}]: UtilizationCALCULATEDproxmox.node.diskutil[{#NODE.NAME},{#STORAGE.NAME}]FLOAT%(last(//proxmox.node.disk[{#NODE.NAME},{#STORAGE.NAME}])/ last(//proxmox.node.maxdisk[{#NODE.NAME},{#STORAGE.NAME}]))*100DISCARD_UNCHANGED_HEARTBEAT10mcomponentstoragename{#STORAGE.NAME}node{#NODE.NAME}1dcbe720b8aa4325907d2a05f29ceb0dmin(/Proxmox VE by HTTP mbuz/proxmox.node.diskutil[{#NODE.NAME},{#STORAGE.NAME}],5m) >{$PVE.STORAGE.PUSE.MAX.WARN:"{#NODE.NAME}/{#STORAGE.NAME}"}Storage {#STORAGE.NAME} [{#NODE.NAME}]: high filesystem space usageStorage {#STORAGE.NAME} [{#NODE.NAME}]: high filesystem space usage (over {$PVE.STORAGE.PUSE.MAX.WARN:"{#NODE.NAME}/{#STORAGE.NAME}"}% use)Current use: {ITEM.LASTVALUE}WARNINGRoot filesystem space usage.scopecapacitybc04adb93c364fee8740161577e00571Storage {#STORAGE.NAME} [{#NODE.NAME}]: UsedDEPENDENTproxmox.node.disk[{#NODE.NAME},{#STORAGE.NAME}]7dBUsed disk space in bytes.JSONPATH$.data[?(@.id == "storage/{#NODE.NAME}/{#STORAGE.NAME}")].disk.first()DISCARD_UNCHANGED_HEARTBEAT10mproxmox.cluster.resourcescomponentstoragename{#STORAGE.NAME}node{#NODE.NAME}b5493dec3d04486681aeae32603f7a84Storage {#STORAGE.NAME} [{#NODE.NAME}]: SizeDEPENDENTproxmox.node.maxdisk[{#NODE.NAME},{#STORAGE.NAME}]7dBStorage size in bytes.JSONPATH$.data[?(@.id == "storage/{#NODE.NAME}/{#STORAGE.NAME}")].maxdisk.first()DISCARD_UNCHANGED_HEARTBEAT10mproxmox.cluster.resourcescomponentstoragename{#STORAGE.NAME}node{#NODE.NAME}15e54cca0b2641a2ad318f2fb1e8fdf5Storage {#STORAGE.NAME} [{#NODE.NAME}]: TypeDEPENDENTproxmox.node.plugintype[{#NODE.NAME},{#STORAGE.NAME}]7dCHARMore specific type, if available.JSONPATH$.data[?(@.id == "storage/{#NODE.NAME}/{#STORAGE.NAME}")].plugintype.first()DISCARD_UNCHANGED_HEARTBEAT12hproxmox.cluster.resourcescomponentstoragename{#STORAGE.NAME}node{#NODE.NAME}1ca384ddfbed4fe9aebfca609a9bad55min(/Proxmox VE by HTTP mbuz/proxmox.node.disk[{#NODE.NAME},{#STORAGE.NAME}],5m) / last(/Proxmox VE by HTTP mbuz/proxmox.node.maxdisk[{#NODE.NAME},{#STORAGE.NAME}]) * 100 >{$PVE.STORAGE.PUSE.MAX.WARN:"{#NODE.NAME}/{#STORAGE.NAME}"}Storage {#STORAGE.NAME} [{#NODE.NAME}]: high filesystem space usageStorage {#STORAGE.NAME} [{#NODE.NAME}]: high filesystem space usage (over {$PVE.STORAGE.PUSE.MAX.WARN:"{#NODE.NAME}/{#STORAGE.NAME}"}% use)Current use: {ITEM.LASTVALUE1} of {ITEM.LASTVALUE2}DISABLEDWARNINGRoot filesystem space usage.scopecapacityfd4419730469448f9cd776c9552ff851Proxmox: Storage [{#NODE.NAME}/{#STORAGE.NAME}]: UsageGRADIENT_LINE199C0D- Proxmox VE by HTTP mbuzproxmox.node.disk[{#NODE.NAME},{#STORAGE.NAME}]
1GRADIENT_LINEF63100- Proxmox VE by HTTP mbuzproxmox.node.maxdisk[{#NODE.NAME},{#STORAGE.NAME}]
proxmox.cluster.resources{#NODE.NAME}$.node{#RESOURCE.TYPE}$.type{#STORAGE.NAME}$.storageDISCARD_UNCHANGED_HEARTBEAT12hclasssoftwaretargetproxmox{$PVE.CPU.PUSE.MAX.WARN}90Maximum used CPU in percentage.{$PVE.LXC.CPU.PUSE.MAX.WARN}90Maximum used CPU in percentage.{$PVE.LXC.MEMORY.PUSE.MAX.WARN}90Maximum used memory in percentage.{$PVE.MEMORY.PUSE.MAX.WARN}90Maximum used memory in percentage.{$PVE.ROOT.PUSE.MAX.WARN}90Maximum used root space in percentage.{$PVE.STORAGE.NOT.MATCH}{$PVE.STORAGE.PUSE.MAX.WARN}90Maximum used storage space in percentage.{$PVE.SWAP.PUSE.MAX.WARN}90Maximum used swap space in percentage.{$PVE.TAGS.MATCHES}^.*$Used to discovery only LXC/QEMU with a specific tag{$PVE.TOKEN.ID}USER@REALM!TOKENIDAPI tokens allow stateless access to most parts of the REST API by another system, software or API client.{$PVE.TOKEN.SECRET}xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxSecret key.{$PVE.URL.PORT}8006The API uses the HTTPS protocol and the server listens to port 8006 by default.{$PVE.VM.CPU.PUSE.MAX.WARN}90Maximum used CPU in percentage.{$PVE.VM.MEMORY.PUSE.MAX.WARN}90Maximum used memory in percentage.36f68668699746e19f5ccec5ae687857Cluster quorate1Yes0Nodcf924bbbf8b4db7a6fe675a18b3f6aaHTTP response status code100Continue101Switching Protocols102Processing200OK201Created202Accepted203Non-Authoritative Information204No Content205Reset Content206Partial Content207Multi-Status208Already Reported226IM Used300Multiple Choices301Moved Permanently302Found303See Other304Not Modified305Use Proxy306Switch Proxy307Temporary Redirect308Permanent Redirect/Resume Incomplete400Bad Request401Unauthorized402Payment Required403Forbidden404Not Found405Method Not Allowed406Not Acceptable407Proxy Authentication Required408Request Timeout409Conflict410Gone411Length Required412Precondition Failed413Payload Too Large414Request-URI Too Long415Unsupported Media Type416Requested Range Not Satisfiable417Expectation Failed418I'm a Teapot419Authentication Timeout420Method Failure/Enhance Your Calm421Misdirected Request422Unprocessable Entity423Locked424Failed Dependency426Upgrade Required428Precondition Required429Too Many Requests431Request Header Fields Too Large440Login Timeout444No Response449Retry With450Blocked by Windows Parental Controls451Unavailable for Legal Reasons/Redirect494Request Header Too Large495Cert Error496No Cert497HTTP to HTTPS498Token Expired/Invalid499Client Closed Request/Token Required500Internal Server Error501Not Implemented502Bad Gateway503Service Unavailable504Gateway Timeout505HTTP Version Not Supported506Variant Also Negotiates507Insufficient Storage508Loop Detected509Bandwidth Limit Exceeded510Not Extended511Network Authentication Required520Unknown Error598Network Read Timeout Error599Network Connect Timeout Error385e54d3159a4141887d3afee5e7f531Node online1Online0Offline