From deaaad3686313e03dd03d74828b7d3d9b5c16b80 Mon Sep 17 00:00:00 2001
From: Matthias Rampke <mr@soundcloud.com>
Date: Wed, 30 Aug 2017 13:58:52 +0000
Subject: [PATCH] Use per-type label names

avoid the generic "name" label. Breaks all time series.
---
 actions.go   | 5 +++++
 inputs.go    | 1 +
 point.go     | 7 ++++++-
 queues.go    | 6 ++++++
 resources.go | 9 +++++++++
 5 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/actions.go b/actions.go
index 7e5d57d..f000bd3 100644
--- a/actions.go
+++ b/actions.go
@@ -31,6 +31,7 @@ func (a *action) toPoints() []*point {
 		Type:        counter,
 		Value:       a.Processed,
 		Description: "messages processed",
+		LabelName:   "action",
 		LabelValue:  a.Name,
 	}
 
@@ -39,6 +40,7 @@ func (a *action) toPoints() []*point {
 		Type:        counter,
 		Value:       a.Failed,
 		Description: "messages failed",
+		LabelName:   "action",
 		LabelValue:  a.Name,
 	}
 
@@ -47,6 +49,7 @@ func (a *action) toPoints() []*point {
 		Type:        counter,
 		Value:       a.Suspended,
 		Description: "times suspended",
+		LabelName:   "action",
 		LabelValue:  a.Name,
 	}
 
@@ -55,6 +58,7 @@ func (a *action) toPoints() []*point {
 		Type:        counter,
 		Value:       a.SuspendedDuration,
 		Description: "time spent suspended",
+		LabelName:   "action",
 		LabelValue:  a.Name,
 	}
 
@@ -63,6 +67,7 @@ func (a *action) toPoints() []*point {
 		Type:        counter,
 		Value:       a.Resumed,
 		Description: "times resumed",
+		LabelName:   "action",
 		LabelValue:  a.Name,
 	}
 
diff --git a/inputs.go b/inputs.go
index 74865f4..21aba65 100644
--- a/inputs.go
+++ b/inputs.go
@@ -27,6 +27,7 @@ func (i *input) toPoints() []*point {
 		Type:        counter,
 		Value:       i.Submitted,
 		Description: "messages submitted",
+		LabelName:   "input",
 		LabelValue:  i.Name,
 	}
 
diff --git a/point.go b/point.go
index 4150c5f..499cfc2 100644
--- a/point.go
+++ b/point.go
@@ -24,6 +24,7 @@ type point struct {
 	Description string
 	Type        pointType
 	Value       int64
+	LabelName   string
 	LabelValue  string
 }
 
@@ -31,7 +32,7 @@ func (p *point) promDescription() *prometheus.Desc {
 	return prometheus.NewDesc(
 		prometheus.BuildFQName("", "rsyslog", p.Name),
 		p.Description,
-		[]string{"name"},
+		[]string{p.promLabelName()},
 		nil,
 	)
 }
@@ -51,6 +52,10 @@ func (p *point) promLabelValue() string {
 	return p.LabelValue
 }
 
+func (p *point) promLabelName() string {
+	return p.LabelName
+}
+
 func (p *point) key() string {
 	return fmt.Sprintf("%s.%s", p.Name, p.LabelValue)
 }
diff --git a/queues.go b/queues.go
index 99adb1f..e59aaf1 100644
--- a/queues.go
+++ b/queues.go
@@ -32,6 +32,7 @@ func (q *queue) toPoints() []*point {
 		Type:        gauge,
 		Value:       q.Size,
 		Description: "messages currently in queue",
+		LabelName:   "queue",
 		LabelValue:  q.Name,
 	}
 
@@ -40,6 +41,7 @@ func (q *queue) toPoints() []*point {
 		Type:        counter,
 		Value:       q.Enqueued,
 		Description: "total messages enqueued",
+		LabelName:   "queue",
 		LabelValue:  q.Name,
 	}
 
@@ -48,6 +50,7 @@ func (q *queue) toPoints() []*point {
 		Type:        counter,
 		Value:       q.Full,
 		Description: "times queue was full",
+		LabelName:   "queue",
 		LabelValue:  q.Name,
 	}
 
@@ -56,6 +59,7 @@ func (q *queue) toPoints() []*point {
 		Type:        counter,
 		Value:       q.DiscardedFull,
 		Description: "messages discarded due to queue being full",
+		LabelName:   "queue",
 		LabelValue:  q.Name,
 	}
 
@@ -64,6 +68,7 @@ func (q *queue) toPoints() []*point {
 		Type:        counter,
 		Value:       q.DiscardedNf,
 		Description: "messages discarded when queue not full",
+		LabelName:   "queue",
 		LabelValue:  q.Name,
 	}
 
@@ -72,6 +77,7 @@ func (q *queue) toPoints() []*point {
 		Type:        gauge,
 		Value:       q.MaxQsize,
 		Description: "maximum size queue has reached",
+		LabelName:   "queue",
 		LabelValue:  q.Name,
 	}
 
diff --git a/resources.go b/resources.go
index b39025d..293da13 100644
--- a/resources.go
+++ b/resources.go
@@ -35,6 +35,7 @@ func (r *resource) toPoints() []*point {
 		Type:        counter,
 		Value:       r.Utime,
 		Description: "user time used in microseconds",
+		LabelName:   "resource",
 		LabelValue:  r.Name,
 	}
 
@@ -43,6 +44,7 @@ func (r *resource) toPoints() []*point {
 		Type:        counter,
 		Value:       r.Stime,
 		Description: "system time used in microsends",
+		LabelName:   "resource",
 		LabelValue:  r.Name,
 	}
 
@@ -51,6 +53,7 @@ func (r *resource) toPoints() []*point {
 		Type:        gauge,
 		Value:       r.Maxrss,
 		Description: "maximum resident set size",
+		LabelName:   "resource",
 		LabelValue:  r.Name,
 	}
 
@@ -59,6 +62,7 @@ func (r *resource) toPoints() []*point {
 		Type:        counter,
 		Value:       r.Minflt,
 		Description: "total minor faults",
+		LabelName:   "resource",
 		LabelValue:  r.Name,
 	}
 
@@ -67,6 +71,7 @@ func (r *resource) toPoints() []*point {
 		Type:        counter,
 		Value:       r.Majflt,
 		Description: "total major faults",
+		LabelName:   "resource",
 		LabelValue:  r.Name,
 	}
 
@@ -75,6 +80,7 @@ func (r *resource) toPoints() []*point {
 		Type:        counter,
 		Value:       r.Inblock,
 		Description: "filesystem input operations",
+		LabelName:   "resource",
 		LabelValue:  r.Name,
 	}
 
@@ -83,6 +89,7 @@ func (r *resource) toPoints() []*point {
 		Type:        counter,
 		Value:       r.Outblock,
 		Description: "filesystem output operations",
+		LabelName:   "resource",
 		LabelValue:  r.Name,
 	}
 
@@ -91,6 +98,7 @@ func (r *resource) toPoints() []*point {
 		Type:        counter,
 		Value:       r.Nvcsw,
 		Description: "voluntary context switches",
+		LabelName:   "resource",
 		LabelValue:  r.Name,
 	}
 
@@ -99,6 +107,7 @@ func (r *resource) toPoints() []*point {
 		Type:        counter,
 		Value:       r.Nivcsw,
 		Description: "involuntary context switches",
+		LabelName:   "resource",
 		LabelValue:  r.Name,
 	}
 
-- 
GitLab