Skip to content

Instantly share code, notes, and snippets.

@chronick
Created December 29, 2021 16:18
Show Gist options
  • Save chronick/a35f0ad2a3afceaff27ed18b3f99e354 to your computer and use it in GitHub Desktop.
Save chronick/a35f0ad2a3afceaff27ed18b3f99e354 to your computer and use it in GitHub Desktop.
import { IncomingMessage, ServerResponse } from 'http'
import tracer, { Span } from 'dd-trace'
import * as url from 'url'
const HTTP_IP = 'http.ip'
const HTTP_METHOD = 'http.method'
const HTTP_PATH = 'http.uri.path'
const HTTP_QUERY = 'http.uri.query'
const HTTP_RESPONSE_STATUS = 'http.response.status'
const USER_AGENT = 'http.useragent'
const requestHook = (
span: Span | undefined,
req: IncomingMessage | undefined,
res: ServerResponse | undefined,
): void => {
if (span && req) {
if (req.url) {
const parsed = url.parse(req.url.toString(), true)
span.setTag(HTTP_PATH, parsed.path)
span.setTag(HTTP_QUERY, parsed.query)
}
span.setTag(HTTP_IP, req.connection.remoteAddress)
span.setTag(USER_AGENT, req.headers['user-agent'])
span.setTag(HTTP_METHOD, req.method)
}
if (span && res) {
span.setTag(HTTP_RESPONSE_STATUS, res.statusCode)
}
}
tracer.use('express', {
hooks: { request: requestHook },
})
export { requestHook }
export default tracer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment