@@ -17,12 +17,14 @@ import (
17
17
"errors"
18
18
"fmt"
19
19
"math"
20
+ "os"
20
21
"strings"
21
22
"sync"
22
23
"time"
23
24
25
+ "github.com/go-kit/kit/log"
26
+ "github.com/go-kit/kit/log/level"
24
27
"github.com/prometheus/client_golang/prometheus"
25
- "github.com/prometheus/common/log"
26
28
"golang.org/x/net/context"
27
29
"google.golang.org/api/monitoring/v3"
28
30
"gopkg.in/alecthomas/kingpin.v2"
@@ -70,9 +72,10 @@ type MonitoringCollector struct {
70
72
lastScrapeDurationSecondsMetric prometheus.Gauge
71
73
collectorFillMissingLabels bool
72
74
monitoringDropDelegatedProjects bool
75
+ logger log.Logger
73
76
}
74
77
75
- func NewMonitoringCollector (monitoringService * monitoring.Service , filters map [string ]bool ) (* MonitoringCollector , error ) {
78
+ func NewMonitoringCollector (monitoringService * monitoring.Service , filters map [string ]bool , logger log. Logger ) (* MonitoringCollector , error ) {
76
79
if * projectID == "" {
77
80
return nil , errors .New ("Flag `google.project-id` is required" )
78
81
}
@@ -166,6 +169,7 @@ func NewMonitoringCollector(monitoringService *monitoring.Service, filters map[s
166
169
lastScrapeDurationSecondsMetric : lastScrapeDurationSecondsMetric ,
167
170
collectorFillMissingLabels : * collectorFillMissingLabels ,
168
171
monitoringDropDelegatedProjects : * monitoringDropDelegatedProjects ,
172
+ logger : logger ,
169
173
}
170
174
171
175
return monitoringCollector , nil
@@ -187,7 +191,8 @@ func (c *MonitoringCollector) Collect(ch chan<- prometheus.Metric) {
187
191
if err := c .reportMonitoringMetrics (ch ); err != nil {
188
192
errorMetric = float64 (1 )
189
193
c .scrapeErrorsTotalMetric .Inc ()
190
- log .Fatalf ("Error while getting Google Stackdriver Monitoring metrics: %s" , err )
194
+ level .Error (c .logger ).Log ("msg" , "Error while getting Google Stackdriver Monitoring metrics" , "err" , err )
195
+ os .Exit (1 )
191
196
}
192
197
c .scrapeErrorsTotalMetric .Collect (ch )
193
198
@@ -235,7 +240,7 @@ func (c *MonitoringCollector) reportMonitoringMetrics(ch chan<- prometheus.Metri
235
240
wg .Add (1 )
236
241
go func (metricDescriptor * monitoring.MetricDescriptor , ch chan <- prometheus.Metric ) {
237
242
defer wg .Done ()
238
- log . Debugf ( "Retrieving Google Stackdriver Monitoring metrics for descriptor `%s`... " , metricDescriptor .Type )
243
+ level . Debug ( c . logger ). Log ( "msg" , "retrieving Google Stackdriver Monitoring metrics for descriptor" , "descriptor " , metricDescriptor .Type )
239
244
filter := fmt .Sprintf ("metric.type=\" %s\" " , metricDescriptor .Type )
240
245
if c .monitoringDropDelegatedProjects {
241
246
filter = fmt .Sprintf (
@@ -252,15 +257,15 @@ func (c *MonitoringCollector) reportMonitoringMetrics(ch chan<- prometheus.Metri
252
257
c .apiCallsTotalMetric .Inc ()
253
258
page , err := timeSeriesListCall .Do ()
254
259
if err != nil {
255
- log . Errorf ( "Error retrieving Time Series metrics for descriptor `%s`: %v" , metricDescriptor .Type , err )
260
+ level . Error ( c . logger ). Log ( "msg" , "error retrieving Time Series metrics for descriptor" , "descriptor" , metricDescriptor .Type , "err" , err )
256
261
errChannel <- err
257
262
break
258
263
}
259
264
if page == nil {
260
265
break
261
266
}
262
267
if err := c .reportTimeSeriesMetrics (page , metricDescriptor , ch ); err != nil {
263
- log . Errorf ( "Error reporting Time Series metrics for descriptor `%s`: %v" , metricDescriptor .Type , err )
268
+ level . Error ( c . logger ). Log ( "msg" , "error reporting Time Series metrics for descripto" , "descriptor" , metricDescriptor .Type , "err" , err )
264
269
errChannel <- err
265
270
break
266
271
}
@@ -286,7 +291,7 @@ func (c *MonitoringCollector) reportMonitoringMetrics(ch chan<- prometheus.Metri
286
291
wg .Add (1 )
287
292
go func (metricsTypePrefix string ) {
288
293
defer wg .Done ()
289
- log . Debugf ( "Listing Google Stackdriver Monitoring metric descriptors starting with `%s`... " , metricsTypePrefix )
294
+ level . Debug ( c . logger ). Log ( "msg" , "listing Google Stackdriver Monitoring metric descriptors starting with" , "prefix " , metricsTypePrefix )
290
295
ctx := context .Background ()
291
296
filter := fmt .Sprintf ("metric.type = starts_with(\" %s\" )" , metricsTypePrefix )
292
297
if c .monitoringDropDelegatedProjects {
@@ -396,11 +401,11 @@ func (c *MonitoringCollector) reportTimeSeriesMetrics(
396
401
if err == nil {
397
402
timeSeriesMetrics .CollectNewConstHistogram (timeSeries , labelKeys , dist , buckets , labelValues )
398
403
} else {
399
- log . Debugf ( "Discarding resource %s metric %s: %s" , timeSeries .Resource .Type , timeSeries .Metric .Type , err )
404
+ level . Debug ( c . logger ). Log ( "msg" , "discarding" , "resource" , timeSeries .Resource .Type , "metric" , timeSeries .Metric .Type , "err" , err )
400
405
}
401
406
continue
402
407
default :
403
- log . Debugf ( "Discarding `%s` metric: %+v" , timeSeries .ValueType , timeSeries )
408
+ level . Debug ( c . logger ). Log ( "msg" , "discarding" , "value_type" , timeSeries .ValueType , "metric" , timeSeries )
404
409
continue
405
410
}
406
411
0 commit comments