Skip to content

Commit 0ac4c06

Browse files
committed
some logging cleanup, and tweaking metrics
Signed-off-by: Mark Nelson <[email protected]>
1 parent 1bb8245 commit 0ac4c06

File tree

4 files changed

+43
-33
lines changed

4 files changed

+43
-33
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ OS_TYPE ?= $(shell uname -s | tr '[:upper:]' '[:lower:]')
33
ARCH_TYPE ?= $(subst x86_64,amd64,$(patsubst i%86,386,$(ARCH)))
44
GOOS ?= $(shell go env GOOS)
55
GOARCH ?= $(shell go env GOARCH)
6-
VERSION ?= 1.0.0
6+
VERSION ?= 1.0.1
77
LDFLAGS := -X main.Version=$(VERSION)
88
GOFLAGS := -ldflags "$(LDFLAGS) -s -w"
99
BUILD_ARGS = --build-arg VERSION=$(VERSION)

collector/collector.go

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
275275
return
276276
}
277277

278-
level.Debug(e.logger).Log("Successfully pinged Oracle database: ", maskDsn(e.connectString))
278+
level.Debug(e.logger).Log("msg", "Successfully pinged Oracle database: "+maskDsn(e.connectString))
279279
e.up.Set(1)
280280

281281
if e.checkIfMetricsChanged() {
@@ -291,15 +291,15 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
291291
go func() {
292292
defer wg.Done()
293293

294-
level.Debug(e.logger).Log("About to scrape metric: ")
295-
level.Debug(e.logger).Log("- Metric MetricsDesc: ", metric.MetricsDesc)
296-
level.Debug(e.logger).Log("- Metric Context: ", metric.Context)
297-
level.Debug(e.logger).Log("- Metric MetricsType: ", metric.MetricsType)
298-
level.Debug(e.logger).Log("- Metric MetricsBuckets: ", metric.MetricsBuckets, "(Ignored unless Histogram type)")
299-
level.Debug(e.logger).Log("- Metric Labels: ", metric.Labels)
300-
level.Debug(e.logger).Log("- Metric FieldToAppend: ", metric.FieldToAppend)
301-
level.Debug(e.logger).Log("- Metric IgnoreZeroResult: ", metric.IgnoreZeroResult)
302-
level.Debug(e.logger).Log("- Metric Request: ", metric.Request)
294+
level.Debug(e.logger).Log("msg", "About to scrape metric",
295+
"Context", metric.Context,
296+
"MetricsDesc", fmt.Sprint(metric.MetricsDesc),
297+
"MetricsType", fmt.Sprint(metric.MetricsType),
298+
"MetricsBuckets", fmt.Sprint(metric.MetricsBuckets), // ignored unless histogram
299+
"Labels", fmt.Sprint(metric.Labels),
300+
"FieldToAppend", metric.FieldToAppend,
301+
"IgnoreZeroResult", metric.IgnoreZeroResult,
302+
"Request", metric.Request)
303303

304304
if len(metric.Request) == 0 {
305305
level.Error(e.logger).Log("Error scraping for ", metric.MetricsDesc, ". Did you forget to define request in your toml file?")
@@ -323,18 +323,25 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
323323

324324
scrapeStart := time.Now()
325325
if err = e.ScrapeMetric(e.db, ch, metric); err != nil {
326-
level.Error(e.logger).Log("Error scraping for", metric.Context, "_", metric.MetricsDesc, time.Since(scrapeStart), ":", err)
326+
level.Error(e.logger).Log("msg", "Error scraping metric",
327+
"Context", metric.Context,
328+
"MetricsDesc", fmt.Sprint(metric.MetricsDesc),
329+
"time", time.Since(scrapeStart),
330+
"error", err)
327331
e.scrapeErrors.WithLabelValues(metric.Context).Inc()
328332
} else {
329-
level.Debug(e.logger).Log("Successfully scraped metric: ", metric.Context, metric.MetricsDesc, time.Since(scrapeStart))
333+
level.Debug(e.logger).Log("msg", "Successfully scraped metric",
334+
"Context", metric.Context,
335+
"MetricDesc", fmt.Sprint(metric.MetricsDesc),
336+
"time", time.Since(scrapeStart))
330337
}
331338
}()
332339
}
333340
wg.Wait()
334341
}
335342

336343
func (e *Exporter) connect() error {
337-
level.Debug(e.logger).Log("Launching connection: ", maskDsn(e.connectString))
344+
level.Debug(e.logger).Log("msg", "Launching connection to "+maskDsn(e.connectString))
338345

339346
var P godror.ConnectionParams
340347
P.Username, P.Password, P.ConnectString = e.user, godror.NewPassword(e.password), e.connectString
@@ -344,11 +351,11 @@ func (e *Exporter) connect() error {
344351
// level.Error(e.logger).Log("Error while connecting to", e.dsn)
345352
// return err
346353
// }
347-
level.Debug(e.logger).Log("set max idle connections to ", e.config.MaxIdleConns)
354+
level.Debug(e.logger).Log("msg", "set max idle connections to "+strconv.Itoa(e.config.MaxIdleConns))
348355
db.SetMaxIdleConns(e.config.MaxIdleConns)
349-
level.Debug(e.logger).Log("set max open connections to ", e.config.MaxOpenConns)
356+
level.Debug(e.logger).Log("msg", "set max open connections to "+strconv.Itoa(e.config.MaxOpenConns))
350357
db.SetMaxOpenConns(e.config.MaxOpenConns)
351-
level.Debug(e.logger).Log("Successfully connected to: ", maskDsn(e.connectString))
358+
level.Debug(e.logger).Log("msg", "Successfully connected to "+maskDsn(e.connectString))
352359
e.db = db
353360
return nil
354361
}
@@ -401,18 +408,18 @@ func (e *Exporter) reloadMetrics() {
401408
level.Error(e.logger).Log(err)
402409
panic(errors.New("Error while loading " + _customMetrics))
403410
} else {
404-
level.Info(e.logger).Log("Successfully loaded custom metrics from: " + _customMetrics)
411+
level.Info(e.logger).Log("msg", "Successfully loaded custom metrics from "+_customMetrics)
405412
}
406413
e.metricsToScrape.Metric = append(e.metricsToScrape.Metric, additionalMetrics.Metric...)
407414
}
408415
} else {
409-
level.Debug(e.logger).Log("No custom metrics defined.")
416+
level.Debug(e.logger).Log("msg", "No custom metrics defined.")
410417
}
411418
}
412419

