aboutsummaryrefslogtreecommitdiff
path: root/collector/collector.go
diff options
context:
space:
mode:
authorBen Ye <yb532204897@gmail.com>2019-12-31 11:19:37 -0500
committerBen Kochie <superq@gmail.com>2019-12-31 17:19:37 +0100
commit2477c5c67dff7e7655a9d466450235e9c9eac193 (patch)
tree198cb44d48f454df765984bc614e1b1972a646e8 /collector/collector.go
parenta80b7d0bc5ee93e704bab22e7592ed8b7d65899e (diff)
downloadprometheus_node_collector-2477c5c67dff7e7655a9d466450235e9c9eac193.tar.bz2
prometheus_node_collector-2477c5c67dff7e7655a9d466450235e9c9eac193.tar.xz
prometheus_node_collector-2477c5c67dff7e7655a9d466450235e9c9eac193.zip
switch to go-kit/log (#1575)
Signed-off-by: yeya24 <yb532204897@gmail.com>
Diffstat (limited to 'collector/collector.go')
-rw-r--r--collector/collector.go22
1 files changed, 12 insertions, 10 deletions
diff --git a/collector/collector.go b/collector/collector.go
index 4b74b89..af8712c 100644
--- a/collector/collector.go
+++ b/collector/collector.go
@@ -19,8 +19,9 @@ import (
19 "sync" 19 "sync"
20 "time" 20 "time"
21 21
22 "github.com/go-kit/kit/log"
23 "github.com/go-kit/kit/log/level"
22 "github.com/prometheus/client_golang/prometheus" 24 "github.com/prometheus/client_golang/prometheus"
23 "github.com/prometheus/common/log"
24 "gopkg.in/alecthomas/kingpin.v2" 25 "gopkg.in/alecthomas/kingpin.v2"
25) 26)
26 27
@@ -48,11 +49,11 @@ const (
48) 49)
49 50
50var ( 51var (
51 factories = make(map[string]func() (Collector, error)) 52 factories = make(map[string]func(logger log.Logger) (Collector, error))
52 collectorState = make(map[string]*bool) 53 collectorState = make(map[string]*bool)
53) 54)
54 55
55func registerCollector(collector string, isDefaultEnabled bool, factory func() (Collector, error)) { 56func registerCollector(collector string, isDefaultEnabled bool, factory func(logger log.Logger) (Collector, error)) {
56 var helpDefaultState string 57 var helpDefaultState string
57 if isDefaultEnabled { 58 if isDefaultEnabled {
58 helpDefaultState = "enabled" 59 helpDefaultState = "enabled"
@@ -73,10 +74,11 @@ func registerCollector(collector string, isDefaultEnabled bool, factory func() (
73// NodeCollector implements the prometheus.Collector interface. 74// NodeCollector implements the prometheus.Collector interface.
74type NodeCollector struct { 75type NodeCollector struct {
75 Collectors map[string]Collector 76 Collectors map[string]Collector
77 logger log.Logger
76} 78}
77 79
78// NewNodeCollector creates a new NodeCollector. 80// NewNodeCollector creates a new NodeCollector.
79func NewNodeCollector(filters ...string) (*NodeCollector, error) { 81func NewNodeCollector(logger log.Logger, filters ...string) (*NodeCollector, error) {
80 f := make(map[string]bool) 82 f := make(map[string]bool)
81 for _, filter := range filters { 83 for _, filter := range filters {
82 enabled, exist := collectorState[filter] 84 enabled, exist := collectorState[filter]
@@ -91,7 +93,7 @@ func NewNodeCollector(filters ...string) (*NodeCollector, error) {
91 collectors := make(map[string]Collector) 93 collectors := make(map[string]Collector)
92 for key, enabled := range collectorState { 94 for key, enabled := range collectorState {
93 if *enabled { 95 if *enabled {
94 collector, err := factories[key]() 96 collector, err := factories[key](log.With(logger, "collector", key))
95 if err != nil { 97 if err != nil {
96 return nil, err 98 return nil, err
97 } 99 }
@@ -100,7 +102,7 @@ func NewNodeCollector(filters ...string) (*NodeCollector, error) {
100 } 102 }
101 } 103 }
102 } 104 }
103 return &NodeCollector{Collectors: collectors}, nil 105 return &NodeCollector{Collectors: collectors, logger: logger}, nil
104} 106}
105 107
106// Describe implements the prometheus.Collector interface. 108// Describe implements the prometheus.Collector interface.
@@ -115,24 +117,24 @@ func (n NodeCollector) Collect(ch chan<- prometheus.Metric) {
115 wg.Add(len(n.Collectors)) 117 wg.Add(len(n.Collectors))
116 for name, c := range n.Collectors { 118 for name, c := range n.Collectors {
117 go func(name string, c Collector) { 119 go func(name string, c Collector) {
118 execute(name, c, ch) 120 execute(name, c, ch, n.logger)
119 wg.Done() 121 wg.Done()
120 }(name, c) 122 }(name, c)
121 } 123 }
122 wg.Wait() 124 wg.Wait()
123} 125}
124 126
125func execute(name string, c Collector, ch chan<- prometheus.Metric) { 127func execute(name string, c Collector, ch chan<- prometheus.Metric, logger log.Logger) {
126 begin := time.Now() 128 begin := time.Now()
127 err := c.Update(ch) 129 err := c.Update(ch)
128 duration := time.Since(begin) 130 duration := time.Since(begin)
129 var success float64 131 var success float64
130 132
131 if err != nil { 133 if err != nil {
132 log.Errorf("ERROR: %s collector failed after %fs: %s", name, duration.Seconds(), err) 134 level.Error(logger).Log("msg", "collector failed", "name", name, "duration_seconds", duration.Seconds(), "err", err)
133 success = 0 135 success = 0
134 } else { 136 } else {
135 log.Debugf("OK: %s collector succeeded after %fs.", name, duration.Seconds()) 137 level.Debug(logger).Log("msg", "collector succeeded", "name", name, "duration_seconds", duration.Seconds())
136 success = 1 138 success = 1
137 } 139 }
138 ch <- prometheus.MustNewConstMetric(scrapeDurationDesc, prometheus.GaugeValue, duration.Seconds(), name) 140 ch <- prometheus.MustNewConstMetric(scrapeDurationDesc, prometheus.GaugeValue, duration.Seconds(), name)