parent
8f69d132e8
commit
6c012aece0
3 changed files with 88 additions and 0 deletions
@ -0,0 +1,12 @@ |
|||||||
|
# Discover VDO volumes |
||||||
|
# $1 not used for now |
||||||
|
UserParameter=vfs.vdo.vol.discovery[*],/var/lib/zabbix/bin/disco_zfs --what=volumes |
||||||
|
|
||||||
|
# Type: Agent or Agent (active) |
||||||
|
# Key: vfs.vdo.vol[volume,item] where volume is the name of the volume to monitor |
||||||
|
# item can be one of the valid keys (run manually without --value arg to see available keys) |
||||||
|
UserParameter=vfs.vdo.vol[*],/var/lib/zabbix/bin/check_vdo_sudo --volume=$1 --value=$2 |
||||||
|
|
||||||
|
# Type: Agent or Agent (active) |
||||||
|
# You can also get all the info about a vdo volume at once, in JSON |
||||||
|
UserParameter=vfs.vdo.vol.all[*],/var/lib/zabbix/bin/check_vdo_sudo --volume=$1 |
@ -0,0 +1,45 @@ |
|||||||
|
#!/usr/bin/perl -w |
||||||
|
|
||||||
|
use strict; |
||||||
|
use warnings; |
||||||
|
use JSON; |
||||||
|
use Getopt::Long; |
||||||
|
use File::Which; |
||||||
|
|
||||||
|
my $vdostats = which('vdostats'); |
||||||
|
my $json = {}; |
||||||
|
my $pretty = 0; |
||||||
|
my $volume = undef; |
||||||
|
my $val = undef; |
||||||
|
|
||||||
|
GetOptions( |
||||||
|
'volume=s' => \$volume, |
||||||
|
'value=s' => \$val, |
||||||
|
'pretty' => \$pretty |
||||||
|
); |
||||||
|
|
||||||
|
if ($volume) { |
||||||
|
if ($volume !~ m/^\w+$/){ |
||||||
|
die "Invalide volume name\n"; |
||||||
|
} |
||||||
|
foreach my $line (qx($vdostats --all $volume)){ |
||||||
|
if ($line =~ m/^\s+([^:]+)\s+:\s+([\d\w]+)/){ |
||||||
|
my ($key,$val) = ($1,$2); |
||||||
|
# Cleanup key |
||||||
|
$key =~ s/\s+$//; |
||||||
|
$key =~ s/\s+/_/g; |
||||||
|
$key =~ s/\(|\)//g; |
||||||
|
$key =~ s/%/pct/g; |
||||||
|
$json->{lc $key} = $val; |
||||||
|
} |
||||||
|
} |
||||||
|
} else { |
||||||
|
print 'ZBX_NOTSUPPORTED'; |
||||||
|
exit 0; |
||||||
|
} |
||||||
|
if (defined $val) { |
||||||
|
print $json->{$val} || 'ZBX_NOTSUPPORTED'; |
||||||
|
} else { |
||||||
|
print to_json($json, { pretty => $pretty }); |
||||||
|
} |
||||||
|
print "\n"; |
@ -0,0 +1,31 @@ |
|||||||
|
#!/usr/bin/perl -w |
||||||
|
|
||||||
|
use strict; |
||||||
|
use warnings; |
||||||
|
use JSON; |
||||||
|
use File::Which; |
||||||
|
use Getopt::Long; |
||||||
|
|
||||||
|
my $json; |
||||||
|
@{$json->{data}} = (); |
||||||
|
|
||||||
|
my $what = 'volumes'; |
||||||
|
my $pretty = 0; |
||||||
|
|
||||||
|
GetOptions( |
||||||
|
'what=s' => \$what, |
||||||
|
'pretty' => \$pretty |
||||||
|
); |
||||||
|
|
||||||
|
my $vdostats = which('vdostats'); |
||||||
|
|
||||||
|
if (defined $vdostats) { |
||||||
|
foreach my $line (qx($vdostats)) { |
||||||
|
if ($line =~ m|^/dev/mapper/([^\s]+)|) { |
||||||
|
push @{$json->{data}}, { |
||||||
|
'{#VDO_VOL}' => $1 |
||||||
|
}; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
print to_json($json, { pretty => $pretty }) . "\n"; |
Loading…
Reference in new issue