@@ -99,7 +99,7 @@ func getEnv(key, fallback string) string {
99
99
func atoi (stringValue string , logger log.Logger ) int {
100
100
intValue , err := strconv .Atoi (stringValue )
101
101
if err != nil {
102
- level .Error (logger ).Log ("error while converting to int: " , err )
102
+ level .Error (logger ).Log ("msg" , " error while converting to int" , "err " , err )
103
103
panic (err )
104
104
}
105
105
return intValue
@@ -115,17 +115,17 @@ func maskDsn(dsn string) string {
115
115
}
116
116
117
117
func connect (dsn string , logger log.Logger ) * sql.DB {
118
- level .Debug (logger ).Log ("Launching connection: " , maskDsn (dsn ))
118
+ level .Debug (logger ).Log ("msg" , " Launching connection" , "dsn " , maskDsn (dsn ))
119
119
db , err := sql .Open ("oci8" , dsn )
120
120
if err != nil {
121
- level .Error (logger ).Log ("Error while connecting to" , dsn )
121
+ level .Error (logger ).Log ("msg" , " Error while connecting to" , "dsn " , dsn )
122
122
panic (err )
123
123
}
124
- level .Debug (logger ).Log ("set max idle connections to " , * maxIdleConns )
124
+ level .Debug (logger ).Log ("msg" , " set max idle connections to" , "value " , * maxIdleConns )
125
125
db .SetMaxIdleConns (* maxIdleConns )
126
- level .Debug (logger ).Log ("set max open connections to " , * maxOpenConns )
126
+ level .Debug (logger ).Log ("msg" , " set max open connections to" , "value " , * maxOpenConns )
127
127
db .SetMaxOpenConns (* maxOpenConns )
128
- level .Debug (logger ).Log ("Successfully connected to: " , maskDsn (dsn ))
128
+ level .Debug (logger ).Log ("msg" , " Successfully connected to" , "dsn " , maskDsn (dsn ))
129
129
return db
130
130
}
131
131
@@ -150,7 +150,7 @@ func NewExporter(dsn string, logger log.Logger) *Exporter {
150
150
Namespace : namespace ,
151
151
Subsystem : exporter ,
152
152
Name : "scrape_errors_total" ,
153
- Help : "Total number of times an error occured scraping a Oracle database." ,
153
+ Help : "Total number of times an error occurred scraping a Oracle database." ,
154
154
}, []string {"collector" }),
155
155
error : prometheus .NewGauge (prometheus.GaugeOpts {
156
156
Namespace : namespace ,
@@ -254,17 +254,17 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
254
254
255
255
if err = e .db .Ping (); err != nil {
256
256
if strings .Contains (err .Error (), "sql: database is closed" ) {
257
- level .Info (e .logger ).Log ("Reconnecting to DB" )
257
+ level .Info (e .logger ).Log ("msg" , " Reconnecting to DB" )
258
258
e .db = connect (e .dsn , e .logger )
259
259
}
260
260
}
261
261
if err = e .db .Ping (); err != nil {
262
- level .Error (e .logger ).Log ("Error pinging oracle: " , err )
262
+ level .Error (e .logger ).Log ("msg" , " Error pinging oracle" , "err " , err )
263
263
//e.db.Close()
264
264
e .up .Set (0 )
265
265
return
266
266
} else {
267
- level .Debug (e .logger ).Log ("Successfully pinged Oracle database: " , maskDsn (e .dsn ))
267
+ level .Debug (e .logger ).Log ("msg" , " Successfully pinged Oracle database" , "dsn " , maskDsn (e .dsn ))
268
268
e .up .Set (1 )
269
269
}
270
270
@@ -281,42 +281,42 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
281
281
go func () {
282
282
defer wg .Done ()
283
283
284
- level .Debug (e .logger ).Log ("About to scrape metric: " )
285
- level .Debug (e .logger ).Log ("- Metric MetricsDesc: " , metric .MetricsDesc )
286
- level .Debug (e .logger ).Log ("- Metric Context: " , metric .Context )
287
- level .Debug (e .logger ).Log ("- Metric MetricsType: " , metric .MetricsType )
288
- level .Debug (e .logger ).Log ("- Metric MetricsBuckets: " , metric .MetricsBuckets , "(Ignored unless Histogram type)" )
289
- level .Debug (e .logger ).Log ("- Metric Labels: " , metric .Labels )
290
- level .Debug (e .logger ).Log ("- Metric FieldToAppend: " , metric .FieldToAppend )
291
- level .Debug (e .logger ).Log ("- Metric IgnoreZeroResult: " , metric .IgnoreZeroResult )
292
- level .Debug (e .logger ).Log ("- Metric Request: " , metric .Request )
284
+ level .Debug (e .logger ).Log ("msg" , " About to scrape metric" )
285
+ level .Debug (e .logger ).Log ("metricsDesc " , metric .MetricsDesc )
286
+ level .Debug (e .logger ).Log ("context " , metric .Context )
287
+ level .Debug (e .logger ).Log ("metricsType " , metric .MetricsType )
288
+ level .Debug (e .logger ).Log ("metricsBuckets " , metric .MetricsBuckets ) // , "(Ignored unless Histogram type)"
289
+ level .Debug (e .logger ).Log ("labels " , metric .Labels )
290
+ level .Debug (e .logger ).Log ("fieldToAppend " , metric .FieldToAppend )
291
+ level .Debug (e .logger ).Log ("ignoreZeroResult " , metric .IgnoreZeroResult )
292
+ level .Debug (e .logger ).Log ("request " , metric .Request )
293
293
294
294
if len (metric .Request ) == 0 {
295
- level .Error (e .logger ).Log ("Error scraping for " , metric . MetricsDesc , " . Did you forget to define request in your toml file?" )
295
+ level .Error (e .logger ).Log ("msg " , "Error scraping . Did you forget to define request in your toml file?", "metricsDesc" , metric . MetricsDesc )
296
296
return
297
297
}
298
298
299
299
if len (metric .MetricsDesc ) == 0 {
300
- level .Error (e .logger ).Log ("Error scraping for query" , metric . Request , ". Did you forget to define metricsdesc in your toml file?" )
300
+ level .Error (e .logger ).Log ("msg" , " Error scraping for query. Did you forget to define metricsdesc in your toml file?", "request" , metric . Request )
301
301
return
302
302
}
303
303
304
304
for column , metricType := range metric .MetricsType {
305
305
if metricType == "histogram" {
306
306
_ , ok := metric .MetricsBuckets [column ]
307
307
if ! ok {
308
- level .Error (e .logger ).Log ("Unable to find MetricsBuckets configuration key for metric. ( metric=" + column + ")" )
308
+ level .Error (e .logger ).Log ("msg" , " Unable to find MetricsBuckets configuration key for metric" , " metric" , column )
309
309
return
310
310
}
311
311
}
312
312
}
313
313
314
314
scrapeStart := time .Now ()
315
315
if err = ScrapeMetric (e .db , ch , metric , e .logger ); err != nil {
316
- level .Error (e .logger ).Log ("Error scraping for" , metric .Context , "_ " , metric .MetricsDesc , time .Since (scrapeStart ), ": " , err )
316
+ level .Error (e .logger ).Log ("msg" , " Error scraping for" , "context" , metric .Context , "metricsDesc " , metric .MetricsDesc , "since" , time .Since (scrapeStart ), "err " , err )
317
317
e .scrapeErrors .WithLabelValues (metric .Context ).Inc ()
318
318
} else {
319
- level .Debug (e .logger ).Log ("Successfully scraped metric: " , metric .Context , metric .MetricsDesc , time .Since (scrapeStart ))
319
+ level .Debug (e .logger ).Log ("msg" , " Successfully scraped metric" , "context" , metric .Context , "metricsDesc" , metric .MetricsDesc , "since" , time .Since (scrapeStart ))
320
320
}
321
321
}()
322
322
}
@@ -343,7 +343,7 @@ func GetMetricType(metricType string, metricsType map[string]string) prometheus.
343
343
344
344
// interface method to call ScrapeGenericValues using Metric struct values
345
345
func ScrapeMetric (db * sql.DB , ch chan <- prometheus.Metric , metricDefinition Metric , logger log.Logger ) error {
346
- level .Debug (logger ).Log ("Calling function ScrapeGenericValues()" )
346
+ level .Debug (logger ).Log ("msg" , " Calling function ScrapeGenericValues()" )
347
347
return ScrapeGenericValues (db , ch , metricDefinition .Context , metricDefinition .Labels ,
348
348
metricDefinition .MetricsDesc , metricDefinition .MetricsType , metricDefinition .MetricsBuckets ,
349
349
metricDefinition .FieldToAppend , metricDefinition .IgnoreZeroResult ,
@@ -365,11 +365,11 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
365
365
value , err := strconv .ParseFloat (strings .TrimSpace (row [metric ]), 64 )
366
366
// If not a float, skip current metric
367
367
if err != nil {
368
- level .Error (logger ).Log ("Unable to convert current value to float ( metric=" + metric +
369
- ", metricHelp=" + metricHelp + ", value=<" + row [metric ] + ">)" )
368
+ level .Error (logger ).Log ("msg" , " Unable to convert current value to float" , " metric" , metric ,
369
+ "metricHelp" , metricHelp , " value" , row [metric ])
370
370
continue
371
371
}
372
- level .Debug (logger ).Log ("Query result looks like: " , value )
372
+ level .Debug (logger ).Log ("msg" , " Query result looks like" , "value " , value )
373
373
// If metric do not use a field content in metric's name
374
374
if strings .Compare (fieldToAppend , "" ) == 0 {
375
375
desc := prometheus .NewDesc (
@@ -380,22 +380,22 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
380
380
if metricsType [strings .ToLower (metric )] == "histogram" {
381
381
count , err := strconv .ParseUint (strings .TrimSpace (row ["count" ]), 10 , 64 )
382
382
if err != nil {
383
- level .Error (logger ).Log ("Unable to convert count value to int (metric=" + metric +
384
- ", metricHelp=" + metricHelp + ", value=<" + row ["count" ] + ">)" )
383
+ level .Error (logger ).Log ("msg" , " Unable to convert count value to int" , " metric" , metric ,
384
+ "metricHelp" , metricHelp , " value" , row ["count" ])
385
385
continue
386
386
}
387
387
buckets := make (map [float64 ]uint64 )
388
388
for field , le := range metricsBuckets [metric ] {
389
389
lelimit , err := strconv .ParseFloat (strings .TrimSpace (le ), 64 )
390
390
if err != nil {
391
- level .Error (logger ).Log ("Unable to convert bucket limit value to float ( metric=" + metric +
392
- ", metricHelp=" + metricHelp + ",bucketlimit=<" + le + ">)" )
391
+ level .Error (logger ).Log ("msg" , " Unable to convert bucket limit value to float" , " metric" , metric ,
392
+ "metricHelp" , metricHelp , ",bucketlimit" , le )
393
393
continue
394
394
}
395
395
counter , err := strconv .ParseUint (strings .TrimSpace (row [field ]), 10 , 64 )
396
396
if err != nil {
397
- level .Error (logger ).Log ("Unable to convert " , field , " value to int ( metric=" + metric +
398
- ", metricHelp=" + metricHelp + ", value=<" + row [field ]+ ">)" )
397
+ level .Error (logger ).Log ("msg" , " Unable to convert value to int " , " field" , field , " metric" , metric ,
398
+ "metricHelp" , metricHelp , " value" , row [field ])
399
399
continue
400
400
}
401
401
buckets [lelimit ] = counter
@@ -414,22 +414,22 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
414
414
if metricsType [strings .ToLower (metric )] == "histogram" {
415
415
count , err := strconv .ParseUint (strings .TrimSpace (row ["count" ]), 10 , 64 )
416
416
if err != nil {
417
- level .Error (logger ).Log ("Unable to convert count value to int ( metric=" + metric +
418
- ", metricHelp=" + metricHelp + ", value=<" + row ["count" ] + ">)" )
417
+ level .Error (logger ).Log ("msg" , " Unable to convert count value to int" , " metric" , metric ,
418
+ "metricHelp" , metricHelp , " value" , row ["count" ])
419
419
continue
420
420
}
421
421
buckets := make (map [float64 ]uint64 )
422
422
for field , le := range metricsBuckets [metric ] {
423
423
lelimit , err := strconv .ParseFloat (strings .TrimSpace (le ), 64 )
424
424
if err != nil {
425
- level .Error (logger ).Log ("Unable to convert bucket limit value to float ( metric=" + metric +
426
- ", metricHelp=" + metricHelp + ",bucketlimit=<" + le + ">)" )
425
+ level .Error (logger ).Log ("msg" , " Unable to convert bucket limit value to float" , " metric" , metric ,
426
+ "metricHelp" , metricHelp , ",bucketlimit" , le )
427
427
continue
428
428
}
429
429
counter , err := strconv .ParseUint (strings .TrimSpace (row [field ]), 10 , 64 )
430
430
if err != nil {
431
- level .Error (logger ).Log ("Unable to convert " , field , " value to int ( metric=" + metric +
432
- ", metricHelp=" + metricHelp + ", value=<" + row [field ]+ ">)" )
431
+ level .Error (logger ).Log ("msg" , " Unable to convert value to int " , " field" , field , " metric" , metric ,
432
+ "metricHelp" , metricHelp , " value" , row [field ])
433
433
continue
434
434
}
435
435
buckets [lelimit ] = counter
@@ -443,9 +443,9 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
443
443
}
444
444
return nil
445
445
}
446
- level .Debug (logger ).Log ("Calling function GeneratePrometheusMetrics()" )
446
+ level .Debug (logger ).Log ("msg" , " Calling function GeneratePrometheusMetrics()" )
447
447
err := GeneratePrometheusMetrics (db , genericParser , request , logger )
448
- level .Debug (logger ).Log ("ScrapeGenericValues() - metricsCount: " , metricsCount )
448
+ level .Debug (logger ).Log ("msg" , " ScrapeGenericValues()" , " metricsCount" , metricsCount )
449
449
if err != nil {
450
450
return err
451
451
}
@@ -462,7 +462,7 @@ func GeneratePrometheusMetrics(db *sql.DB, parse func(row map[string]string) err
462
462
// Add a timeout
463
463
timeout , err := strconv .Atoi (* queryTimeout )
464
464
if err != nil {
465
- level .Error (logger ).Log ("error while converting timeout option value: " , err )
465
+ level .Error (logger ).Log ("msg" , " error while converting timeout option" , "err " , err )
466
466
panic (err )
467
467
}
468
468
ctx , cancel := context .WithTimeout (context .Background (), time .Duration (timeout )* time .Second )
@@ -538,15 +538,15 @@ func checkIfMetricsChanged(logger log.Logger) bool {
538
538
if len (_customMetrics ) == 0 {
539
539
continue
540
540
}
541
- level .Debug (logger ).Log ("Checking modifications in following metrics definition file: " , _customMetrics )
541
+ level .Debug (logger ).Log ("msg" , " Checking modifications in following metrics definition" , " file" , _customMetrics )
542
542
h := sha256 .New ()
543
543
if err := hashFile (h , _customMetrics ); err != nil {
544
- level .Error (logger ).Log ("Unable to get file hash" , err )
544
+ level .Error (logger ).Log ("msg" , " Unable to get file hash" , "err " , err )
545
545
return false
546
546
}
547
547
// If any of files has been changed reload metrics
548
548
if ! bytes .Equal (hashMap [i ], h .Sum (nil )) {
549
- level .Info (logger ).Log (_customMetrics , "has been changed. Reloading metrics ..." )
549
+ level .Info (logger ).Log ("msg" , "Metrics file has been changed. Reloading..." , "file" , _customMetrics )
550
550
hashMap [i ] = h .Sum (nil )
551
551
return true
552
552
}
@@ -560,25 +560,25 @@ func reloadMetrics(logger log.Logger) {
560
560
561
561
// Load default metrics
562
562
if _ , err := toml .DecodeFile (* defaultFileMetrics , & metricsToScrap ); err != nil {
563
- level .Error (logger ).Log (err )
563
+ level .Error (logger ).Log ("msg" , err )
564
564
panic (errors .New ("Error while loading " + * defaultFileMetrics ))
565
565
} else {
566
- level .Info (logger ).Log ("Successfully loaded default metrics from: " + * defaultFileMetrics )
566
+ level .Info (logger ).Log ("msg" , " Successfully loaded default metrics" , "file" , * defaultFileMetrics )
567
567
}
568
568
569
569
// If custom metrics, load it
570
570
if strings .Compare (* customMetrics , "" ) != 0 {
571
571
for _ , _customMetrics := range strings .Split (* customMetrics , "," ) {
572
572
if _ , err := toml .DecodeFile (_customMetrics , & additionalMetrics ); err != nil {
573
- level .Error (logger ).Log (err )
573
+ level .Error (logger ).Log ("msg" , err )
574
574
panic (errors .New ("Error while loading " + _customMetrics ))
575
575
} else {
576
- level .Info (logger ).Log ("Successfully loaded custom metrics from: " + _customMetrics )
576
+ level .Info (logger ).Log ("msg" , " Successfully loaded custom metrics" , "file" , _customMetrics )
577
577
}
578
578
metricsToScrap .Metric = append (metricsToScrap .Metric , additionalMetrics .Metric ... )
579
579
}
580
580
} else {
581
- level .Info (logger ).Log ("No custom metrics defined. " )
581
+ level .Info (logger ).Log ("msg" , " No custom metrics defined" )
582
582
}
583
583
}
584
584
@@ -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