zabbix-agent-addons/zabbix_scripts/disco_lvm_sudo
Daniel Berteaud c99874dd2d Fix disco_lvm_sudo when there's no VG at all
It was returning an empty string, which is not expected by Zabbix Server, so the item was marked as unsupported. It's now returning an empty JSON list
2016-11-24 16:21:37 +01:00

62 lines
1.6 KiB
Perl

#!/usr/bin/perl -w
use Linux::LVM;
use JSON;
my $what = $ARGV[0];
open STDERR, '>/dev/null';
my $json;
@{$json->{data}} = ();
my @vg = eval { get_volume_group_list() };
unless ($@){
if ($what eq "volumes"){
foreach my $group (@vg){
my %lvs = get_logical_volume_information($group);
foreach my $lv (keys %lvs){
$lv = ($lv =~ m!^/dev/$group!) ? $lv : "/dev/$group/$lv";
push @{$json->{data}}, { "{#LVMVOL}" => "$lv" };
}
}
}
elsif ($what eq "snapshots"){
foreach my $group (@vg){
my %lvs = get_logical_volume_information($group);
foreach my $lv (keys %lvs){
if (defined $lvs{$lv}->{allocated_to_snapshot}){
$lv = ($lv =~ m!^/dev/$group!) ? $lv : "/dev/$group/$lv";
push @{$json->{data}}, { "{#LVMSNAP}" => "$lv" };
}
}
}
}
elsif ($what eq "thin_pools"){
foreach my $group (@vg){
my %lvs = get_logical_volume_information($group);
foreach my $lv (keys %lvs){
if (defined $lvs{$lv}->{allocated_pool_data}){
$lv = ($lv =~ m!^/dev/$group!) ? $lv : "/dev/$group/$lv";
push @{$json->{data}}, { "{#LVMTHINP}" => "$lv" };
}
}
}
}
elsif ($what eq "groups"){
foreach my $group (@vg){
push @{$json->{data}}, { "{#LVMGRP}" => $group }; }
}
else{
print <<"EOF";
Usage: $0 [volumes|snapshots|thin_pools|groups]
EOF
exit 1;
}
}
print to_json($json);
exit(0);