Fix zpool iostat as /proc/spl/kstat/zfs/pool/io doesn't exist anymore
This commit is contained in:
parent
72682f9bad
commit
cfdd92b9c6
|
@ -163,13 +163,20 @@ sub convert_suffix {
|
||||||
sub get_zpool_stats {
|
sub get_zpool_stats {
|
||||||
my $pool = shift;
|
my $pool = shift;
|
||||||
my $stats = {};
|
my $stats = {};
|
||||||
return $stats unless (-e "/proc/spl/kstat/zfs/$pool/io");
|
open UPTIME, "</proc/uptime";
|
||||||
open STAT, "</proc/spl/kstat/zfs/$pool/io";
|
$_ = <UPTIME>;
|
||||||
while (<STAT>){
|
chomp;
|
||||||
if (m/^(?<nread>\d+)\s+(?<nwritten>\d+)\s+(?<reads>\d+)\s+(?<writes>\d+)\s+(?<wtime>\d+)\s+(?<wlentime>\d+)\s+(?<wupdate>\d+)\s+(?<rtime>\d+)\s+(?<rlentime>\d+)\s+(?<rupdate>\d+)\s+(?<wcnt>\d+)\s+(?<rcnt>\d+)/){
|
my ($uptime , undef) = split;
|
||||||
$stats->{$_} = $+{$_} foreach (keys %+);
|
$uptime = int $uptime;
|
||||||
|
close UPTIME;
|
||||||
|
foreach my $line (qx($zpool iostat $pool -pH)){
|
||||||
|
if ($line =~ m/^$pool\s+\d+\s+\d+\s+(?<reads>\d+)\s+(?<writes>\d+)\s+(?<nread>\d+)\s+(?<nwritten>\d+)/){
|
||||||
|
# zpool iostat shows average IO since boot, so just multiply it
|
||||||
|
# by the uptime in seconds to get cumulated IO since boot
|
||||||
|
# Zabbix server will then be able to calculate the delta between two values
|
||||||
|
$stats->{$_} = $+{$_} * $uptime foreach (keys %+);
|
||||||
|
last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close STAT;
|
|
||||||
return $stats;
|
return $stats;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue