Better compat with 4.4 vfs.dev.discovery (and use lsblk to get the list of dev if available)
This commit is contained in:
parent
db939d3e92
commit
e30dcda6da
|
@ -4,18 +4,36 @@ use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
use Zabbix::Agent::Addons::Disks;
|
use Zabbix::Agent::Addons::Disks;
|
||||||
use JSON;
|
use JSON;
|
||||||
|
use File::Which;
|
||||||
|
use Getopt::Long;
|
||||||
|
|
||||||
|
my $pretty = 0;
|
||||||
|
GetOptions(
|
||||||
|
'pretty' => \$pretty
|
||||||
|
);
|
||||||
|
|
||||||
|
my $lsblk = which('lsblk');
|
||||||
|
|
||||||
my $json;
|
my $json;
|
||||||
@{$json->{data}} = ();
|
@{$json->{data}} = ();
|
||||||
foreach my $block (Zabbix::Agent::Addons::Disks::list_block_dev()){
|
if (defined $lsblk){
|
||||||
my $size = 1;
|
foreach my $line (qx($lsblk -o KNAME,TYPE,SIZE -r -n -b)){
|
||||||
if ( -e "/sys/block/$block/size"){
|
my ($block,$type,$size) = split(/\s+/, $line);
|
||||||
open SIZE, "/sys/block/$block/size";
|
push @{$json->{data}}, {
|
||||||
$size = join "", <SIZE>;
|
"{#BLOCKDEVICE}" => $block, # Compat with previous zabbix-agent-addons
|
||||||
close SIZE;
|
"{#DEVNAME}" => $block, # New macro name for the native vfs.dev.discovery key in 4.4
|
||||||
chomp($size);
|
"{#DEVTYPE}" => $type,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# Fallback if lsblk is not available
|
||||||
|
foreach my $block (Zabbix::Agent::Addons::Disks::list_block_dev()){
|
||||||
|
push @{$json->{data}}, {
|
||||||
|
"{#BLOCKDEVICE}" => $block,
|
||||||
|
"{#DEVNAME}" => $block,
|
||||||
|
"{#DEVTYPE}" => 'disk'
|
||||||
|
};
|
||||||
}
|
}
|
||||||
push @{$json->{data}}, { "{#BLOCKDEVICE}" => $block, "{#BLOCKSIZE}" => $size, "{#DEVNAME}" => $block };
|
|
||||||
}
|
}
|
||||||
print to_json($json);
|
print to_json($json, { pretty => $pretty });
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
Loading…
Reference in New Issue