Fix /proc/net/dev column parsing.

This fixes https://github.com/prometheus/node_exporter/issues/73
This commit is contained in:
Julius Volz 2015-05-21 00:34:24 +02:00
commit 072ddabf62
3 changed files with 13 additions and 2 deletions

View file

@ -7,6 +7,7 @@ import (
"fmt"
"io"
"os"
"regexp"
"strconv"
"strings"
@ -18,6 +19,10 @@ const (
netDevSubsystem = "network"
)
var (
fieldSep = regexp.MustCompile("[ :] *")
)
type netDevCollector struct {
config Config
metrics map[string]*prometheus.GaugeVec
@ -95,13 +100,14 @@ func parseNetDevStats(r io.Reader) (map[string]map[string]map[string]string, err
}
header := strings.Fields(parts[1])
for scanner.Scan() {
parts := strings.Fields(string(scanner.Text()))
line := strings.TrimLeft(string(scanner.Text()), " ")
parts := fieldSep.Split(line, -1)
if len(parts) != 2*len(header)+1 {
return nil, fmt.Errorf("Invalid line in %s: %s",
procNetDev, scanner.Text())
}
dev := parts[0][:len(parts[0])-1]
dev := parts[0][:len(parts[0])]
receive, err := parseNetDevLine(parts[1:len(header)+1], header)
if err != nil {
return nil, err