From b0a452202d3180ea3ba8194aa0ea773eb28598d6 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 7 Dec 2016 15:34:10 +0100 Subject: [PATCH] skip non-existing or stopped instances --- gnt-monitor | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/gnt-monitor b/gnt-monitor index 01e6104..0be36c6 100755 --- a/gnt-monitor +++ b/gnt-monitor @@ -19,6 +19,8 @@ my $last; while(1) { +my $skip; + foreach my $instance ( glob '/var/run/ganeti/kvm-hypervisor/pid/*' ) { open(my $fh, '<', $instance); @@ -26,6 +28,12 @@ foreach my $instance ( glob '/var/run/ganeti/kvm-hypervisor/pid/*' ) { $instance =~ s{^.*/}{}; + if ( ! -d "/proc/$pid" ) { + $skip->{$instance}++; + XXX $skip; + next; + } + my $vcpu = $last->{$instance}->{vcpu}; if ( ! $vcpu ) { @@ -54,9 +62,19 @@ foreach my $instance ( glob '/var/run/ganeti/kvm-hypervisor/pid/*' ) { foreach my $glob ( glob '/var/run/ganeti/instance-disks/*' ) { my ( $instance, $disk ) = split(/:/,$glob,2); - my $dev = readlink $glob; $instance =~ s{^.*/}{}; + + next unless exists $stat->{$instance}; + + my $dev = readlink $glob; $dev =~ s{^.*dev/}{}; + + if ( ! -e "/sys/class/block/$dev" ) { + $skip->{$instance}++; + XXX $skip; + next; + } + open( my $fh, '<', "/sys/class/block/$dev/stat" ); my $v = <$fh>; chomp $v; $v =~ s/^\s+//; my @s = split(/\s+/, $v ); @@ -80,14 +98,18 @@ foreach my $glob ( glob '/var/run/ganeti/instance-disks/*' ) { } -foreach my $instance ( glob '/var/run/ganeti/kvm-hypervisor/nic/*' ) { - foreach my $nic ( glob "$instance/*" ) { +foreach my $full_instance ( glob '/var/run/ganeti/kvm-hypervisor/nic/*' ) { + my $instance = $full_instance; + $instance =~ s{^.*/}{}; + next unless exists $stat->{$instance}; + + foreach my $nic ( glob "$full_instance/*" ) { open(my $fh, '<', $nic); my $dev = <$fh>; + + next unless -e "/sys/class/net/$dev"; + $nic =~ s{^.*/}{}; - $instance =~ s{^.*/}{}; - my $vlan = readlink "/sys/class/net/$dev/master"; - $vlan =~ s/^.*br/br/; my $d; @@ -99,7 +121,11 @@ foreach my $instance ( glob '/var/run/ganeti/kvm-hypervisor/nic/*' ) { if ( my $l = $last->{$instance}->{nic}->[$nic] ) { $stat->{$instance}->{nic}->[$nic]->{$_} = $d->{$_} - $l->{$_} foreach keys %$d; $stat->{$instance}->{nic}->[$nic]->{dev} = $dev; - $stat->{$instance}->{nic}->[$nic]->{vlan} = $vlan; + if ( -e "/sys/class/net/$dev/master" ) { + my $vlan = readlink "/sys/class/net/$dev/master"; + $vlan =~ s/^.*br/br/; + $stat->{$instance}->{nic}->[$nic]->{vlan} = $vlan; + } } $last->{$instance}->{nic}->[$nic] = $d; @@ -122,6 +148,9 @@ sub dump4influx { } foreach my $instance ( keys %$stat ) { + + next if $skip->{$instance}; + print $fh qq{cpu,node="$node",instance="$instance" cpu=}, $stat->{$instance}->{cpu}, "\n"; foreach my $disk ( @{ $stat->{$instance}->{disk} } ) { -- 2.20.1