return $time;
}
+my $tags = $ENV{TAGS};
+$tags = ",$tags" if $tags && $tags !~ m/^,/;
+
while(<>) {
chomp;
next if /^$/;
my @vals;
- if ( /^(\w+)\s+(\S+)\s+(.+)\s+(\w+)\s+(\d\d\d\d)\/(\d\d)\/(\d\d)$/ ) {
+ if ( /^([\w\-]+)\s+(\d+\S+)\s+(.+)\s+(\w+)\s+(\d\d\d\d)\/(\d\d)\/(\d\d)$/ ) {
$host = $1;
@cols = qw( kernel build arch );
@vals = ( qq{"$2"}, qq{"$3"}, qq{"$4"} ); # must quote all this as strings for influx
( $yyyy, $mm, $dd ) = split(/\//, $1, 3); update_time;
next;
- } elsif ( m/^00:00:01\s+(.+)_(\w+)_/ ) {
+ } elsif ( m/^\d\d:\d\d:\d\d\s+(.+)_(\w+)_/ ) {
$measurement = $2;
my $cols = $1;
$cols =~ s/(in|out):\s+(\w+)/$1_$2/g; # ipv4, ipv6
next;
} elsif ( m/^(\d\d:\d\d:\d\d)\s+(.+)/ ) {
+ next if m/logging restarted/;
( $hour, $min, $sec ) = split(/:/, $1, 3); update_time;
@vals = split(/\s+/, $2);
} elsif ( m/^\s+(.+)/ ) {
@vals = split(/\s+/, $1);
} else {
- die "UNPARSED: $_\n";
+ warn "UNPARSED: $_\n";
}
next unless @vals;
next if $measurement =~ /top3/; # FIXME this isn't parsed yet
#XXX { cols => \@cols, vals => \@vals };
- print "atop_$measurement,host=$host";
+ print "$measurement,host=$host$tags";
my $d = " ";
foreach my $i ( 0 .. $#cols ) {
if ( my $c = $cols[$i] ) {
$c =~ s/\W+/_/g;
my $v = $vals[$i];
- die "line: [$_]\nno vals[$i] in ",Data::Dump::dump( @vals ) if ! defined $v;
+ if ( ! defined $v ) {
+ warn "WARN line: [$_]\nno vals[$i] in ",Data::Dump::dump( @vals );
+ next;
+ };
- #$v *= 1024 * 1024 if $v =~ s/M$//;
- $v =~ s/M$//;
+ $v *= 1024 * 1024 if $v =~ s/M$//;
+ #$v =~ s/M$//;
$v =~ s/%$//;
$v =~ s/\s/\\ /g unless $v =~ m/"/;
next if $c eq "busy" && $v eq "?";
+# $s = 'i' if $v =~ m/^\d+$/;
+
print "$d$c=$v$s";
$d ||= ',';