parent
532775e403
commit
e7cf5f74cd
3 changed files with 83 additions and 38 deletions
@ -1,8 +1,8 @@ |
|||||||
# Type: Agent or Agent (active) |
# Discover LVM volume |
||||||
# Key: lvm[key] where key can be snapshot_max_alloc, snapshots, lv or vg |
# $1 can be groups, volumes or snapshots |
||||||
# Type of information: Numeric (integer 64bit) |
UserParameter=vfs.lvm.discovery[*],/usr/bin/sudo /var/lib/zabbix/bin/disco_lvm_sudo $1 |
||||||
# Units: depends on the key (snapshot_max_alloc is in %) |
|
||||||
# Custom multiplier: Do not use |
|
||||||
# Store Value: As is |
|
||||||
|
|
||||||
UserParameter=lvm[*],/usr/bin/sudo /var/lib/zabbix/bin/check_lvm_sudo $1 |
# Type: Agent or Agent (active) |
||||||
|
# Key: vfs.lvm.lv[volume,key] where volume is the path to a logical volume and |
||||||
|
# key can be size, allocation (for snapshots only) or status |
||||||
|
UserParameter=vfs.lvm.lv[*],/usr/bin/sudo /var/lib/zabbix/bin/check_lvm_sudo $1 $2 |
||||||
|
@ -1,38 +1,39 @@ |
|||||||
#!/bin/bash |
#!/usr/bin/perl -w |
||||||
|
|
||||||
PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin |
|
||||||
|
|
||||||
# Return the greatest snapshot allocation |
|
||||||
snapshot_max_alloc(){ |
|
||||||
MAX_PERCENT=0 |
|
||||||
for PERCENT in $(lvdisplay | grep % | sed -e 's/ Allocated to snapshot //g' -e 's/%//g'); do |
|
||||||
if [[ "$PERCENT" > "$MAX_PERCENT" ]]; then |
|
||||||
MAX_PERCENT=$PERCENT |
|
||||||
fi |
|
||||||
done |
|
||||||
echo "$MAX_PERCENT" |
|
||||||
} |
|
||||||
|
|
||||||
# Number of active snapshots |
use Linux::LVM; |
||||||
snapshots(){ |
|
||||||
echo $(lvdisplay | grep % | wc -l) |
Linux::LVM->units(B); |
||||||
} |
|
||||||
|
|
||||||
# Number of logical volumes |
if (@ARGV < 2){ |
||||||
lv(){ |
usage(); |
||||||
echo $(lvdisplay | grep 'LV Name' | wc -l) |
exit(1); |
||||||
} |
} |
||||||
|
|
||||||
# Number of volume group |
my $vol = $ARGV[0]; |
||||||
vg(){ |
my $what = $ARGV[1]; |
||||||
echo $(vgdisplay | grep 'VG Name' | wc -l) |
|
||||||
|
sub usage { |
||||||
|
print<<"EOF"; |
||||||
|
|
||||||
|
Usage: $0 <logical volume> [size|allocation|status] |
||||||
|
|
||||||
|
EOF |
||||||
} |
} |
||||||
|
|
||||||
case $1 in |
my %info = get_lv_info($vol); |
||||||
snapshot_max_alloc|snapshots|lv|vg) |
|
||||||
$1 |
|
||||||
;; |
|
||||||
*) |
|
||||||
echo 'ZBX_NOTSUPPORTED' |
|
||||||
esac |
|
||||||
|
|
||||||
|
if ($what eq 'size'){ |
||||||
|
print $info{size}; |
||||||
|
} |
||||||
|
elsif ($what eq 'allocation'){ |
||||||
|
my $ret = (defined $info{allocated_to_snapshot}) ? $info{allocated_to_snapshot} : "ZBX_NOTSUPPORTED"; |
||||||
|
$ret =~ s/,/\./; |
||||||
|
print $ret; |
||||||
|
} |
||||||
|
elsif ($what eq 'status'){ |
||||||
|
print $info{status}; |
||||||
|
} |
||||||
|
else{ |
||||||
|
usage(); |
||||||
|
} |
||||||
|
exit(0); |
||||||
|
@ -0,0 +1,44 @@ |
|||||||
|
#!/usr/bin/perl -w |
||||||
|
|
||||||
|
use Linux::LVM; |
||||||
|
use JSON; |
||||||
|
|
||||||
|
my $what = $ARGV[0]; |
||||||
|
|
||||||
|
open STDERR, '>/dev/null'; |
||||||
|
|
||||||
|
my $json; |
||||||
|
|
||||||
|
if ($what eq "volumes"){ |
||||||
|
foreach my $group (get_volume_group_list()){ |
||||||
|
my %lvs = get_logical_volume_information($group); |
||||||
|
foreach my $lv (keys %lvs){ |
||||||
|
push @{$json->{data}}, { "{#LVMVOL}" => "/dev/$group/$lv" }; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
elsif ($what eq "snapshots"){ |
||||||
|
foreach my $group (get_volume_group_list()){ |
||||||
|
my %lvs = get_logical_volume_information($group); |
||||||
|
foreach my $lv (keys %lvs){ |
||||||
|
if (defined $lvs{$lv}->{allocated_to_snapshot}){ |
||||||
|
push @{$json->{data}}, { "{#LVMSNAP}" => "/dev/$group/$lv" }; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
elsif ($what eq "groups"){ |
||||||
|
foreach my $group (get_volume_group_list()){ |
||||||
|
push @{$json->{data}}, { "{#LVMGRP}" => $group }; |
||||||
|
} |
||||||
|
} |
||||||
|
else{ |
||||||
|
print <<"EOF"; |
||||||
|
|
||||||
|
Usage: $0 [volumes|snapshots|groups] |
||||||
|
|
||||||
|
EOF |
||||||
|
} |
||||||
|
|
||||||
|
print to_json($json); |
||||||
|
exit(0); |
Loading…
Reference in new issue