X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=gnt-i;h=2f4c86bc9236af6f565fd1a643e26bd1bdf8ea2f;hb=27ff31c759a51c89a78d57ab09a8f9382de825a1;hp=4d85f48b3f1b935a8b50ba05f3f333994f6f2497;hpb=1a0bcd5f323bb04252c16748d2a1e86acc77a5c8;p=gnt-info diff --git a/gnt-i b/gnt-i index 4d85f48..2f4c86b 100755 --- a/gnt-i +++ b/gnt-i @@ -2,8 +2,10 @@ use warnings; use strict; use autodie; +use Storable; my $DEBUG = $ENV{DEBUG} || 0; +my $INFLUX = 'http://10.60.0.89:8186/write'; my $hostname = `hostname -s`; chomp $hostname; @@ -19,7 +21,7 @@ my $lines; my @nodes = @ARGV; -@nodes = map { chomp ; $_ } `gnt-node list -o name --no-header` unless @nodes; +@nodes = map { chomp ; s/\s+N$// ; $_ } grep { /N$/ } `gnt-node list -o name,offline --no-header` unless @nodes; next_node: my $ssh = ''; @@ -59,7 +61,7 @@ sub DD_hh_mm_ss { $t_sec *= $f[$i]; } - warn "# DD-hh:mm:ss $t -> $t_sec\n" if $DEBUG; +# warn "# DD-hh:mm:ss $t -> $t_sec\n" if $DEBUG; return $t_sec; } @@ -104,11 +106,11 @@ while(<$ps>) { } -my $tap = sh('grep . /var/run/ganeti/kvm-hypervisor/nic/*/*'); +my $tap = sh('grep -H . /var/run/ganeti/kvm-hypervisor/nic/*/*'); while(<$tap>) { chomp; -# warn "## tap $_\n"; my @p = split(/\//,$_); +# warn "## tap ", Dumper( \@p ), "$_\n"; push @{ $instance_tap->{$hostname}->{ $p[-2] } }, $p[-1]; my $if = $p[-1]; @@ -204,9 +206,34 @@ foreach my $name ( sort keys %$stat ) { #XXX $lines; +open(my $influx_fh, '>', '/dev/shm/ganeti.influx'); + +my $last_lines; +$last_lines = retrieve('/dev/shm/ganeti.last.storable') if -e '/dev/shm/ganeti.last.storable'; + my $fmt = join(' ', map { '%' . $_ . 's' } @{ $lines->{len} } ) . "\n"; warn "# fmt = [$fmt]" if $DEBUG; -foreach my $line ( @{ $lines->{line} } ) { +foreach my $i ( 0 .. $#{ $lines->{line} } ) { + my $line = $lines->{line}->[$i]; printf $fmt, @$line; + + next unless $last_lines; + + my $last_line = $last_lines->[$i]; + my @c = ( 'host', ps_cols_visible ); + my @influx; + foreach my $j ( 0 .. $#$line ) { + #push @influx, $c[$j] . '=' . $line->[$j]; + push @influx, $c[$j] . '=' + . ( $j >= 9 && $j != 13 ? $line->[$j] - $last_line->[$j] : $line->[$j] ) + . ( $j == 3 || $j >= 6 && $j != 9 ? 'i' : '' ); + } + my $influx = join(',', @influx); + $influx =~ s/,user=([^,]+)/ user="$1"/; + print $influx_fh "ganeti,$influx\n" unless $influx =~ m/(#|__)/; + } +store $lines->{line}, '/dev/shm/ganeti.last.storable'; + +system "curl -i -XPOST 'http://127.0.0.1:8186/write?db=ganeti' --data-binary '@/dev/shm/ganeti.influx'";