Better compat with 4.4 vfs.dev.discovery (and use lsblk to get the list of dev if available)

This commit is contained in:
Daniel Berteaud 2019-11-27 09:29:10 +01:00
parent db939d3e92
commit e30dcda6da
1 changed files with 27 additions and 9 deletions

View File

@ -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);