my $DEBUG = $ENV{DEBUG} || 0;
my $INFLUX = 'http://10.60.0.89:8186/write';
+my $INTERVAL = $ENV{INTERVAL} || 1;
-my $hostname = `hostname -s`;
-chomp $hostname;
+my $node = `hostname -s`;
+chomp $node;
use Data::Dump;
sub XXX { $DEBUG ? warn "XXX ",Data::Dump::dump( @_ ) : {} };
my $delta;
$delta->{$_} = $d->{$_} - $l->{$_} foreach keys %$d;
$stat->{$instance}->{disk}->[$disk] = $delta;
+ $stat->{$instance}->{disk}->[$disk]->{dev} = $dev;
+ $stat->{$instance}->{disk}->[$disk]->{disk} = $disk;
}
$last->{$instance}->{disk}->[$disk] = $d;
- $stat->{$instance}->{disk}->[$disk]->{dev} = $dev;
}
my $dev = <$fh>;
$nic =~ s{^.*/}{};
$instance =~ s{^.*/}{};
- $stat->{$instance}->{nic}->[$nic]->{dev} = $dev;
my $vlan = readlink "/sys/class/net/$dev/master";
- $vlan =~ s/^.*br//;
- $stat->{$instance}->{nic}->[$nic]->{vlan} = $vlan;
+ $vlan =~ s/^.*br/br/;
my $d;
}
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;
}
$last->{$instance}->{nic}->[$nic] = $d;
XXX $stat;
#XXX $last;
-sleep 1;
+open(my $fh, '>', '/dev/shm/ganeti-monitor.influx');
+
+sub dump4influx {
+ my $hash = shift;
+ my $d = Data::Dump::dump( $hash );
+ $d =~ s/[\s\r\n]+//g;
+ $d =~ s/[\Q[]{}>\E]//g;
+ $d =~ s/=(\d+),/=$1i,/g;
+ $d =~ s/,+$//;
+ return $d;
+}
+
+foreach my $instance ( keys %$stat ) {
+ print $fh qq{cpu,node="$node",instance="$instance" cpu=}, $stat->{$instance}->{cpu}, "\n";
+
+ foreach my $disk ( @{ $stat->{$instance}->{disk} } ) {
+ print $fh qq{disk,node="$node",instance="$instance" },dump4influx( $disk ), "\n";
+ }
+
+ foreach my $nic ( @{ $stat->{$instance}->{nic} } ) {
+ print $fh qq{nic,node="$node",instance="$instance" },dump4influx( $nic ), "\n";
+ }
+
+}
+
+close($fh);
+
+system q{curl -i -XPOST 'http://10.80.3.89:8086/write?db=ganeti' --data-binary '@/dev/shm/ganeti-monitor.influx'};
+
+
+sleep $INTERVAL;
} #/while