diff --git a/exporter/gmond_collector.go b/exporter/gmond_collector.go index c126f432..e6c1fe4b 100644 --- a/exporter/gmond_collector.go +++ b/exporter/gmond_collector.go @@ -8,7 +8,7 @@ import ( "github.com/prometheus/node_exporter/exporter/ganglia" "io" "net" - "strings" + "regexp" "time" ) @@ -25,6 +25,8 @@ type gmondCollector struct { registry prometheus.Registry } +var illegalCharsRE = regexp.MustCompile(`[^a-zA-Z0-9_]`) + // Takes a config struct and prometheus registry and returns a new Collector scraping ganglia. func NewGmondCollector(config config, registry prometheus.Registry) (collector gmondCollector, err error) { collector = gmondCollector{ @@ -84,7 +86,7 @@ func (c *gmondCollector) Update() (updates int, err error) { for _, host := range cluster.Hosts { for _, metric := range host.Metrics { - name := strings.Replace(strings.ToLower(metric.Name), ".", "_", -1) + name := illegalCharsRE.ReplaceAllString(metric.Name, "_") var labels = map[string]string{ "cluster": cluster.Name,