JSPM

@azure/monitor-opentelemetry-exporter

1.0.0-alpha.20250307.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 172121
  • Score
    100M100P100Q190045F
  • License MIT

Application Insights exporter for the OpenTelemetry JavaScript (Node.js) SDK

Package Exports

    Readme

    Azure Monitor OpenTelemetry Exporter client library for JavaScript

    npm version

    Getting started

    This exporter package assumes your application is already instrumented with the OpenTelemetry SDK. Once you are ready to export OpenTelemetry data, you can add this exporter to your application.

    Install the package

    npm install @azure/monitor-opentelemetry-exporter

    Currently supported environments

    See our support policy for more details.

    Warning: This SDK only works for Node.js environments. Use the Application Insights JavaScript SDK for browser environments.

    Prerequisites

    Distributed Tracing

    Add the exporter to your existing OpenTelemetry Tracer Provider (NodeTracerProvider / BasicTracerProvider)

    import { AzureMonitorTraceExporter } from "@azure/monitor-opentelemetry-exporter";
    import { NodeTracerProvider, BatchSpanProcessor } from "@opentelemetry/sdk-trace-node";
    import { Resource } from "@opentelemetry/resources";
    import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
    
    // Create an exporter instance
    const exporter = new AzureMonitorTraceExporter({
      connectionString: "<connection string>",
    });
    
    // Create and configure the Node Tracer provider
    const tracerProvider = new NodeTracerProvider({
      resource: new Resource({
        [ATTR_SERVICE_NAME]: "basic-service",
      }),
      spanProcessors: [
        new BatchSpanProcessor(exporter, {
          exportTimeoutMillis: 15000,
          maxQueueSize: 1000,
        }),
      ],
    });
    
    // Register Tracer Provider as global
    tracerProvider.register();

    Metrics

    Add the exporter to your existing OpenTelemetry Meter Provider (MeterProvider)

    import { AzureMonitorMetricExporter } from "@azure/monitor-opentelemetry-exporter";
    import { PeriodicExportingMetricReader, MeterProvider } from "@opentelemetry/sdk-metrics";
    import { metrics } from "@opentelemetry/api";
    
    // Add the exporter into the MetricReader and register it with the MeterProvider
    const exporter = new AzureMonitorMetricExporter({
      connectionString: "<connection string>",
    });
    
    const metricReaderOptions = {
      exporter: exporter,
    };
    const metricReader = new PeriodicExportingMetricReader(metricReaderOptions);
    const meterProvider = new MeterProvider({
      readers: [metricReader],
    });
    
    // Register Meter Provider as global
    metrics.setGlobalMeterProvider(meterProvider);

    Logs

    Add the Log Exporter to your existing OpenTelemetry Logger Provider (LoggerProvider)

    import { AzureMonitorLogExporter } from "@azure/monitor-opentelemetry-exporter";
    import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
    import { logs } from "@opentelemetry/api-logs";
    
    // Add the Log exporter into the logRecordProcessor and register it with the LoggerProvider
    const exporter = new AzureMonitorLogExporter({
      connectionString: "<connection string>",
    });
    
    const logRecordProcessor = new BatchLogRecordProcessor(exporter);
    const loggerProvider = new LoggerProvider();
    loggerProvider.addLogRecordProcessor(logRecordProcessor);
    
    // Register logger Provider as global
    logs.setGlobalLoggerProvider(loggerProvider);

    Sampling

    You can enable sampling to limit the amount of telemetry records you receive. In order to enable correct sampling in Application Insights, use the ApplicationInsightsSampler as shown below.

    import { ApplicationInsightsSampler } from "@azure/monitor-opentelemetry-exporter";
    import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
    import { Resource } from "@opentelemetry/resources";
    import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
    
    // Sampler expects a sample rate of between 0 and 1 inclusive
    // A rate of 0.75 means approximately 75 % of your traces will be sent
    const aiSampler = new ApplicationInsightsSampler(0.75);
    const provider = new NodeTracerProvider({
      sampler: aiSampler,
      resource: new Resource({
        [ATTR_SERVICE_NAME]: "basic-service",
      }),
    });
    
    provider.register();

    Examples

    For complete samples of a few champion scenarios, see the samples/ folder.

    Key concepts

    For more information on the OpenTelemetry project, please review the OpenTelemetry Specifications.

    Troubleshooting

    Enable debug logging

    You can enable debug logging by changing the logging level of your provider.

    import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
    import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
    
    const provider = new NodeTracerProvider();
    diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.ALL);
    provider.register();

    Logging

    Enabling Azure logging may also help uncover useful information about failures. In order to see a log of HTTP requests and responses, set the AZURE_LOG_LEVEL environment variable to info. Alternatively, logging can be enabled at runtime by calling setLogLevel in the @azure/logger:

    import { setLogLevel } from "@azure/logger";
    
    setLogLevel("info");

    For more detailed instructions on how to enable logs, you can look at the @azure/logger package docs.

    Next steps

    This exporter is made to be used with the OpenTelemetry JS.

    Plugin Registry

    To see if a plugin has already been made for a library you are using, please check out the OpenTelemetry Registry.

    If you cannot your library in the registry, feel free to suggest a new plugin request at opentelemetry-js-contrib.

    Contributing

    If you'd like to contribute to this library, please read the contributing guide to learn more about how to build and test the code.