dd-trace
Version:
Datadog APM tracing client for JavaScript
46 lines (35 loc) • 983 B
JavaScript
const ClientPlugin = require('../../dd-trace/src/plugins/client')
class DNSLookupPlugin extends ClientPlugin {
static id = 'dns'
static operation = 'lookup'
bindStart (ctx) {
const [hostname] = ctx.args
this.startSpan('dns.lookup', {
service: this.config.service,
resource: hostname,
kind: 'client',
meta: {
'dns.hostname': hostname,
'dns.address': '',
'dns.addresses': ''
}
}, ctx)
return ctx.currentStore
}
bindFinish (ctx) {
const span = ctx.currentStore.span
const result = ctx.result
if (Array.isArray(result)) {
const addresses = Array.isArray(result)
? result.map(address => address.address).sort()
: [result]
span.setTag('dns.address', addresses[0])
span.setTag('dns.addresses', addresses.join(','))
} else {
span.setTag('dns.address', result)
}
return ctx.parentStore
}
}
module.exports = DNSLookupPlugin