JSPM

@opentelemetry/instrumentation-xml-http-request

0.200.0-dev.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 639767
  • Score
    100M100P100Q202837F
  • License Apache-2.0

OpenTelemetry instrumentation for XMLHttpRequest http client in web browsers

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@opentelemetry/instrumentation-xml-http-request) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    OpenTelemetry XMLHttpRequest Instrumentation for web

    NPM Published Version Apache License

    Note: This is an experimental package under active development. New releases may include breaking changes.

    This module provides auto instrumentation for web using XMLHttpRequest .

    Installation

    npm install --save @opentelemetry/instrumentation-xml-http-request

    Usage

    import {
      ConsoleSpanExporter,
      SimpleSpanProcessor,
      WebTracerProvider,
    } from '@opentelemetry/sdk-trace-web';
    import { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request';
    import { ZoneContextManager } from '@opentelemetry/context-zone';
    import { registerInstrumentations } from '@opentelemetry/instrumentation';
    
    const providerWithZone = new WebTracerProvider({
      spanProcessors: [new SimpleSpanProcessor(new ConsoleSpanExporter())]
    });
    
    providerWithZone.register({
      contextManager: new ZoneContextManager(),
    });
    
    registerInstrumentations({
      instrumentations: [
        new XMLHttpRequestInstrumentation({
          propagateTraceHeaderCorsUrls: ['http://localhost:8090']
        }),
      ],
    });
    
    
    const webTracerWithZone = providerWithZone.getTracer('default');
    
    /////////////////////////////////////////
    
    // or plugin can be also initialised separately and then set the tracer provider or meter provider
    const xmlHttpRequestInstrumentation = new XMLHttpRequestInstrumentation({
      propagateTraceHeaderCorsUrls: ['http://localhost:8090']
    });
    const providerWithZone = new WebTracerProvider();
    providerWithZone.register({
      contextManager: new ZoneContextManager(),
    });
    xmlHttpRequestInstrumentation.setTracerProvider(providerWithZone);
    /////////////////////////////////////////
    
    
    // and some test
    const req = new XMLHttpRequest();
    req.open('GET', 'http://localhost:8090/xml-http-request.js', true);
    req.send();
    

    XHR Instrumentation options

    XHR instrumentation plugin has few options available to choose from. You can set the following:

    Options Type Description
    applyCustomAttributesOnSpan XHRCustomAttributeFunction Function for adding custom attributes
    ignoreNetworkEvents boolean Disable network events being added as span events (network events are added by default)
    measureRequestSize boolean Measure outgoing request length (outgoing request length is not measured by default)

    Semantic Conventions

    This package uses @opentelemetry/semantic-conventions version 1.22+, which implements Semantic Convention Version 1.7.0

    Attributes collected:

    Attribute Short Description
    http.status_code HTTP response status code
    http.host The value of the HTTP host header
    http.user_agent Value of the HTTP User-Agent header sent by the client
    http.scheme The URI scheme identifying the used protocol
    http.url Full HTTP request URL
    http.method HTTP request method
    http.request_content_length_uncompressed Uncompressed size of the request body, if any body exists

    Example Screenshots

    Screenshot of the running example Screenshot of the running example Screenshot of the running example

    See examples/tracer-web for a short example.

    License

    Apache 2.0 - See LICENSE for more information.