diff --git a/zabbix_scripts/check_pve_sudo b/zabbix_scripts/check_pve_sudo index 2875727..6d3e877 100644 --- a/zabbix_scripts/check_pve_sudo +++ b/zabbix_scripts/check_pve_sudo @@ -51,6 +51,12 @@ if ($cluster){ read => 0, write => 0 }; + $json->{guests} = { + qemu => 0, + qemu_running => 0, + lxc => 0, + lxc_running => 0 + }; my @nodes = (); foreach my $item (@{$cluster}){ if ($item->{type} eq 'cluster'){ @@ -79,11 +85,27 @@ if ($cluster){ $json->{network}->{out} += $guest->{netout} || 0; $json->{disk}->{read} += $guest->{diskread} || 0; $json->{disk}->{write} += $guest->{diskwrite} || 0; + my $type = $guest->{type}; + $json->{guests}->{$type}++; + $json->{guests}->{$type . '_running'}++ if ($guest->{status} eq 'running'); } } elsif ($node){ + $json->{guests} = { + qemu => 0, + qemu_running => 0, + lxc => 0, + lxc_running => 0 + }; foreach my $item (qw(status version subscription)){ $json->{$item} = get_api_data("/nodes/$node/$item"); } + my $guests = get_api_data('/cluster/resources', '--type=vm'); + foreach my $guest (@{$guests}){ + next if ($guest->{node} ne $node); + my $type = $guest->{type}; + $json->{guests}->{$type}++; + $json->{guests}->{$type . '_running'}++ if ($guest->{status} eq 'running'); + } } elsif ($guest){ my $guests = get_api_data('/cluster/resources', '--type=vm'); foreach my $g (@{$guests}){ diff --git a/zabbix_templates/Template_App_PVE_Cluster.xml b/zabbix_templates/Template_App_PVE_Cluster.xml index 449f0e6..209a8b2 100644 --- a/zabbix_templates/Template_App_PVE_Cluster.xml +++ b/zabbix_templates/Template_App_PVE_Cluster.xml @@ -1,7 +1,7 @@ - 4.4 - 2020-03-02T15:26:38Z + 5.0 + 2021-01-08T12:03:11Z Templates @@ -200,6 +200,50 @@ POST + + PVE Cluster: Number of LXC guests + DEPENDENT + pve.check[cluster,lxc] + 0 + 1825d + !container(s) + + + Vitualization + + + + + JSONPATH + $.guests.lxc + + + + pve.check.all[cluster] + + + + PVE Cluster: Number of running LXC guests + DEPENDENT + pve.check[cluster,lxc_running] + 0 + 1825d + !container(s) + + + Vitualization + + + + + JSONPATH + $.guests.lxc_running + + + + pve.check.all[cluster] + + PVE Cluster: Free memory DEPENDENT @@ -367,6 +411,50 @@ + + PVE Cluster: Number of QEMU guests + DEPENDENT + pve.check[cluster,qemu] + 0 + 1825d + !vm + + + Vitualization + + + + + JSONPATH + $.guests.qemu + + + + pve.check.all[cluster] + + + + PVE Cluster: Number of running QEMU guests + DEPENDENT + pve.check[cluster,qemu_running] + 0 + 1825d + !vm + + + Vitualization + + + + + JSONPATH + $.guests.qemu_running + + + + pve.check.all[cluster] + + PVE Cluster: Quorate DEPENDENT @@ -963,6 +1051,40 @@ POST + + PVE Node: {#PVE_NODE_NAME} LXC guests + DEPENDENT + pve.check[node,{#PVE_NODE_NAME},lxc] + 0 + 1825d + !container(s) + + + JSONPATH + $.guests.lxc + + + + pve.check.all[node,{#PVE_NODE_NAME}] + + + + PVE Node: {#PVE_NODE_NAME} running LXC guests + DEPENDENT + pve.check[node,{#PVE_NODE_NAME},lxc_running] + 0 + 1825d + !container(s) + + + JSONPATH + $.guests.lxc_running + + + + pve.check.all[node,{#PVE_NODE_NAME}] + + PVE Node: {#PVE_NODE_NAME} free memory DEPENDENT @@ -1054,6 +1176,40 @@ POST + + PVE Node: {#PVE_NODE_NAME} QEMU guests + DEPENDENT + pve.check[node,{#PVE_NODE_NAME},qemu] + 0 + 1825d + !vm + + + JSONPATH + $.guests.qemu + + + + pve.check.all[node,{#PVE_NODE_NAME}] + + + + PVE Node: {#PVE_NODE_NAME} running QEMU guests + DEPENDENT + pve.check[node,{#PVE_NODE_NAME},qemu_running] + 0 + 1825d + !vm + + + JSONPATH + $.guests.qemu_running + + + + pve.check.all[node,{#PVE_NODE_NAME}] + + PVE Node: {#PVE_NODE_NAME} uptime DEPENDENT @@ -1500,6 +1656,28 @@ + + PVE: Pool: {#PVE_POOL_ID}: Disk I/O + + + GRADIENT_LINE + 00BB00 + + Template_App_PVE_Cluster + pve.check[pool,{#PVE_POOL_ID},diskread] + + + + 1 + GRADIENT_LINE + EE0000 + + Template_App_PVE_Cluster + pve.check[pool,{#PVE_POOL_ID},diskwrite] + + + + PVE: Pool: {#PVE_POOL_ID}: Disk space allocation STACKED @@ -1522,6 +1700,29 @@ + + PVE: Pool: {#PVE_POOL_ID}: Memory usage + FIXED + + + GRADIENT_LINE + 00AA00 + + Template_App_PVE_Cluster + pve.check[pool,{#PVE_POOL_ID},mem] + + + + 1 + BOLD_LINE + EE0000 + + Template_App_PVE_Cluster + pve.check[pool,{#PVE_POOL_ID},maxmem] + + + + PVE: Pool: {#PVE_POOL_ID}: Trafic réseau @@ -1568,51 +1769,6 @@ - - PVE: Pool: {#PVE_POOL_ID} Disk I/O - - - GRADIENT_LINE - 00BB00 - - Template_App_PVE_Cluster - pve.check[pool,{#PVE_POOL_ID},diskread] - - - - 1 - GRADIENT_LINE - EE0000 - - Template_App_PVE_Cluster - pve.check[pool,{#PVE_POOL_ID},diskwrite] - - - - - - PVE: Pool: {#PVE_POOL_ID} Memory usage - FIXED - - - GRADIENT_LINE - 00AA00 - - Template_App_PVE_Cluster - pve.check[pool,{#PVE_POOL_ID},mem] - - - - 1 - BOLD_LINE - EE0000 - - Template_App_PVE_Cluster - pve.check[pool,{#PVE_POOL_ID},maxmem] - - - - POST @@ -1823,6 +1979,28 @@ + + PVE Cluster: Guests + STACKED + + + 1 + F63100 + + Template_App_PVE_Cluster + pve.check[cluster,lxc_running] + + + + 2 + 1A7C11 + + Template_App_PVE_Cluster + pve.check[cluster,qemu_running] + + + + PVE Cluster: KSM shared memory