413420
// ScrapeMetric is an interface method to call scrapeGenericValues using Metric struct values
414421
func (e *Exporter) ScrapeMetric(db *sql.DB, ch chan<- prometheus.Metric, metricDefinition Metric) error {
415-
level.Debug(e.logger).Log("Calling function ScrapeGenericValues()")
422+
level.Debug(e.logger).Log("msg", "Calling function ScrapeGenericValues()")
416423
return e.scrapeGenericValues(db, ch, metricDefinition.Context, metricDefinition.Labels,
417424
metricDefinition.MetricsDesc, metricDefinition.MetricsType, metricDefinition.MetricsBuckets,
418425
metricDefinition.FieldToAppend, metricDefinition.IgnoreZeroResult,
@@ -438,7 +445,8 @@ func (e *Exporter) scrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric,
438445
",metricHelp=" + metricHelp + ",value=<" + row[metric] + ">)")
439446
continue
440447
}
441-
level.Debug(e.logger).Log("Query result looks like: ", value)
448+
level.Debug(e.logger).Log("msg", "Query result",
449+
"value", value)
442450
// If metric do not use a field content in metric's name
443451
if strings.Compare(fieldToAppend, "") == 0 {
444452
desc := prometheus.NewDesc(
@@ -512,14 +520,14 @@ func (e *Exporter) scrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric,
512520
}
513521
return nil
514522
}
515-
level.Debug(e.logger).Log("Calling function GeneratePrometheusMetrics()")
523+
level.Debug(e.logger).Log("msg", "Calling function GeneratePrometheusMetrics()")
516524
err := e.generatePrometheusMetrics(db, genericParser, request)
517-
level.Debug(e.logger).Log("ScrapeGenericValues() - metricsCount: ", metricsCount)
525+
level.Debug(e.logger).Log("msg", "ScrapeGenericValues() - metricsCount: "+strconv.Itoa(metricsCount))
518526
if err != nil {
519527
return err
520528
}
521529
if !ignoreZeroResult && metricsCount == 0 {
522-
return errors.New("No metrics found while parsing")
530+
return errors.New("no metrics found while parsing, query returned no rows")
523531
}
524532
return err
525533
}

collector/default_metrics.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,11 @@ context = "wait_time"
5050
metricsdesc = { value="Generic counter metric from v$waitclassmetric view in Oracle." }
5151
fieldtoappend= "wait_class"
5252
request = '''
53-
SELECT
54-
n.wait_class as WAIT_CLASS,
55-
round(m.time_waited/m.INTSIZE_CSEC,3) as VALUE
56-
FROM
57-
v$waitclassmetric m, v$system_wait_class n
58-
WHERE
59-
m.wait_class_id=n.wait_class_id AND n.wait_class != 'Idle'
53+
SELECT wait_class as WAIT_CLASS, sum(time_waited) as VALUE
54+
FROM gv$active_session_history
55+
where wait_class is not null
56+
and sample_time > sysdate - interval '1' hour
57+
GROUP BY wait_class;
6058
'''
6159
6260
[[metric]]

default-metrics.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ request = "SELECT status, type, COUNT(*) as value FROM v$session GROUP BY status
88
context = "resource"
99
labels = [ "resource_name" ]
1010
metricsdesc = { current_utilization= "Generic counter metric from v$resource_limit view in Oracle (current value).", limit_value="Generic counter metric from v$resource_limit view in Oracle (UNLIMITED: -1)." }
11-
request="SELECT resource_name,current_utilization,CASE WHEN TRIM(limit_value) LIKE 'UNLIMITED' THEN '-1' ELSE TRIM(limit_value) END as limit_value FROM v$resource_limit"
11+
request = '''
12+
SELECT resource_name, current_utilization, CASE WHEN TRIM(limit_value) LIKE 'UNLIMITED' THEN '-1' ELSE TRIM(limit_value) END as limit_value
13+
FROM v$resource_limit
14+
'''
1215

1316
[[metric]]
1417
context = "asm_diskgroup"
@@ -37,8 +40,9 @@ SELECT wait_class as WAIT_CLASS, sum(time_waited) as VALUE
3740
FROM gv$active_session_history
3841
where wait_class is not null
3942
and sample_time > sysdate - interval '1' hour
40-
GROUP BY wait_class;
43+
GROUP BY wait_class
4144
'''
45+
ignorezeroresult = true
4246

4347
[[metric]]
4448
context = "tablespace"

0 commit comments

Comments
 (0)