@@ -100,7 +100,7 @@ func getEnv(key, fallback string) string {
100
100
func atoi (stringValue string , logger log.Logger ) int {
101
101
intValue , err := strconv .Atoi (stringValue )
102
102
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 )
104
104
panic (err )
105
105
}
106
106
return intValue
@@ -116,17 +116,17 @@ func maskDsn(dsn string) string {
116
116
}
117
117
118
118
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 ))
120
120
db , err := sql .Open ("oci8" , dsn )
121
121
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 )
123
123
panic (err )
124
124
}
125
- level .Debug (logger ).Log ("set max idle connections to " , * maxIdleConns )
125
+ level .Debug (logger ).Log ("msg" , " set max idle connections to " , "value " , * maxIdleConns )
126
126
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 )
128
128
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 ))
130
130
return db
131
131
}
132
132
@@ -255,17 +255,17 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
255
255
256
256
if err = e .db .Ping (); err != nil {
257
257
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" )
259
259
e .db = connect (e .dsn , e .logger )
260
260
}
261
261
}
262
262
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 )
264
264
//e.db.Close()
265
265
e .up .Set (0 )
266
266
return
267
267
} 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 ))
269
269
e .up .Set (1 )
270
270
}
271
271
@@ -282,42 +282,42 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
282
282
go func () {
283
283
defer wg .Done ()
284
284
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 )
294
294
295
295
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 )
297
297
return
298
298
}
299
299
300
300
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 )
302
302
return
303
303
}
304
304
305
305
for column , metricType := range metric .MetricsType {
306
306
if metricType == "histogram" {
307
307
_ , ok := metric .MetricsBuckets [column ]
308
308
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 )
310
310
return
311
311
}
312
312
}
313
313
}
314
314
315
315
scrapeStart := time .Now ()
316
316
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 )
318
318
e .scrapeErrors .WithLabelValues (metric .Context ).Inc ()
319
319
} 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 ))
321
321
}
322
322
}()
323
323
}
@@ -344,7 +344,7 @@ func GetMetricType(metricType string, metricsType map[string]string) prometheus.
344
344
345
345
// interface method to call ScrapeGenericValues using Metric struct values
346
346
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()" )
348
348
return ScrapeGenericValues (db , ch , metricDefinition .Context , metricDefinition .Labels ,
349
349
metricDefinition .MetricsDesc , metricDefinition .MetricsType , metricDefinition .MetricsBuckets ,
350
350
metricDefinition .FieldToAppend , metricDefinition .IgnoreZeroResult ,
@@ -366,11 +366,11 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
366
366
value , err := strconv .ParseFloat (strings .TrimSpace (row [metric ]), 64 )
367
367
// If not a float, skip current metric
368
368
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 ])
371
371
continue
372
372
}
373
- level .Debug (logger ).Log ("Query result looks like: " , value )
373
+ level .Debug (logger ).Log ("msg" , " Query result looks like" , "value " , value )
374
374
// If metric do not use a field content in metric's name
375
375
if strings .Compare (fieldToAppend , "" ) == 0 {
376
376
desc := prometheus .NewDesc (
@@ -381,22 +381,22 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
381
381
if metricsType [strings .ToLower (metric )] == "histogram" {
382
382
count , err := strconv .ParseUint (strings .TrimSpace (row ["count" ]), 10 , 64 )
383
383
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" ])
386
386
continue
387
387
}
388
388
buckets := make (map [float64 ]uint64 )
389
389
for field , le := range metricsBuckets [metric ] {
390
390
lelimit , err := strconv .ParseFloat (strings .TrimSpace (le ), 64 )
391
391
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 )
394
394
continue
395
395
}
396
396
counter , err := strconv .ParseUint (strings .TrimSpace (row [field ]), 10 , 64 )
397
397
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 ])
400
400
continue
401
401
}
402
402
buckets [lelimit ] = counter
@@ -415,22 +415,22 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
415
415
if metricsType [strings .ToLower (metric )] == "histogram" {
416
416
count , err := strconv .ParseUint (strings .TrimSpace (row ["count" ]), 10 , 64 )
417
417
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" ])
420
420
continue
421
421
}
422
422
buckets := make (map [float64 ]uint64 )
423
423
for field , le := range metricsBuckets [metric ] {
424
424
lelimit , err := strconv .ParseFloat (strings .TrimSpace (le ), 64 )
425
425
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 )
428
428
continue
429
429
}
430
430
counter , err := strconv .ParseUint (strings .TrimSpace (row [field ]), 10 , 64 )
431
431
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 ])
434
434
continue
435
435
}
436
436
buckets [lelimit ] = counter
@@ -444,9 +444,9 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
444
444
}
445
445
return nil
446
446
}
447
- level .Debug (logger ).Log ("Calling function GeneratePrometheusMetrics()" )
447
+ level .Debug (logger ).Log ("msg" , " Calling function GeneratePrometheusMetrics()" )
448
448
err := GeneratePrometheusMetrics (db , genericParser , request , logger )
449
- level .Debug (logger ).Log ("ScrapeGenericValues() - metricsCount: " , metricsCount )
449
+ level .Debug (logger ).Log ("msg" , " ScrapeGenericValues()" , " metricsCount" , metricsCount )
450
450
if err != nil {
451
451
return err
452
452
}
@@ -463,7 +463,7 @@ func GeneratePrometheusMetrics(db *sql.DB, parse func(row map[string]string) err
463
463
// Add a timeout
464
464
timeout , err := strconv .Atoi (* queryTimeout )
465
465
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 )
467
467
panic (err )
468
468
}
469
469
ctx , cancel := context .WithTimeout (context .Background (), time .Duration (timeout )* time .Second )
@@ -539,15 +539,15 @@ func checkIfMetricsChanged(logger log.Logger) bool {
539
539
if len (_customMetrics ) == 0 {
540
540
continue
541
541
}
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 )
543
543
h := sha256 .New ()
544
544
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 )
546
546
return false
547
547
}
548
548
// If any of files has been changed reload metrics
549
549
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 )
551
551
hashMap [i ] = h .Sum (nil )
552
552
return true
553
553
}
@@ -561,25 +561,25 @@ func reloadMetrics(logger log.Logger) {
561
561
562
562
// Load default metrics
563
563
if _ , err := toml .DecodeFile (* defaultFileMetrics , & metricsToScrap ); err != nil {
564
- level .Error (logger ).Log (err )
564
+ level .Error (logger ).Log ("msg" , err )
565
565
panic (errors .New ("Error while loading " + * defaultFileMetrics ))
566
566
} else {
567
- level .Info (logger ).Log ("Successfully loaded default metrics from: " + * defaultFileMetrics )
567
+ level .Info (logger ).Log ("msg" , " Successfully loaded default metrics" , "file" , * defaultFileMetrics )
568
568
}
569
569
570
570
// If custom metrics, load it
571
571
if strings .Compare (* customMetrics , "" ) != 0 {
572
572
for _ , _customMetrics := range strings .Split (* customMetrics , "," ) {
573
573
if _ , err := toml .DecodeFile (_customMetrics , & additionalMetrics ); err != nil {
574
- level .Error (logger ).Log (err )
574
+ level .Error (logger ).Log ("msg" , err )
575
575
panic (errors .New ("Error while loading " + _customMetrics ))
576
576
} else {
577
- level .Info (logger ).Log ("Successfully loaded custom metrics from: " + _customMetrics )
577
+ level .Info (logger ).Log ("msg" , " Successfully loaded custom metrics" , "file" , _customMetrics )
578
578
}
579
579
metricsToScrap .Metric = append (metricsToScrap .Metric , additionalMetrics .Metric ... )
580
580
}
581
581
} else {
582
- level .Info (logger ).Log ("No custom metrics defined." )
582
+ level .Info (logger ).Log ("msg" , " No custom metrics defined." )
583
583
}
584
584
}
585
585
@@ -593,7 +593,7 @@ func main() {
593
593
kingpin .Parse ()
594
594
logger := promlog .New (promlogConfig )
595
595
596
- level .Info (logger ).Log ("Starting oracledb_exporter " + Version )
596
+ level .Info (logger ).Log ("msg" , " Starting oracledb_exporter" , "version" , Version )
597
597
dsn := os .Getenv ("DATA_SOURCE_NAME" )
598
598
599
599
// Load default and custom metrics
0 commit comments