+#!/usr/bin/perl
+use warnings;
+use strict;
+use autodie;
+
+my $DEBUG = $ENV{DEBUG} || 0;
+my $INFLUX = 'http://10.60.0.89:8186/write';
+
+my $hostname = `hostname -s`;
+chomp $hostname;
+
+use Data::Dump;
+sub XXX { $DEBUG ? warn "XXX ",Data::Dump::dump( @_ ) : {} };
+
+my $stat;
+
+foreach my $glob ( glob '/var/run/ganeti/instance-disks/*' ) {
+ my ( $instance, $disk ) = split(/:/,$glob,2);
+ my $dev = readlink $glob;
+ $instance =~ s{^.*/}{};
+ $dev =~ s{^.*dev/}{};
+ $stat->{$instance}->{disk}->[$disk]->{dev} = $dev;
+ open( my $fh, '<', "/sys/class/block/$dev/stat" );
+ my $v = <$fh>; chomp $v; $v =~ s/^\s+//;
+ my @s = split(/\s+/, $v );
+ # https://www.kernel.org/doc/Documentation/block/stat.txt
+ $stat->{$instance}->{disk}->[$disk]->{read_io} = $s[0];
+ $stat->{$instance}->{disk}->[$disk]->{read_bytes} = $s[2] * 512;
+ $stat->{$instance}->{disk}->[$disk]->{read_wait} = $s[3];
+ $stat->{$instance}->{disk}->[$disk]->{write_io} = $s[4];
+ $stat->{$instance}->{disk}->[$disk]->{write_bytes} = $s[6] * 512;
+ $stat->{$instance}->{disk}->[$disk]->{write_wait} = $s[7];
+}
+
+foreach my $instance ( glob '/var/run/ganeti/kvm-hypervisor/nic/*' ) {
+ foreach my $nic ( glob "$instance/*" ) {
+ open(my $fh, '<', "$nic");
+ my $dev = <$fh>;
+ $nic =~ s{^.*/}{};
+XXX $nic;
+ $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;
+ foreach my $f (qw( rx_bytes tx_bytes rx_packets tx_packets )) {
+ open( my $fh, '<', "/sys/class/net/$dev/statistics/$f" );
+ my $v = <$fh>; chomp $v;
+ $stat->{$instance}->{nic}->[$nic]->{$f} = $v;
+ }
+ }
+}
+
+XXX $stat;
+