Skip to content

Commit 1d47bdd

Browse files
Move oracledb_dbtype metric to default metrics (#381)
Signed-off-by: Anders Swanson <[email protected]>
1 parent b36c8a0 commit 1d47bdd

File tree

7 files changed

+32
-36
lines changed

7 files changed

+32
-36
lines changed

collector/collector.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,6 @@ func (e *Exporter) Collect(ch chan<- prometheus.Metric) {
175175
ch <- e.error
176176
e.scrapeErrors.Collect(ch)
177177
for _, db := range e.databases {
178-
ch <- db.DBTypeMetric(e.constLabels())
179178
ch <- db.UpMetric(e.constLabels())
180179
}
181180
}

collector/database.go

Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,6 @@ func (d *Database) UpMetric(exporterLabels map[string]string) prometheus.Metric
3434
)
3535
}
3636

37-
func (d *Database) DBTypeMetric(exporterLabels map[string]string) prometheus.Metric {
38-
desc := prometheus.NewDesc(
39-
prometheus.BuildFQName(namespace, "", "dbtype"),
40-
"Type of database the exporter is connected to (0=non-CDB, 1=CDB, >1=PDB).",
41-
nil,
42-
d.constLabels(exporterLabels),
43-
)
44-
return prometheus.MustNewConstMetric(desc,
45-
prometheus.GaugeValue,
46-
d.Type,
47-
)
48-
}
49-
5037
// ping the database. If the database is disconnected, try to reconnect.
5138
// If the database type is unknown, try to reload it.
5239
func (d *Database) ping(logger *slog.Logger) error {
@@ -61,16 +48,10 @@ func (d *Database) ping(logger *slog.Logger) error {
6148
}
6249
// If database is closed, try to reconnect
6350
if strings.Contains(err.Error(), "sql: database is closed") {
64-
db, dbtype := connect(logger, d.Name, d.Config)
65-
d.Session = db
66-
d.Type = dbtype
51+
d.Session = connect(logger, d.Name, d.Config)
6752
}
6853
return err
6954
}
70-
// if connected but database type is unknown, try to reload it
71-
if d.Type == -1 {
72-
d.Type = getDBtype(ctx, d.Session, logger, d.Name)
73-
}
7455
d.Up = 1
7556
return nil
7657
}
@@ -86,12 +67,11 @@ func (d *Database) constLabels(labels map[string]string) map[string]string {
8667
}
8768

8869
func NewDatabase(logger *slog.Logger, dbname string, dbconfig DatabaseConfig) *Database {
89-
db, dbtype := connect(logger, dbname, dbconfig)
70+
db := connect(logger, dbname, dbconfig)
9071
return &Database{
9172
Name: dbname,
9273
Up: 0,
9374
Session: db,
94-
Type: dbtype,
9575
Config: dbconfig,
9676
Valid: true,
9777
}
@@ -158,7 +138,7 @@ func isInvalidCredentialsError(err error) bool {
158138
return oraErr.Code() == ora01017code || oraErr.Code() == ora28000code
159139
}
160140

161-
func connect(logger *slog.Logger, dbname string, dbconfig DatabaseConfig) (*sql.DB, float64) {
141+
func connect(logger *slog.Logger, dbname string, dbconfig DatabaseConfig) *sql.DB {
162142
logger.Debug("Launching connection to "+maskDsn(dbconfig.URL), "database", dbname)
163143

164144
var P godror.ConnectionParams
@@ -241,15 +221,5 @@ func connect(logger *slog.Logger, dbname string, dbconfig DatabaseConfig) (*sql.
241221
}
242222
logger.Info("Connected as SYSDBA? "+sysdba, "database", dbname)
243223

244-
dbtype := getDBtype(ctx, db, logger, dbname)
245-
return db, dbtype
246-
}
247-
248-
func getDBtype(ctx context.Context, db *sql.DB, logger *slog.Logger, dbname string) float64 {
249-
var dbtype int
250-
if err := db.QueryRowContext(ctx, "select sys_context('USERENV', 'CON_ID') from dual").Scan(&dbtype); err != nil {
251-
logger.Info("dbtype err", "error", err, "database", dbname)
252-
return -1
253-
}
254-
return float64(dbtype)
224+
return db
255225
}

collector/default_metrics.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
[[metric]]
2+
context = ""
3+
metricsdesc = { dbtype="Type of database the exporter is connected to (0=non-CDB, 1=CDB, >1=PDB)." }
4+
request = '''
5+
select sys_context('USERENV', 'CON_ID') as dbtype
6+
from dual
7+
'''
8+
19
[[metric]]
210
context = "sessions"
311
labels = [ "inst_id", "status", "type" ]

collector/types.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ type Database struct {
2929
Name string
3030
Up float64
3131
Session *sql.DB
32-
Type float64
3332
Config DatabaseConfig
3433
// MetricsCache holds computed metrics for a database, so these metrics are available on each scrape.
3534
// Given a metric's scrape configuration, it may not be computed on the same interval as other metrics.

default-metrics.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
[[metric]]
2+
context = ""
3+
metricsdesc = { dbtype="Type of database the exporter is connected to (0=non-CDB, 1=CDB, >1=PDB)." }
4+
request = '''
5+
select sys_context('USERENV', 'CON_ID') as dbtype
6+
from dual
7+
'''
8+
19
[[metric]]
210
context = "sessions"
311
labels = [ "inst_id", "status", "type" ]

default-metrics.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
metrics:
2+
- context: ""
3+
metricsdesc:
4+
dbtype: "Type of database the exporter is connected to (0=non-CDB, 1=CDB, >1=PDB)."
5+
request: |
6+
select sys_context('USERENV', 'CON_ID') as dbtype
7+
from dual
8+
29
- context: "sessions"
310
labels: [ "inst_id", "status", "type" ]
411
metricsdesc:

site/docs/releases/changelog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ List of upcoming and historic changes to the exporter.
1111

1212
Our current priorities to support metrics for advanced database features and use cases, like Exadata, GoldenGate, and views included in the Oracle Diagnostics Pack.
1313

14+
- Move `oracledb_dbtype` metric to the default metrics. You may now disable or override this metric like any other database metric.
15+
16+
Thank you to the following people for their suggestions and contributions:
17+
- [@MansuyDavid](https://github.com/MansuyDavid)
18+
1419
### Version 2.1.0, September 29, 2025
1520

1621
- Updated project dependencies.

0 commit comments

Comments
 (0)