diff options
author | Ben Ye <yb532204897@gmail.com> | 2019-12-31 11:19:37 -0500 |
---|---|---|
committer | Ben Kochie <superq@gmail.com> | 2019-12-31 17:19:37 +0100 |
commit | 2477c5c67dff7e7655a9d466450235e9c9eac193 (patch) | |
tree | 198cb44d48f454df765984bc614e1b1972a646e8 /collector/collector.go | |
parent | a80b7d0bc5ee93e704bab22e7592ed8b7d65899e (diff) | |
download | prometheus_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.go | 22 |
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 | ||
50 | var ( | 51 | var ( |
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 | ||
55 | func registerCollector(collector string, isDefaultEnabled bool, factory func() (Collector, error)) { | 56 | func 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. |
74 | type NodeCollector struct { | 75 | type 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. |
79 | func NewNodeCollector(filters ...string) (*NodeCollector, error) { | 81 | func 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 | ||
125 | func execute(name string, c Collector, ch chan<- prometheus.Metric) { | 127 | func 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) |