Skip to content
This repository was archived by the owner on Feb 13, 2025. It is now read-only.

Commit 7fc6c69

Browse files
committed
Improve logging after the switch to github.com/go-kit/kit/log
Signed-off-by: Nikolay Pelov <[email protected]>
1 parent c4aaa9d commit 7fc6c69

File tree

1 file changed

+51
-51
lines changed

1 file changed

+51
-51
lines changed

main.go

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func getEnv(key, fallback string) string {
100100
func atoi(stringValue string, logger log.Logger) int {
101101
intValue, err := strconv.Atoi(stringValue)
102102
if err != nil {
103-
level.Error(logger).Log("error while converting to int:", err)
103+
level.Error(logger).Log("msg", "error while converting to int", "err", err)
104104
panic(err)
105105
}
106106
return intValue
@@ -116,17 +116,17 @@ func maskDsn(dsn string) string {
116116
}
117117

118118
func connect(dsn string, logger log.Logger) *sql.DB {
119-
level.Debug(logger).Log("Launching connection: ", maskDsn(dsn))
119+
level.Debug(logger).Log("msg", "Launching connection", "dsn", maskDsn(dsn))
120120
db, err := sql.Open("oci8", dsn)
121121
if err != nil {
122-
level.Error(logger).Log("Error while connecting to", dsn)
122+
level.Error(logger).Log("msg", "Error while connecting to", "dsn", dsn)
123123
panic(err)
124124
}
125-
level.Debug(logger).Log("set max idle connections to ", *maxIdleConns)
125+
level.Debug(logger).Log("msg", "set max idle connections to ", "value", *maxIdleConns)
126126
db.SetMaxIdleConns(*maxIdleConns)
127-
level.Debug(logger).Log("set max open connections to ", *maxOpenConns)
127+
level.Debug(logger).Log("msg", "set max open connections to ", "value", *maxOpenConns)
128128
db.SetMaxOpenConns(*maxOpenConns)
129-
level.Debug(logger).Log("Successfully connected to: ", maskDsn(dsn))
129+
level.Debug(logger).Log("msg", "Successfully connected to", "dsn", maskDsn(dsn))
130130
return db
131131
}
132132

@@ -255,17 +255,17 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
255255

256256
if err = e.db.Ping(); err != nil {
257257
if strings.Contains(err.Error(), "sql: database is closed") {
258-
level.Info(e.logger).Log("Reconnecting to DB")
258+
level.Info(e.logger).Log("msg", "Reconnecting to DB")
259259
e.db = connect(e.dsn, e.logger)
260260
}
261261
}
262262
if err = e.db.Ping(); err != nil {
263-
level.Error(e.logger).Log("Error pinging oracle:", err)
263+
level.Error(e.logger).Log("msg", "Error pinging oracle", "err", err)
264264
//e.db.Close()
265265
e.up.Set(0)
266266
return
267267
} else {
268-
level.Debug(e.logger).Log("Successfully pinged Oracle database: ", maskDsn(e.dsn))
268+
level.Debug(e.logger).Log("msg", "Successfully pinged Oracle database", "dsn", maskDsn(e.dsn))
269269
e.up.Set(1)
270270
}
271271

@@ -282,42 +282,42 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
282282
go func() {
283283
defer wg.Done()
284284

285-
level.Debug(e.logger).Log("About to scrape metric: ")
286-
level.Debug(e.logger).Log("- Metric MetricsDesc: ", metric.MetricsDesc)
287-
level.Debug(e.logger).Log("- Metric Context: ", metric.Context)
288-
level.Debug(e.logger).Log("- Metric MetricsType: ", metric.MetricsType)
289-
level.Debug(e.logger).Log("- Metric MetricsBuckets: ", metric.MetricsBuckets, "(Ignored unless Histogram type)")
290-
level.Debug(e.logger).Log("- Metric Labels: ", metric.Labels)
291-
level.Debug(e.logger).Log("- Metric FieldToAppend: ", metric.FieldToAppend)
292-
level.Debug(e.logger).Log("- Metric IgnoreZeroResult: ", metric.IgnoreZeroResult)
293-
level.Debug(e.logger).Log("- Metric Request: ", metric.Request)
285+
level.Debug(e.logger).Log("msg", "About to scrape metric")
286+
level.Debug(e.logger).Log("metricsDesc", metric.MetricsDesc)
287+
level.Debug(e.logger).Log("context", metric.Context)
288+
level.Debug(e.logger).Log("metricsType", metric.MetricsType)
289+
level.Debug(e.logger).Log("metricsBuckets", metric.MetricsBuckets) // , "(Ignored unless Histogram type)"
290+
level.Debug(e.logger).Log("labels", metric.Labels)
291+
level.Debug(e.logger).Log("fieldToAppend", metric.FieldToAppend)
292+
level.Debug(e.logger).Log("ignoreZeroResult", metric.IgnoreZeroResult)
293+
level.Debug(e.logger).Log("request", metric.Request)
294294

295295
if len(metric.Request) == 0 {
296-
level.Error(e.logger).Log("Error scraping for ", metric.MetricsDesc, ". Did you forget to define request in your toml file?")
296+
level.Error(e.logger).Log("msg", "Error scraping. Did you forget to define request in your toml file?", "metricsDesc", metric.MetricsDesc)
297297
return
298298
}
299299

300300
if len(metric.MetricsDesc) == 0 {
301-
level.Error(e.logger).Log("Error scraping for query", metric.Request, ". Did you forget to define metricsdesc in your toml file?")
301+
level.Error(e.logger).Log("msg", "Error scraping for query. Did you forget to define metricsdesc in your toml file?", "request", metric.Request)
302302
return
303303
}
304304

305305
for column, metricType := range metric.MetricsType {
306306
if metricType == "histogram" {
307307
_, ok := metric.MetricsBuckets[column]
308308
if !ok {
309-
level.Error(e.logger).Log("Unable to find MetricsBuckets configuration key for metric. (metric=" + column + ")")
309+
level.Error(e.logger).Log("msg", "Unable to find MetricsBuckets configuration key for metric.", "metric", column)
310310
return
311311
}
312312
}
313313
}
314314

315315
scrapeStart := time.Now()
316316
if err = ScrapeMetric(e.db, ch, metric, e.logger); err != nil {
317-
level.Error(e.logger).Log("Error scraping for", metric.Context, "_", metric.MetricsDesc, time.Since(scrapeStart), ":", err)
317+
level.Error(e.logger).Log("msg", "Error scraping for", "context", metric.Context, "metricsDesc", metric.MetricsDesc, "since", time.Since(scrapeStart), "err", err)
318318
e.scrapeErrors.WithLabelValues(metric.Context).Inc()
319319
} else {
320-
level.Debug(e.logger).Log("Successfully scraped metric: ", metric.Context, metric.MetricsDesc, time.Since(scrapeStart))
320+
level.Debug(e.logger).Log("msg", "Successfully scraped metric", "context", metric.Context, "metricsDesc", metric.MetricsDesc, "since", time.Since(scrapeStart))
321321
}
322322
}()
323323
}
@@ -344,7 +344,7 @@ func GetMetricType(metricType string, metricsType map[string]string) prometheus.
344344

345345
// interface method to call ScrapeGenericValues using Metric struct values
346346
func ScrapeMetric(db *sql.DB, ch chan<- prometheus.Metric, metricDefinition Metric, logger log.Logger) error {
347-
level.Debug(logger).Log("Calling function ScrapeGenericValues()")
347+
level.Debug(logger).Log("msg", "Calling function ScrapeGenericValues()")
348348
return ScrapeGenericValues(db, ch, metricDefinition.Context, metricDefinition.Labels,
349349
metricDefinition.MetricsDesc, metricDefinition.MetricsType, metricDefinition.MetricsBuckets,
350350
metricDefinition.FieldToAppend, metricDefinition.IgnoreZeroResult,
@@ -366,11 +366,11 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
366366
value, err := strconv.ParseFloat(strings.TrimSpace(row[metric]), 64)
367367
// If not a float, skip current metric
368368
if err != nil {
369-
level.Error(logger).Log("Unable to convert current value to float (metric=" + metric +
370-
",metricHelp=" + metricHelp + ",value=<" + row[metric] + ">)")
369+
level.Error(logger).Log("msg", "Unable to convert current value to float", "metric", metric,
370+
"metricHelp", metricHelp, "value", row[metric])
371371
continue
372372
}
373-
level.Debug(logger).Log("Query result looks like: ", value)
373+
level.Debug(logger).Log("msg", "Query result looks like", "value", value)
374374
// If metric do not use a field content in metric's name
375375
if strings.Compare(fieldToAppend, "") == 0 {
376376
desc := prometheus.NewDesc(
@@ -381,22 +381,22 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
381381
if metricsType[strings.ToLower(metric)] == "histogram" {
382382
count, err := strconv.ParseUint(strings.TrimSpace(row["count"]), 10, 64)
383383
if err != nil {
384-
level.Error(logger).Log("Unable to convert count value to int (metric=" + metric +
385-
",metricHelp=" + metricHelp + ",value=<" + row["count"] + ">)")
384+
level.Error(logger).Log("msg", "Unable to convert count value to int", "metric", metric,
385+
"metricHelp", metricHelp, "value", row["count"])
386386
continue
387387
}
388388
buckets := make(map[float64]uint64)
389389
for field, le := range metricsBuckets[metric] {
390390
lelimit, err := strconv.ParseFloat(strings.TrimSpace(le), 64)
391391
if err != nil {
392-
level.Error(logger).Log("Unable to convert bucket limit value to float (metric=" + metric +
393-
",metricHelp=" + metricHelp + ",bucketlimit=<" + le + ">)")
392+
level.Error(logger).Log("msg", "Unable to convert bucket limit value to float", "metric", metric,
393+
"metricHelp", metricHelp, ",bucketlimit", le)
394394
continue
395395
}
396396
counter, err := strconv.ParseUint(strings.TrimSpace(row[field]), 10, 64)
397397
if err != nil {
398-
level.Error(logger).Log("Unable to convert ", field, " value to int (metric="+metric+
399-
",metricHelp="+metricHelp+",value=<"+row[field]+">)")
398+
level.Error(logger).Log("msg", "Unable to convert value to int", "field", field, "metric", metric,
399+
"metricHelp", metricHelp, "value", row[field])
400400
continue
401401
}
402402
buckets[lelimit] = counter
@@ -415,22 +415,22 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
415415
if metricsType[strings.ToLower(metric)] == "histogram" {
416416
count, err := strconv.ParseUint(strings.TrimSpace(row["count"]), 10, 64)
417417
if err != nil {
418-
level.Error(logger).Log("Unable to convert count value to int (metric=" + metric +
419-
",metricHelp=" + metricHelp + ",value=<" + row["count"] + ">)")
418+
level.Error(logger).Log("msg", "Unable to convert count value to int", "metric", metric,
419+
"metricHelp", metricHelp, "value", row["count"])
420420
continue
421421
}
422422
buckets := make(map[float64]uint64)
423423
for field, le := range metricsBuckets[metric] {
424424
lelimit, err := strconv.ParseFloat(strings.TrimSpace(le), 64)
425425
if err != nil {
426-
level.Error(logger).Log("Unable to convert bucket limit value to float (metric=" + metric +
427-
",metricHelp=" + metricHelp + ",bucketlimit=<" + le + ">)")
426+
level.Error(logger).Log("msg", "Unable to convert bucket limit value to float", "metric", metric,
427+
"metricHelp", metricHelp, ",bucketlimit", le)
428428
continue
429429
}
430430
counter, err := strconv.ParseUint(strings.TrimSpace(row[field]), 10, 64)
431431
if err != nil {
432-
level.Error(logger).Log("Unable to convert ", field, " value to int (metric="+metric+
433-
",metricHelp="+metricHelp+",value=<"+row[field]+">)")
432+
level.Error(logger).Log("msg", "Unable to convert value to int", "field", field, "metric", metric,
433+
"metricHelp", metricHelp, "value", row[field])
434434
continue
435435
}
436436
buckets[lelimit] = counter
@@ -444,9 +444,9 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
444444
}
445445
return nil
446446
}
447-
level.Debug(logger).Log("Calling function GeneratePrometheusMetrics()")
447+
level.Debug(logger).Log("msg", "Calling function GeneratePrometheusMetrics()")
448448
err := GeneratePrometheusMetrics(db, genericParser, request, logger)
449-
level.Debug(logger).Log("ScrapeGenericValues() - metricsCount: ", metricsCount)
449+
level.Debug(logger).Log("msg", "ScrapeGenericValues()", "metricsCount", metricsCount)
450450
if err != nil {
451451
return err
452452
}
@@ -463,7 +463,7 @@ func GeneratePrometheusMetrics(db *sql.DB, parse func(row map[string]string) err
463463
// Add a timeout
464464
timeout, err := strconv.Atoi(*queryTimeout)
465465
if err != nil {
466-
level.Error(logger).Log("error while converting timeout option value: ", err)
466+
level.Error(logger).Log("msg", "error while converting timeout option", "err", err)
467467
panic(err)
468468
}
469469
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(timeout)*time.Second)
@@ -539,15 +539,15 @@ func checkIfMetricsChanged(logger log.Logger) bool {
539539
if len(_customMetrics) == 0 {
540540
continue
541541
}
542-
level.Debug(logger).Log("Checking modifications in following metrics definition file:", _customMetrics)
542+
level.Debug(logger).Log("msg", "Checking modifications in following metrics definition.", "file", _customMetrics)
543543
h := sha256.New()
544544
if err := hashFile(h, _customMetrics); err != nil {
545-
level.Error(logger).Log("Unable to get file hash", err)
545+
level.Error(logger).Log("msg", "Unable to get file hash", "err", err)
546546
return false
547547
}
548548
// If any of files has been changed reload metrics
549549
if !bytes.Equal(hashMap[i], h.Sum(nil)) {
550-
level.Info(logger).Log(_customMetrics, "has been changed. Reloading metrics...")
550+
level.Info(logger).Log("msg", "Metrics file has been changed. Reloading...", "file", _customMetrics)
551551
hashMap[i] = h.Sum(nil)
552552
return true
553553
}
@@ -561,25 +561,25 @@ func reloadMetrics(logger log.Logger) {
561561

562562
// Load default metrics
563563
if _, err := toml.DecodeFile(*defaultFileMetrics, &metricsToScrap); err != nil {
564-
level.Error(logger).Log(err)
564+
level.Error(logger).Log("msg", err)
565565
panic(errors.New("Error while loading " + *defaultFileMetrics))
566566
} else {
567-
level.Info(logger).Log("Successfully loaded default metrics from: " + *defaultFileMetrics)
567+
level.Info(logger).Log("msg", "Successfully loaded default metrics", "file", *defaultFileMetrics)
568568
}
569569

570570
// If custom metrics, load it
571571
if strings.Compare(*customMetrics, "") != 0 {
572572
for _, _customMetrics := range strings.Split(*customMetrics, ",") {
573573
if _, err := toml.DecodeFile(_customMetrics, &additionalMetrics); err != nil {
574-
level.Error(logger).Log(err)
574+
level.Error(logger).Log("msg", err)
575575
panic(errors.New("Error while loading " + _customMetrics))
576576
} else {
577-
level.Info(logger).Log("Successfully loaded custom metrics from: " + _customMetrics)
577+
level.Info(logger).Log("msg", "Successfully loaded custom metrics", "file", _customMetrics)
578578
}
579579
metricsToScrap.Metric = append(metricsToScrap.Metric, additionalMetrics.Metric...)
580580
}
581581
} else {
582-
level.Info(logger).Log("No custom metrics defined.")
582+
level.Info(logger).Log("msg", "No custom metrics defined.")
583583
}
584584
}
585585

@@ -593,7 +593,7 @@ func main() {
593593
kingpin.Parse()
594594
logger := promlog.New(promlogConfig)
595595

596-
level.Info(logger).Log("Starting oracledb_exporter " + Version)
596+
level.Info(logger).Log("msg", "Starting oracledb_exporter", "version", Version)
597597
dsn := os.Getenv("DATA_SOURCE_NAME")
598598

599599
// Load default and custom metrics

0 commit comments

Comments
 (0)