Created
December 29, 2021 16:18
-
-
Save chronick/a35f0ad2a3afceaff27ed18b3f99e354 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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