dd-trace
Version:
Datadog APM tracing client for JavaScript
42 lines (35 loc) • 1.19 kB
JavaScript
const { CLIENT_PORT_KEY } = require('../../dd-trace/src/constants')
const DatabasePlugin = require('../../dd-trace/src/plugins/database')
const log = require('../../dd-trace/src/log')
class OracledbPlugin extends DatabasePlugin {
static get id () { return 'oracledb' }
static get system () { return 'oracle' }
static get peerServicePrecursors () { return ['db.instance', 'db.hostname'] }
start ({ query, connAttrs }) {
const service = this.serviceName({ pluginConfig: this.config, params: connAttrs })
const url = getUrl(connAttrs.connectString)
this.startSpan(this.operationName(), {
service,
resource: query,
type: 'sql',
kind: 'client',
meta: {
'db.user': this.config.user,
'db.instance': url.pathname && url.pathname.substring(1),
'db.hostname': url.hostname,
[CLIENT_PORT_KEY]: url.port
}
})
}
}
// TODO: Avoid creating an error since it's a heavy operation.
function getUrl (connectString) {
try {
return new URL(`http://${connectString}`)
} catch (e) {
log.error('Invalid oracle connection string', e)
return {}
}
}
module.exports = OracledbPlugin