anonymize-http-requests.ts 847 B

12345678910111213141516171819202122232425
  1. import type { InstrumentationConfigMap } from '@opentelemetry/auto-instrumentations-node';
  2. import { anonymizationModules } from './handlers';
  3. export const httpInstrumentationConfig: InstrumentationConfigMap['@opentelemetry/instrumentation-http'] = {
  4. startIncomingSpanHook: (request) => {
  5. // Get URL from IncomingMessage (server-side requests)
  6. const incomingRequest = request;
  7. const url = incomingRequest.url || '';
  8. const attributes = {};
  9. // Use efficient module-based approach
  10. for (const anonymizationModule of anonymizationModules) {
  11. if (anonymizationModule.canHandle(url)) {
  12. const moduleAttributes = anonymizationModule.handle(incomingRequest, url);
  13. if (moduleAttributes != null) {
  14. Object.assign(attributes, moduleAttributes);
  15. }
  16. }
  17. }
  18. return attributes;
  19. },
  20. };